You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Drupal 8中配置MySQL主从负载均衡以提升可靠性

嘿,既然你已经搞定了MySQL一主一从的复制架构,那Drupal 8的读写分离配置其实很 straightforward,我给你捋一遍实操步骤,都是我自己踩过坑后总结的靠谱方案:

配置Drupal 8实现MySQL主从读写分离&基础高可用

Drupal 8原生就支持多数据库连接配置,不用额外装模块就能满足你的读写分流需求,复杂场景再考虑加模块,先搞定基础配置:

1. 修改settings.php的数据库连接配置

找到站点根目录下的sites/default/settings.php,先备份原文件,然后替换数据库连接部分的代码:

// 主库配置(处理INSERT/UPDATE/DELETE写操作)
$databases['default']['default'] = [
  'database' => '你的数据库名',
  'username' => '主库账号',
  'password' => '主库密码',
  'host' => '主库IP/域名',
  'port' => '3306',
  'driver' => 'mysql',
  'prefix' => '',
  'collation' => 'utf8mb4_general_ci',
];

// 从库配置(处理SELECT读操作)
$databases['default']['replica'][] = [
  'database' => '你的数据库名', // 和主库一致,因为复制已经同步了
  'username' => '从库只读账号', // 强烈建议给从库单独创建只读权限的账号,安全第一
  'password' => '从库密码',
  'host' => '从库IP/域名',
  'port' => '3306',
  'driver' => 'mysql',
  'prefix' => '',
  'collation' => 'utf8mb4_general_ci',
];

如果以后加更多从库,直接在replica数组里继续追加配置项就行,Drupal会自动轮询实现负载均衡。

2. 验证读写分离是否生效

方式一:查数据库日志

分别查看主库和从库的通用日志/慢查询日志:

  • 去Drupal后台编辑一篇文章(触发UPDATE操作),检查主库日志里有对应的SQL,从库没有
  • 刷新前端页面(触发大量SELECT查询),检查从库日志里有对应的SQL,主库只有必要的系统查询

方式二:用Devel模块快速验证(可选)

如果你的测试环境装了Devel模块,开启查询日志后,页面底部会显示每个SQL使用的数据库连接,能直观看到哪些请求走了主库,哪些走了从库。

3. 基础故障转移逻辑

默认配置下,Drupal已经自带基础高可用:

  • 如果从库挂了,所有请求会自动切换回主库执行,不会影响站点访问
  • 如果主库挂了,写操作(比如提交表单、编辑内容)会失败,但读操作依然能从从库获取数据(前提是主从复制在故障前已经同步了最新内容)

如果需要更完善的主库故障转移(比如自动切换到备用主库),可以安装Database Failover模块,但你的一主一从场景,原生配置已经能应付大部分突发情况了。

4. 避坑提醒

  • 尽量降低主从复制延迟,比如开启MySQL半同步复制,避免用户刚提交的内容在前端看不到
  • 定期监控主从复制状态,防止复制中断导致数据不一致
  • 绝对不要在从库执行任何写操作,会直接破坏主从同步关系

内容的提问来源于stack exchange,提问作者JayMore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:01:04