首先,我们需要创建两个MySQL Docker容器,一个作为主服务器(master),另一个作为从服务器(slave)。这里我们使用官方的mysql镜像。

步骤一:创建网络

docker network create mysql-net

步骤二:启动主服务器

docker run --name mysql-master -e MYSQL_ROOT_PASSWORD=masterpass -d --network=mysql-net mysql:5.7

这里设置了root用户密码为'masterpass'。记住,在生产环境中,请使用更安全的密码。

步骤三:启动从服务器

docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=slavepass -d --network=mysql-net mysql:5.7 

同样地,root用户密码设定为'slavepass'。在生产环境中,请确保使用更安全的密码。

接下来需要配置主从复制。首先配置主数据库:

步骤四:进入mysql-master容器并登录MySQL:

docker exec -it mysql-master bash 
mysql -u root –p  
# 输入你之前设定好的root用户密码 'masterpass'

然后执行以下SQL命令以创建用于复制过程所需用到的用户,并授予该用户REPLICATION SLAVE权限:

CREATE USER 'repl'@'%' IDENTIFIED BY 'replpassword';  
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';  

接下来,我们需要获取主服务器的二进制日志文件名和位置,这些信息将用于从服务器的配置。执行以下SQL命令:

SHOW MASTER STATUS;  

记下返回结果中的File和Position字段值。

步骤五:配置从数据库。首先进入mysql-slave容器并登录MySQL:

docker exec -it mysql-slave bash 
mysql -u root –p 
# 输入你之前设定好的root用户密码 'slavepass'

然后执行以下SQL命令以设置主服务器信息:

CHANGE MASTER TO MASTER_HOST='mysql-master',MASTER_USER='repl',MASTER_PASSWORD='replpassword',MASTER_LOG_FILE='<File>',MASTER_LOG_POS=<Position>;  
START SLAVE;   

在上述SQL中,将''和''替换为你在步骤四中获取到的值。

至此,MySQL主从复制已经设置完成。你可以通过在主数据库上创建表或插入数据等操作来测试复制是否成功。

注意:这个教程是基于Docker环境进行操作,并且使用了最基础、最简单、最直接且易于理解的方式进行说明。实际生产环境可能会有更多复杂性需要考虑,并可能需要更多安全性控制以及错误处理机制等。


海外免备案云服务器链接:www.tsyvps.com

蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。

蓝易云是一家专注于香港及国内数据中心服务的提供商,提供高质量的服务器租用和云计算服务、包括免备案香港服务器、香港CN2、美国服务器、海外高防服务器、国内高防服务器、香港VPS等。致力于为用户提供稳定,快速的网络连接和优质的客户体验。
最后修改:2023 年 09 月 25 日
如果觉得我的文章对你有用,请随意赞赏