MySQL双主读写同步的配置步骤如下:
-
首先需要在两个MySQL服务器上安装MHA(MySQL Master High Availability)工具,该工具可以用于管理主从复制和双主同步等高可用性方案。
-
配置MHA的配置文件,包括主从同步的账号密码、监控脚本的路径等。配置完成后,在主服务器上启动MHA Manager程序。
-
在MHA Manager服务器上执行以下命令,将MySQL服务器添加到MHA配置中:
$ masterha_manager --conf="/etc/app1.cnf" --remove_dead_master_conf --ignore_last_failover
-
设置主服务器和备份服务器的ID,可以通过以下命令查看服务器ID:
$ SHOW VARIABLES LIKE 'server_id';
然后设置两个服务器不同的server_id。
-
在两个MySQL服务器上设置双向复制,使用以下命令:
$ CHANGE MASTER TO MASTER_HOST='otherMaster.example.com', MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1 FOR CHANNEL 'group_replication';
-
在每个MySQL服务器上启用Group Replication插件,这可以通过修改my.cnf文件中的配置项来完成。下面是一个示例配置:
[mysqld] plugin-load-add=group_replication.so group-replication=ON
-
最后,在MHA的配置文件中指定每个服务器的主(master)和备份(slave)角色,以及监视器的和切换时运行的脚本,如下所示:
[server default] user=mha password=password ssh_user=root recovery_user=mha_recovery manager_log=/var/log/mha/mha.log remote_workdir=/tmp ignore_last_failover=false [server1] hostname=server1.example.com port=3306 weight=1 ping_interval=5 ping_type=SELECT repl_user=repl_slave repl_password=password binlog_dir=/var/log/mysql master_binlog_file=mysql-bin.000001 master_binlog_pos=105 candidate_master=1 check_repl_delay=true [server2] hostname=server2.example.com port=3306 weight=1 ping_interval=5 ping_type=SELECT repl_user=repl_slave repl_password=password binlog_dir=/var/log/mysql master_binlog_file=mysql-bin.000001 master_binlog_pos=105 candidate_master=1 check_repl_delay=true [monitor] user=mha password=password # ... [client] user=mha password=password # ... [recovery] # ...
以上步骤完成后,MySQL双主读写同步的配置就完成了。