MySQL半同步复制概念
用户发请求到代理服务器,代理服务器把请求转到主服务器上,主服器更新数据,把数据复制给从服务器(个数很多),只要有一台从服务器数据更新成功,就立刻告诉主服务器更新数据成功。主服务器立即发请求告诉代理服务器,代理服务器转发请求给客户端,表示成功了。坚锢了数据,确保数据安全。
mysql 半同步复制配置
master
– 配置文件
vim /etc/my.cnf
[mysqld]
server_id=#
log_bin
– 二进制日志
mysql> show master status;
+--------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb-bin.000003 | 245 | | |
+--------------------+----------+--------------+------------------+
– 授权
mysql> grant replication slave on *.* to repluser@'192.168.43.%' identified by 'centos';
mysql> flush privileges;
– 安装插件,启用插件
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
mysql> set global rpl_semi_sync_master_enabled=1;
mysql> show global status like '%semi%';
slave
– 配置文件
vim /etc/my.cnf
[mysqld]
server_id=#(唯一)
– 以哪个用户连接主服务器,从哪个日志,哪个位置同步二进制日志
mysql>
CHANGE MASTER TO
MASTER_HOST='192.168.43.7',
MASTER_USER='repluser',
MASTER_PASSWORD='centos',
MASTER_PORT=3306,
MASTER_LOG_FILE='mariadb-bin.000003',
MASTER_LOG_POS=245;
– 开启io,sql线程
mysql> start slave;
mysql> show slave status\G //查看主从是否建立
– 安装插件,启用插件
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
mysql> set global rpl_semi_sync_slave_enabled=1;
– 让插件生效
mysql> stop slave;
mysql> start slave;