十七、mysql主从同步复制模式
异步复制 :主库在执行完客户端提交的事务后会立即将结果返给客户端,并不关心从库是否已经接收并处理。(默认模式)
全同步复制 :当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。
半同步复制 :介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到 relay log 中才返回给客户端
mysql> show variables like "have_dynamic_loading"; //查看是否可以动态加载模块(默认允许)
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so'; //主库安装模块,用户需有 super 权限
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so'; //从库安装模块,用户需有 super 权限
查看系统库下的表,模块是否安装成功
select plugin_name,plugin_status from information_schema.plugins where plugin_name like '%semi%';
启用半同步复制模式(默认关闭)
主库:mysql> set global rpl_semi_sync_master_enabled = 1;
从库:mysql> set global rpl_semi_sync_slave_enabled = 1;
mysql> show variables like "rpl_semi_sync_%_enabled"; //查看半同步复制模式是否启用
修改配置文件/etc/my.cnf 让安装模块和启用的模式永久生效。
主库
vim /etc/my.cnf
[mysqld]
plugin-load=rpl_semi_sync_master=semisync_master.so
rpl_semi_sync_master_enabled=1
从库
vim /etc/my.cnf
[mysqld]
plugin-load=rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=1
既做主又做从
vim /etc/my.cnf
[mysqld]
plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-master-enabled = 1
rpl-semi-sync-slave-enabled = 1