1、MySQL半同步概述
在一般MySQL主从同步下,主库和从库的复制是异步复制的,异步复制是主库数据发生改变,从库的I/O线程请求主库的二进制日志,主库的dump线程把二进制日志发送给从库便结束了,主库并不会去验证从库是否接收到了二进制日志文件,这一过程中,如果从库发生故障了没有接收到主库的日志文件,那么主库和从库的数据便不一致了;所以MySQL的半同步功能就是保证在生产业务中,有多个从库时,用户往数据库写入数据,主库数据发生改变后,主库把二进制日志文件发送给从库,从库成功接收到日志文件并回复确认之后,主库才会告诉用户数据修改完成。这样便可以确定即使发生故障,也会由一个从库的数据和主库的数据具有一致性。
注意:MySQL的半同步复制功能需要在主库和从库都同时开启,否则的话主服务器默认还是会使用异步复制的模式。
2、半同步的配置
1)先对两台数据库做主从设置
主库:
[root@master ~]#
[root@master ~]# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log_bin=mysql-bin
server_id=1
[root@master ~]# systemctl restart mariadb
[root@master ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> grant replication slave,replication client on *.* to 'jyy'@'192.168.126.135' identified by 'jyy';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> show binary logs;
+------------------+-----------+