使用docker容器搭建MySQL主从复制

1、拉取mysql镜像

docker pull mysql

2、创建主节点docker容器

docker run --name mysql-master -p 3306:3306 -v /root/docker/mysql/master:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql

创建从节点docker容器

docker run --name mysql-slave -p 3307:3306 -v /root/docker/mysql/slave:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql

这里通过挂载目录的方式使mysql的配置文件生效。然后,分别在两个节点导入数据库user_db。

3、在/root/docker/mysql/master下创建主节点的配置文件mysql.cnf

[mysqld]
log-bin=mysql-bin  # 启用二进制日志
server-id=1   # 服务器唯一ID,可以任意设置,但必须唯一
binlog-ignore-db=mysql  # 不要复制的数据库
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
binlog-do-db=user_db     # 要复制的数据库名

注意,mysql的配置文件开头要加上[mysqld],我就是一开始没加这个东西导致配置怎么改都不生效,浪费了很多时间。这里设置了复制数据库user_db。重启容器,使配置生效。

4、在/root/docker/mysql/slave下创建从节点的配置文件mysql.cnf

[mysqld]
server-id=2
relay-log=mysql-relay

重启容器,使配置生效。

5、使用客户端连接主节点,执行如下命令

show master status

查看节点状态
在这里插入图片描述
在从节点执行如下命令

change master to 
master_host='192.168.182.128',master_port=3306, master_user='root',master_password='123456',
master_log_file='mysql-bin.000003',master_log_pos=157;

实现复制。其中,master_log_file和master_log_pos分别对应上图中的File和Position。

6、在从节点执行

start slave

开启复制。执行

show slave status

查看复制状态,
在这里插入图片描述
在这里插入图片描述
出现两个Yes,说明主从复制已经搭建完成。
尝试向主节点的表中添加记录,会自动复制到从节点上。

你可能感兴趣的:(docker,mysql,容器)