Docker中MySQL主从复制配置指南

需积分: 13 0 下载量 21 浏览量 更新于2024-08-05 收藏 43KB DOCX 举报
"该文档详细介绍了如何在Docker环境下配置MySQL主从复制,包括创建主服务器目录、定义配置文件、启动Docker容器以及设置复制用户的步骤。" 在Docker中配置MySQL主从复制是一个常见的数据库高可用性解决方案,它允许数据在多个MySQL实例间实时同步,确保数据的一致性和冗余。以下是详细的配置过程: 1. 创建主服务器所需目录: 在主机系统中,我们需要创建两个目录来存放MySQL的配置文件和数据文件。 - `/usr/local/mysqlData/master/cnf`:存储MySQL服务器的配置文件。 - `/usr/local/mysqlData/master/data`:存储MySQL的数据文件,包括数据库文件和日志文件。 2. 定义主服务器配置文件: 使用`vim`编辑器创建并编辑配置文件`/usr/local/mysqlData/master/cnf/mysql.cnf`,配置以下关键参数: - `server-id`:设置MySQL服务器的唯一标识,通常从1开始,主服务器设为1。 - `log-bin`:开启二进制日志,记录所有改变数据库状态的操作,用于复制。 - `binlog_cache_size`:设置binlog缓存大小,用于存储待写入binlog的SQL语句。 - `binlog_format`:选择binlog的记录格式,这里使用的是混合模式(mixed),兼顾性能和安全性。 3. 启动Docker,创建并启动mysql主服务: 使用`sudo systemctl start docker`启动Docker服务,然后运行Docker命令启动MySQL主服务: - `-p 3306:3306`:将主机的3306端口映射到容器的3306端口,使得外部可以访问。 - `--name master`:给容器命名为主服务器。 - `-v /usr/local/mysqlData/master/cnf:/etc/mysql/conf.d`:将主机的配置目录挂载到容器的配置目录。 - `-v /usr/local/mysqlData/master/data:/var/lib/mysql`:将主机的数据目录挂载到容器的数据目录。 - `-e MYSQL_ROOT_PASSWORD=123456`:设置MySQL root用户的初始密码。 - `mysql:5.7`:指定使用的MySQL镜像版本为5.7。 4. 添加复制master数据的用户reader: 通过`docker exec`命令进入已运行的`master`容器,然后使用MySQL客户端创建一个名为`reader`的用户,并赋予其只读权限,以便从服务器可以连接并复制数据: - `GRANT REPLICATION SLAVE ON *.* TO 'reader'@'%';`:授予`reader`用户从任何主机连接到主服务器并进行复制的权限。 - `FLUSH PRIVILEGES;`:刷新权限,使新设置的权限立即生效。 完成上述步骤后,主服务器就已经配置好,可以开始配置从服务器并进行数据复制。从服务器的配置类似,但需要额外设置`server-id`为不同的值,并通过`CHANGE MASTER TO`命令指定主服务器的IP、端口、用户名、密码以及最新的二进制日志位置,从而开始复制过程。 这样的配置可以确保即使主服务器发生故障,从服务器也能接管服务,提供不间断的数据访问,同时保证了数据的一致性。在实际生产环境中,还需要考虑网络连接稳定性、数据安全性以及监控与管理等多方面因素。