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
执行同步
重启主从服务,进入主库查看主库状态 show master status;
记录binlog文件和position ,比如 mysql-bin.000002 1894;
进入从库,执行以下命令
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;
查看从库状态 SHOW SLAVE STATUS; 这里应该可以看到配置的主库host和端口,日志文件及位置信息,但是此时IO是关闭的,还没有线程开始对主库binlog进行同步和对relaylog进行读取。
这里要提一下,上面docker启动容器时我们把端口映射到了3340 和3341 ,但是对于docker容器内部访问时,端口还是3306,主库ip地址可以执行 docker inspect mysql-m 查看自己配置的网络组或者bridge 的IPAddress
然后就是在从库开启slave了,start slave;
关闭同步 stop slave;
接下来就可以愉快地测试啦
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
一文搞清楚MySQL count(*)、count(1)、count(col)区别
本文主要介绍了MySQL count(*)、count(1)、count(col)区别,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-03-03
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
在本地MySQL的服务启动后,由于Navicat的一些功能需要联网才可以使用,今天重点给大家介绍Navicat for MySQL 连接 MySQL 报2005 -Unknown MySQL server host ‘localhost’(0)错误的情况与解决方法,感兴趣的朋友一起看看吧2021-05-05
linux下改良版本mysqldump来备份MYSQL数据库
我的备份脚本都是在凌晨执行的,经常在慢查询日志里面看到这样的信息:select * from table1; 之前一直很纳闷,最后才了解到原来是MYSQLDUMP搞的鬼。2008-07-07
MySQL count(*),count(id),count(1),count(字段)区别
本文主要介绍了MySQL count(*),count(id),count(1),count(字段)区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-05-05


最新评论