文章目录
环境配置主主互备(主主双机热备)主MySQL服务器A主MySQL服务器B配置主MySQL服务器A和主MySQL服务器B环境配置
本地操作系统:Win10
虚拟机的操作系统:CentOS Stream 8
已安装docker,可以参考详细安装教程
主主互备(主主双机热备)
在上一节我们实现主从复制(主从双机热备),它是指从MySQL自动复制主MySQL,但只是一个单向复制。如果实现两个MySQL相互复制备份,则这两个MySQL视为主主MySQL服务器。
主MySQL服务器A
首先在已经安装docker的Centos系统中执行docker的run指令,创建主MySQL服务器A,并修改MySQL的用户密码加密方式,指令如下:
docker run --name mysql10 -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 -d mysql
docker创建后,通过docker exec -it mysql10 bash
指令进入docker,分别修改MySQL的用户密码加密方式和获取MySQL的默认配置文件,具体教程可以回顾:修改MySQL的用户密码加密方式和获取MySQL的默认配置文件
将MySQL的默认配置文件的配置信息写入本地系统的自定义配置文件/home/mysql/conf/f,并添加属性log-bin、server-id、auto-increment-increment、auto-increment-offset和log_slave_updates等配置,代码如下:
[mysqld]pid-file=/var/run/mysqld/mysqld.pidsocket=/var/run/mysqld/mysqld.sockdatadir=/var/lib/mysqlsecure-file-priv= NULL# 开启二进制日志,属性值mysql-bin 是日志的基本名或前缀名log-bin=mysql-bin# server-id可随便设置,但必须保证是唯一,数值为1到2的32次方–1之间的一个正整数server-id=1# 自增偏移量auto_increment_increment=1# 自增起始值auto_increment_offset=1# 从主库通过binlog复制过来的数据记录在binlog日志中开关log_slave_updates=1# 设置禁止或允许备份的数据库# replicate-do-db = test# replicate-ignore-db = mysql,information_schema,performance_schema# binlog记录的数据库名称# binlog-do-db=test# binlog不记录的数据库名称# binlog-ignore-db = mysql
配置文件完成后,使用指令docker restart mysql10
重启docker
主MySQL服务器B
再次使用docker的run指令创建主MySQL服务器B,指令如下:
docker run --name mysql11 -p 3307:3306 -v /home/mysql1/conf:/etc/mysql/conf.d -v /home/mysql1/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 -d mysql
docker里面的MySQL设置与主MySQL服务器A的设置相同,只需修改自定义配置文件/home/mysql1/conf/f的server-id即可。
最后使用指令docker restart mysql11
重启docker
配置主MySQL服务器A和主MySQL服务器B
现在我们已搭建两个docker容器,每个容器分别运行端口3306和3307的MySQL,并且对每个MySQL设置了自定义配置文件。
下一步在两个MySQL设置监听功能,我们使用Navicat Premium 15连接主MySQL服务器A,然后执行下面SQL语句,代码如下:
STOP SLAVE;-- 监听主MySQLCHANGE MASTER TO -- 主MySQL的IP、端口、用户名和密码MASTER_HOST = '192.168.3.250',MASTER_PORT = 3307,MASTER_USER = 'root',MASTER_PASSWORD = '1234';-- 开启监听功能START SLAVE;-- 查询监听状态SHOW SLAVE STATUS;
主MySQL服务器B执行以下代码:
STOP SLAVE;-- 监听主MySQLCHANGE MASTER TO -- 主MySQL的IP、端口、用户名和密码MASTER_HOST = '192.168.3.250',MASTER_PORT = 3306,MASTER_USER = 'root',MASTER_PASSWORD = '1234';-- 开启监听功能START SLAVE;-- 查询监听状态SHOW SLAVE STATUS;
主MySQL服务器A和主MySQL服务器B执行的SQL语句是相同的,只是端口不同,主MySQL服务器A是监听主MySQL服务器B的端口,主MySQL服务器B是监听主MySQL服务器A的端口。
当上述两段SQL执行成功后,在执行结果分别找到Slave_IO_Running和Slave_SQL_Running,如果两个字段的值皆为Yes则说明配置成功,只要在两个MySQL中分别进行操作,另外一个MySQL都能同步数据。