docker容器运行mysql5.7实现主从复制

本教程详细介绍了如何在Docker环境下设置MySQL主从复制。首先通过`docker pull`拉取mysql:5.7镜像,然后分别运行两个容器作为master和slave,端口分别为3307和3308。接着在master上创建数据同步用户,并配置相关权限和日志设置。在slave上同样进行相应配置,并设置binlog。最后,通过Navicat客户端连接并验证主从复制功能。
摘要由CSDN通过智能技术生成

拉取mysql5.7镜像

docker pull mysql:5.7

运行容器

docker run -di --name master -p3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
docker run -di --name slave -p3308:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7

docker ps -a // 查看启动中的容器
 

3307端口的为master,3308的为slave。

创建成功后,Navicat客户端登录(win7 docker默认ip为:192.168.99.100):

Master配置

进入容器:

docker exec -ti master bash

使用命令行进入mysql:

mysql -u root -p

接着输入root用户的密码(密码忘记的话就网上查一下重置密码吧~),然后创建用户:

//172.17.0.3是slave docker从机的IP;即:master = 172.17.0.4 , slave = 172.17.0.5
// 或者使用下面命令获取容器的元信息
docker inspect master

创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。
CREATE USER 'slave'@'%' IDENTIFIED BY 'root';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

flush privileges;

创建的这两个用户在配置slave从机时要用到。

接下来在找到mysql的配置文件/etc/mysql/my.cnf,增加以下配置:

[mysqld]
# 开启binlog
log-bin=mysql-bin
server-id=3307
# 需要同步的数据库,如果不配置则同步全部数据库
binlog-do-db=test_db
# binlog日志保留的天数,清除超过10天的日志
# 防止日志文件过大,导致磁盘空间不足
expire-logs-days=10 

譬如:

 

配置完成后,退出重启mysql: 

docker restart master

Slave配置:

进入容器:

docker exec -it /bin/bash

找的my.cnf文件,路径:/etc/mysql/my.cnf,录入下面的信息:

[mysqld]
server-id=3308
log-bin=mysql-bin
innodb_flush_log_at_trx_commit=1
sync_binlog=1

 配置完成后,退出重启mysql: 

docker restart slave

master: 进入master容器 

docker exec -it master /bin/bash
mysql -uroot -p123456
show master status;

 

  slave:进入slave

 

change master to master_host='172.17.0.4', master_user='slave', master_password='root', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=617;
开始复制:start slave
查看:show slave status \G;

 

完成主从复制测试:

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值