Docker 搭建MySQL主从复制

拉取mysql镜像并运行两个容器
# 拉取镜像
docker pull mysql
# 启动一台作为主节点
docker run -p 3307:3306 --name primysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
# 作为从节点
docker run -p 3308:3306 --name secmysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
# 查看运行状态
docker ps

一切正常后使用连接工具测试是否能够正常连接

对主节点进行配置

进入主节点

docker exec -it primysql /bin/bash

下载vim工具

apt-get update
apt-get install vim

在my.cnf中新增下面配置

vim /etc/mysql/my.cnf
#在[mysqlld]下新增
#同一局域网内注意要唯一
server-id=1
#开启二进制日志功能,可以随便取
log-bin=mysql-bin

保存退出并重启容器

在Master数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
配置从库

在从库中编辑my.cnf加入配置

#同一局域网内注意要唯一
server-id=1
#开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=slave-mysql-bin
## relay_log配置中继日志 
relay_log=edu-mysql-relay-bin

配置完后和primary节点一样重启

连接两个节点

在Master进入mysql,执行show master status;

show master status

File和Position字段的值后面将会用到,在后面的操作完成之前,需要保证Master库不能做任何操作,否则将会引起状态变化,File和Position字段的值变化。

在Slave 中进入 mysql,执行change master to master_host=‘172.17.0.2’, master_user=‘slave’, master_password=‘123456’, master_port=3306, master_log_file=‘mysql-bin.000001’, master_log_pos= 2830, master_connect_retry=30;

SlaveIORunning 和 SlaveSQLRunning 都是Yes,说明主从复制已经开启。此时可以测试数据同步是否成功。

参考连接-写的很详细,本文只是修改了mysql最新版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值