DockerMysql主从复制环境搭建服务部署

在这里插入图片描述
两个MYSQL容器机器 1 master 1 slave
docker启动mysql
docker run -d -v /home/user/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -e TZ=Asia/Shanghai --net staticnet --ip 172.28.0.102 mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
进入容器创建数据库
CREATE DATABASE IF NOT EXISTS TEST_CAT DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;

master

## 开启binlog

docker exec 容器ID bash -c “echo ‘log-bin=/var/lib/mysql/mysql-bin’ >> /etc/mysql/mysql.conf.d/mysqld.cnf”
设置ID 同局域网的ID需要不一致
docker exec 容器ID bash -c “echo 'server-id=1234
’ >> /etc/mysql/mysql.conf.d/mysqld.cnf”

## 开启需要同步的数据库

docker exec 容器ID bash -c “echo ‘binlog-do-db=TEST_CAT’ >> /etc/mysql/mysql.conf.d/mysqld.cnf”

docker exec 容器ID bash -c “echo ‘log-bin=mysql-bin’ >> /etc/mysql/mysql.conf.d/mysqld.cnf”
查看binlog是否开启成功
show binary logs ;
重启master容器
查看主机状态 show master status;
在这里插入图片描述

## slave

启动另一个 mysql容器
开启slave 配置
docker exec 容器ID bash -c “echo ‘server-id=1112’ >> /etc/mysql/mysql.conf.d/mysqld.cnf”
docker exec 容器ID bash -c “echo ‘relay-log-index=slave-relay-bin.index’ >> /etc/mysql/mysql.conf.d/mysqld.cnf”
docker exec 容器ID bash -c “echo ‘relay-log=slave-relay-bin’ >> /etc/mysql/mysql.conf.d/mysqld.cnf”

进入容器设置主从关系 配置主机的地址端口信息,还有binlog文件和position

change master to master_host=‘172.28.0.102’,master_user=‘root’,master_password=‘123456’,master_log_file=‘mysql-bin.000002’,master_log_pos=154;
启动从机
start slave;
查看配置结果
show slave status
在这里插入图片描述

Slave_IO_Running: No 说明从机的IO线程没有启动,需要查看mysql的uuid值是否在集群中重复cat /var/lib/mysql/auto.cnf

在这里插入图片描述

发现 master 和 slave的uuid都是这个 则需要更改slave 的uuid值
容器中下载 vim命令
apt-get update
apt-get install vim
vim /var/lib/mysql/auto.cnf
如果没有连网的话 本地新建auto.cnf文件
使用 docker cp auto.cnf 容器ID: /var/lib/mysql/
进入容器 chmod 777 /var/lib/mysql/auto.cnf

重启容器 再次查看
show slave status \G;
在这里插入图片描述
从机配置完成
测试 连接主机TEST_CAT数据库 新建表 插入数据 查看从机是否存在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值