docker mysql8.0 主从复制

先下载docker 镜像
docker pull mysql下载mysql最新镜像

docker run -it --rm mysql /bin/bash运行mysql镜像

docker cp 运行起来的容器名: /etc/mysql/my.cnf ./将运行起来的mysql容器中的my.cnf 文件复制到当前目录下

docker stop 容器id暂停容器运行,因为在运行镜像的时候写了 --rm 使用暂停容器时 会自动销毁容器,回收内存空间

创建两个目录,master slave 分别是主机和从机的数据存储挂载目录

将my.cnf 复制到 master 和 slave 目录下,

在 master 和 slave 中创建data 目录, 用于挂载docker mysql容器中数据,防止docker 容器销毁,数据丢失

在master my.cnf 配置添加

server-id=111 #主从id号,不能重复
innodb_flush_log_at_trx_commit=2
sync_binlog=1

在slave my.cnf 配置中添加

server-id=222   #主从id号,不能重复
innodb_flush_log_at_trx_commit=2
sync_binlog=1
relay_log_recovery=0

开启docker 容器:
-v 文件共享,这里要使用绝对路径

docker run -it --rm -v /home/Data/master/my.cnf:/etc/mysql/my.cnf -v /home/Data/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=python -p 3301:3306 mysql

docker run -it --rm -v /home/Data/slave/my.cnf:/etc/mysql/my.cnf -v /home/Data/slave/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=python -p 3302:3306 mysql

运行创建两个容器,将容器储存的数据挂载到 宿主机上,将宿主机上的 my.cnf替换掉

然后到navicat 上创建连接,如果连接成功,则代表容器没问题
连接 master 和 slave 数据库

然后在master 数据库中创建 从机账号
create user 'slave'@'%' identified with mysql_native_password by 'python';用户名slave 密码 python

刷新权限

FLUSH PRIVILEGES;

show master status;
查看binlog 和 Positio 在slave 从库连接的时候会使用到

使用docker network ls获取docker 网络id

docker inspect 网络id查看 master mysql 主数据库的ip 地址

在slave 数据库中连接 master 主数据库

change master to master_host='172.17.0.2', master_port=3306, master_user='slave', master_password='python',master_log_file='binlog.000002', master_log_pos=1240;

这个master_host 是上面查看到的mysql的ip地址, master_port 是mysql的地址, master_user, master_password 是主服务器创建从机账号是的用户名和密码

master_log_file 和 master_lig_pos 是 show master status; 命令展示的 binlig 和 position 
binlog 是主库中的日志文件, 里面储存了mysql操作,如增删改查, 
Position 是日志中的事务id, 还有个 endPosition id对应着事务的结束为止, 相当于 binlog 中的所以 操作命令都储存在一个字符串中, 
position 和 endposition 是每个事务之间的下标, 可以通过 position 和 endpositon 来截取 sql语句 

然后 在slave 从库中运行 start salve; 启动主从复制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值