最全docker搭建mysql主从同步过程

引言

以前在centos上装一个mysql redis 能搞两三天,各种编译问题,自从用了docker做开发环境之后是真的香,真正体会了一把什么叫一键启动。最近开发环境自己搭个主从的结构使用,mark一下,顺便分享一下中间可能遇到的问题

搭建流程

docker 容器准备

这里以mysql 8.0为例

# 拉取镜像,自己配一下docker镜像源,几十秒就下完了
docker pull mysql:8.0
# 创建容器之间的通信网络
docker network create mysql_db
### 启动主库
docker run -p 3340:3306 --name mysql-m --network mysql_db -e MYSQL_ROOT_PASSWORD=主库root密码 -d mysql:8.0
### 启动从库
docker run -p 3341:3306 --name mysql-s --network mysql_db -e MYSQL_ROOT_PASSWORD=从库root密码 -d mysql:8.0

接下来就是进入容器开始配置mysql主从信息了
这里记得提前创建一个用来同步的用户,记得赋权

CREATE USER `slave`@`%` IDENTIFIED WITH mysql_native_password BY '123456';
# 授权
GRANT REPLICATION SLAVE ON *.* TO  'slave'@'%' identified by '123456';
# 检查一下
show grants for 'slave'@'%';
# 没有的话刷新一下
flush PRIVILEGES;

# 修改主库配置
docker exec -it mysql-m   /bin/bash
# 这里需要安装一下vim
apt-get update
apt-get install vim
vim /etc/mysql/my.cnf

#1.配置server-id 保证同一网络中不重复,其实就普通的主从配置一样了
#2.开启logbin 主从同步其实就是读取binlog的过程
[mysqld]
server-id=101
log-bin=mysql-bin

# 修改从库配置
docker exec -it mysql-s /bin/bash
vim /etc/mysql/my.cnf
# 配置server-id log-bin和relay-log 
# mysql会将变化写入relaylog 从库来读取relaylog做同步
[mysqld]
server-id=102
log-bin=mysql-slave-bin
relay-log=mysql-relay-bin

执行同步

  1. 重启主从服务,进入主库查看主库状态 show master status;
  2. 记录binlog文件和position ,比如 mysql-bin.000002 1894;
  3. 进入从库,执行以下命令
    CHANGE MASTER TO master_host = '172.17.0.2', master_user = 'slave', master_password = '123456', master_port = 3306, master_log_file = 'mysql-bin.000002', master_log_pos = 1894, master_connect_retry = 30;
  4. 查看从库状态 SHOW SLAVE STATUS; 这里应该可以看到配置的主库host和端口,日志文件及位置信息,但是此时IO是关闭的,还没有线程开始对主库binlog进行同步和对relaylog进行读取。
  5. 这里要提一下,上面docker启动容器时我们把端口映射到了3340 和3341 ,但是对于docker容器内部访问时,端口还是3306,主库ip地址可以执行 docker inspect mysql-m 查看自己配置的网络组或者bridge 的IPAddress
  6. 然后就是在从库开启slave了,start slave;
  7. 关闭同步 stop slave;
  8. 接下来就可以愉快地测试啦

参考 https://www.cnblogs.com/songwenjie/p/9371422.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

紫金丨小飞侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值