使用 docker 搭建 mysql 主从配置

13 篇文章 0 订阅
真正的配置文件是docker中 /etc/my.cnf
  1. 拉取镜像 docker pull mysql:5.7
  2. 启动主数据库和从数据库
docker run -p 3306:3306 --restart=always --name mysql_v1  -v /var/mysql/mysql_v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
docker run -p 3307:3306 --restart=always --name mysql_v2  -v /var/mysql/mysql_v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
  1. 用 Navicat 连接测试,都能连上说明启动正常
  2. 修改 docker 中 my.cnf 配置文件,需要复制到本机再修改,修改后再复制回 docker,可以用 centos 图形版自带的编辑工具
docker cp /var/mysql/mysql_v1_config/my.cnf mysql_v2:/etc/my.cnf
docker cp /var/mysql/mysql_v1_config/my.cnf mysql_v2:/etc/my.cnf

进入 master 创建账号

建master的复制账号
# 进入docker
docker exec -it mysql_v1 /bin/bash
# 进入 mysql
mysql -uroot -proot

#执行以下命令,创建复制账号,用户名和密码都是 wanger
grant replication slave on *.* to 'wanger'@'%' identified by 'wanger';

flush privileges;
  1. 修改 master my.cnf
[mysqld]
#修改配置文件:vim /etc/my.cnf
#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin

#上面两行最重要,下面的可以不配置


# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库 需要复制的主数据库名字
binlog-do-db=testdb
#设置logbin格式
binlog_format=STATEMENT

配置完,重启 mysql_v1, 进入mysql
输入Show master status;
记录 file 和 position
在这里插入图片描述

  1. 修改从机 my.cnf
[mysqld]
#修改配置文件:vim /etc/my.cnf
#主服务器唯一ID
server-id=2
#启用二进制日志
log-bin=mysql-bin

重启从机镜像 docker restart mysql_v2
进入 mysql 执行以下命令

CHANGE MASTER TO MASTER_HOST='主机的ip地址',
MASTER_USER='wanger',
MASTER_PASSWORD='wanger',
MASTER_PORT=3306, 
MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=438;
#解释:
# 	CHANGE MASTER TO MASTER_HOST='主机的IP地址',
#	MASTER_USER='slave'(刚刚配置的用户名),
#	MASTER_PASSWORD='123456'(刚刚授权的密码),
#	master_port=主机开放的端口 我这里是3310端口,
#	MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS=具体值(之前的Position);

查看从机状态show slave status\G

在这里插入图片描述
两个都是 Yes 表示配置成功

Slave_IO_Running: Yes 
Slave_SQL_Running: Yes
  1. 停止复制stop slave;
  2. 重新配置主从
stop slave;
reset master;

参考
优化mysql
https://segmentfault.com/a/1190000040109897

指出了 docker 中 MySQL 配置文件的位置
https://blog.csdn.net/qq_45564783/article/details/126440171

教程
https://ost.51cto.com/posts/11591

更详细的教程
https://juejin.cn/post/7002217850521796639

官方 mysql docker 说明
https://hub.docker.com/_/mysql
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值