我希望我的drupal8安装在数据库失败的情况下更可靠,所以我希望在mysql中启用主/从复制,并使其与drupal8一起工作。
我设置了两个mysql服务器(一个主服务器,一个从服务器),复制工作正常。
现在,我想将drupal设置为将select查询平衡到从属查询,并将插入/更新/删除查询平衡到主查询。它将平衡两个服务器之间的负载,我将有一个(litle)ha概念。
为了测试这个架构,我安装了一个全新的Drupal8示例,完全没有定制模块。如果可能的话,只有纯香草的drupal 8。
我将settings.php文件更改如下:
$databases['default']['default'] = array (
'database'=>'drupaldb',
'username'=>'masteruser',
'host'=>'database-master.com'
...
);
$databases['default']['slave'] = array (
'database'=>'drupaldb',
'username'=>'slaveuser',
'host'=>'database-slave.com'
...
);
“slaveuser”是仅具有读取权限的mysql用户masteruser“对数据库有rw访问权限。
有了这个设置,应用程序运行得很好,但是当我查看从属度量时,没有任何联系。即使在我重新加载前端页面的时候。
如果我关闭了主服务器,或者在config php文件中更改了主服务器设置(错误的密码、错误的数据库),我希望前端页面的应用程序使用从属服务器设置。但头版却出现了错误:“网站遇到了意想不到的错误。请稍后再试”。错误日志指示sql连接失败。
我在这里看到的是,无法平衡对主(用于写入)和从(用于读取)的查询。我希望drupal8在没有任何额外插件的情况下管理这个。
我必须使用mysql\u nd\u ms php扩展来进行m/s平衡吗?
3条答案
按热度按时间jutyujz01#
注意:据我所知,添加“replica”服务器没有任何作用,除非您正在使用db_*函数调用(这是不推荐的),或者您在任何自定义查询中手动示例化database.replica连接。
/**@var \Drupal\Core\Database\Connection $database_replica */ $database_replica = \Drupal::service('database.replica'); $query = $database_replica->select('node', 'n');....
4xy9mtcn2#
副本数据库配置的语法可以在中找到
settings.php
https://api.drupal.org/api/drupal/sites%21default%21default.settings.php/8.7.x默认db副本的语法为:
注:d8使用
replica
不是slave
关于术语。dpiehjr43#