在Docker环境下实现MySQL同步数据,通常指的是搭建MySQL主从复制(Master-Slave Replication)架构。以下是一个简化的步骤概述:
-
获取镜像:
- 使用Docker命令从Docker Hub或其他仓库拉取官方的MySQL镜像,例如:
docker pull mysql:latest
- 使用Docker命令从Docker Hub或其他仓库拉取官方的MySQL镜像,例如:
-
创建容器并配置主数据库:
- 运行主数据库容器,并通过环境变量设置必要的配置,如MySQL root用户的密码、服务器ID等。
docker run --name mysql-master \ -e MYSQL_ROOT_PASSWORD=rootpassword \ -e MYSQL_SERVER_ID=1 \ -v /path/to/master-config:/etc/mysql/conf.d \ -v /path/to/master-data:/var/lib/mysql \ -d mysql:latest
- 在
/path/to/master-config
目录下放置一个自定义的my.cnf文件,包含主库相关的复制配置。
- 运行主数据库容器,并通过环境变量设置必要的配置,如MySQL root用户的密码、服务器ID等。
-
配置主数据库以启用二进制日志:
- 在主数据库的配置文件中确保启用了二进制日志(binary log),这是进行复制所必需的。
-
创建从数据库容器:
- 同样运行一个新的MySQL容器作为从库,并设置相应的环境变量,比如服务器ID、主库连接信息等。
docker run --name mysql-slave \ -e MYSQL_ROOT_PASSWORD=rootpassword \ -e MYSQL_SERVER_ID=2 \ -e MYSQL_REPLICATION_USER=repluser \ -e MYSQL_REPLICATION_PASSWORD=replpassword \ -e MYSQL_MASTER_HOST=mysql-master \ -e MYSQL_MASTER_PORT=3306 \ -v /path/to/slave-config:/etc/mysql/conf.d \ -v /path/to/slave-data:/var/lib/mysql \ -d mysql:latest
- 创建用于复制的用户,并在主库上授权该用户从特定主机进行复制。
- 同样运行一个新的MySQL容器作为从库,并设置相应的环境变量,比如服务器ID、主库连接信息等。
-
配置从数据库:
- 在从数据库的配置文件中添加相应的复制配置,如relay-log配置、change master to语句的信息。
-
启动复制:
- 登录到从数据库容器内,执行SQL命令初始化复制:
CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_USER='repluser', MASTER_PASSWORD='replpassword', MASTER_LOG_FILE='<主库的binlog文件名>', MASTER_LOG_POS=<主库的binlog位置>; START SLAVE;
- 登录到从数据库容器内,执行SQL命令初始化复制:
-
验证主从同步状态:
- 在从库上执行
SHOW SLAVE STATUS\G;
来检查复制是否正常运行。
- 在从库上执行
以上步骤概括了如何在Docker中建立MySQL主从复制的基本流程,实际操作时请根据具体的版本和需求调整细节。此外,使用docker-compose或者Kubernetes等编排工具可以简化部署过程,并方便管理多实例间的网络与配置。