您的位置:

Docker MySQL 主从复制详解

一、Docker MySQL 主从复制概述

MySQL 主从复制是实现 MySQL 数据库高可用性的重要手段之一。当主机宕机时,从机可以顶替主机继续提供服务,从而保证整个服务的连续性和稳定性。Docker 是一种轻量级容器技术,可以更好地实现 MySQL 主从部署的灵活性和可移植性。接下来本文将为您详细介绍 Docker MySQL 主从复制的实现步骤和注意事项。

二、Docker MySQL 主从复制环境搭建

1、首先拉取 MySQL 镜像

docker pull mysql

2、创建主节点容器,并指定容器名为 mysql-master

docker run -p 3306:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql

3、创建从节点容器,并指定容器名为 mysql-slave

docker run -p 3307:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql

4、进入主节点容器,运行以下命令开启二进制日志

docker exec -it mysql-master bash
# 进入 MySQL 管理员模式
mysql -u root -p123456
# 开启二进制日志
use mysql;
update user set host = '%' where user = 'root';
set global binlog_format = 'ROW';
set global log_slave_updates = on;
create user 'slave'@'%' identified by '123456';
grant replication slave on *.* to 'slave'@'%';
# 退出 MySQL 管理员模式及容器
exit
exit

5、进入从节点容器,运行以下命令配置主从关系

docker exec -it mysql-slave bash
# 进入 MySQL 管理员模式
mysql -u root -p123456
# 配置主从关系
CHANGE MASTER TO
    MASTER_HOST='主节点 IP 或域名',
    MASTER_USER='slave',
    MASTER_PASSWORD='123456',
    MASTER_PORT=3306,
    MASTER_LOG_FILE='mysql-bin.000001', # 根据主节点的 binlog_filename 参数修改
    MASTER_LOG_POS=154; # 根据主节点的 binlog_position 参数修改
# 启动同步
start slave;
# 查看同步状态
show slave status\G;
# 退出 MySQL 管理员模式及容器
exit
exit

三、Docker MySQL 主从复制注意事项

1、主从节点之间的网络要求必须是互通的,可以通过 docker network 或自定义网络解决。

2、在配置主从关系时,要关闭防火墙或设置防火墙的规则,以免影响主从节点之间的正常通信。

3、在开启主节点的二进制日志时,一定要注意 binlog_format 的设置,一般推荐设置为 ROW 模式。

4、在启动同步时,一定要注意 MASTER_LOG_FILE 和 MASTER_LOG_POS 参数的设置,这两个参数是同步的关键。

5、MySQL 主从复制是异步的,因此有一定的延迟,可根据应用场景进行调整和优化。

四、总结

本文介绍了 Docker MySQL 主从复制的实现步骤和注意事项。希望本文能够对您在开发和运维过程中遇到的 MySQL 主从相关问题有所帮助。