100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > docker实现MySQL主主互备(主主双机热备)

docker实现MySQL主主互备(主主双机热备)

时间:2020-02-15 19:57:33

相关推荐

docker实现MySQL主主互备(主主双机热备)

文章目录

环境配置主主互备(主主双机热备)主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都能同步数据。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。