laravel-mongodb配置读写分离(副本集)

邓高韵
2023-12-01
'mongodb' => [
            'driver' => 'mongodb',
            'host' => [
            	'192.168.2.22:27020', 
            	'192.168.2.22:27021', 
            	'192.168.2.22:27022', 
            	'192.168.2.22:27024'
            ],
            // 'port' => env('MG_DB_PORT', 27017),
            'database' => env('MG_DB_DATABASE'),
            'username' => env('MG_DB_USERNAME'),
            'password' => env('MG_DB_PASSWORD'),
            'options' => [
                'database' => 'admin',
                'readPreference' => 'secondaryPreferred'
            ]
        ],

前置条件,配置好副本集

测试

  1. ps -ef | grep 'mongo'
  2. kill 进程号 ## 切忌不要 kill -9 强制杀死,数据库文件会损坏
  3. kill 主之后,mongo 会自动投票选举选择出新的主节点
  4. 如上配置4个副本节点,laravel-mongodb会自动进行主节点写的操作
  5. 关于 readPreference
Read Preference描述
primary默认模式。 所有操作都从当前副本集 primary 读取。
primaryPreferred在大多数情况下,从 primary 读取,但如果不可用,则从 secondary 读取。
secondary所有操作都从 secondary 中读取。
secondaryPreferred在大多数情况下,从 secondary 读取,但如果没有 secondary 可用,则从 primary 读取。
nearest无论成员的类型如何,操作都从具有最小网络延迟的副本集成员读取

有问题,关于评论交流,看到会第一时间回复。

 类似资料: