在drupal8中使用mysql主/从平衡

vql8enpb  于 2021-06-25  发布在  Mysql
关注(0)|答案(3)|浏览(330)

我希望我的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平衡吗?

jutyujz0

jutyujz01#

注意:据我所知,添加“replica”服务器没有任何作用,除非您正在使用db_*函数调用(这是不推荐的),或者您在任何自定义查询中手动示例化database.replica连接。 /**@var \Drupal\Core\Database\Connection $database_replica */ $database_replica = \Drupal::service('database.replica'); $query = $database_replica->select('node', 'n');....

4xy9mtcn

4xy9mtcn2#

副本数据库配置的语法可以在中找到 settings.php https://api.drupal.org/api/drupal/sites%21default%21default.settings.php/8.7.x
默认db副本的语法为:

// $info_array is the db connection details
$databases['default']['replica'][] = $info_array;

注:d8使用 replica 不是 slave 关于术语。

dpiehjr4

dpiehjr43#

$database_replica = \Drupal::service('database.replica');
or
$database_replica = Database::getConnection('replica', 'default');

相关问题