docker进入mysql查看路径(Docker 环境运行 Mysql 和开启 Binlog 配置主从同步的设置方法)
docker进入mysql查看路径
Docker 环境运行 Mysql 和开启 Binlog 配置主从同步的设置方法同一服务器模拟利用 Docker 模拟 Mysql 设置的主从同步设置。
1、运行起来两个 Mysql :masterMysql(主库)、slaveMysql(从库),数据库版本 5.7。
#拉取镜像 docker pull mysql:5.7 #y运行主、从容器 docker run -p 13306:3306 --name slavemysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 docker run -p 13307:3306 --name mastermysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
运行完成后可以尝试连接,注意此处的映射到主机的服务端口分别为 13306和13307,对外连接需要保证防火墙和网关设置都要放开。
2、查看容器的使用 IP(配置主从需要同一内网中的 IP 地址使用)
#查看主库的所在 IP docker inspect --format='{{.NetworkSettings.IPAddress}}' masterMysql #172.18.0.2
3、配置主从库。
(1)进入主库
docker exec -it masterMysql bash #masterMysql 为运行容器的名称。
(2)进行配设置配置文件
cd /etc/mysql&&ls
可以看到,多份 *.cnf 文件,包括在 conf.d 和 mysql.conf.d 文件夹下都有。 这个是有加载顺序的,此处配置就统在 my.cnf 上操作。
(3)设置配置文件
方式一:
正常操作是进入文件夹内编辑,如以下方式:
vim ./my.cnf 不过这里遇到会报错: bash: vi: command not found
先行安装 vi
apt-get update #成功后运行 apt-get install vim
方式二(建议):
在容器外编辑后拷贝到容器内,这里是直接覆盖的方式。
复制主机到容器内。 语法:docker cp [主机地址] [容器 ID 或容器名称]:[容器文件地址] docker cp /home/mysql/my.cnf mysql:/etc/mysql/my.cnf
(4)打开 Binlog 配置。
相同的配置:进入主、从库设置 my.cnf 配置文件。注意 server-id 需要不一致。
character_set_server=utf8 init_connect='SET NAMES utf8' #这两条是设置utf-8字符格式,两个主机配置相同 ## 同一局域网内注意要唯一(如果双向主备库,依赖这个去区分执行 Binlog 的 SQL 语句 ) #可以取 Ip 的最后一个。主库为 2,从库为 3。 server-id=2 ## 开启二进制日志功能,可以随便取(关键) #演示设置主库设置为 master-bin,从库为 slave-bin log-bin=master-bin log_bin_index = master-bin.index
其中不同的配置: 主库:
#这里整理可以配置的内容,由于测试,先注释。 #要给从机同步的库(如果不写,默认全部同步) #binlog-do-db=test #不给从机同步的库(多个写多行) #binlog-ignore-db=mysql #设置复制的数据库 #binlog-ignore-db=information_schema #设置忽略复制的数据库 #自动清理 15 天前的log文件 expire_logs_days=15 #binlog_format=row #设置 Binlog 记录的实际操作的 SQL。 #max_binlog_size=100m #设置文件大小 #replicate_do_table=test #进行复制的的数据表 #replicate_ignore_table=igoreTest #忽略进行复制的的数据表 #replicate_wild_ignore_db=test # 同 Replicate_Do_DB 可带通配符 #replicate_wild_ignore_db=igoreTest # 同 Replicate_Ignore_DB 可带通配符
从库:
#设置避免更新不及时或是重启后导致主从库复制出错。 read_only = 1 master_info_repository=TABLE relay_log_info_repository=TABLE relay-log = slave-relay-bin #主库的日志存放。 relay-log-index = slave-relay-bin.index
配置是需要重启容器后生效。
docker restart masterMysql docker restart slaveMysql
查看容器的日志:
docker logs masterMysql
如果要是重启失败,可以用此操作检查是否刚才的配置文件有出错,利用(3)方式二,修改配置文件,再去启动容器。
(5)查看容器是否设置 Binlog 配置成功。
#进入容器 docker exec -it masterMysql bash #进入 Mysql mysql -uroot -p123456 #查看 Binlog 状态。 show variables like '%log_bin%'; #可以看到 log_bin 是打开的状态,bin_log 的位置在 /var/lib/mysql/master-bin ![file](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/61e52585e4aa4200a8c27204ef690234~tplv-k3u1fbpfcp-zoom-1.image)
(6)查看主库的 Matser 节点的 Binlog 状态,拿到此处的配置的 position 值。
show master status;
若是之前开启的 Binlog 没有使用,需要新生成或是重置清空。
#生成新的 Binlog 日志文件 flush logs; #重置清空 Binlog 日志文件 reset master;
可以查看到此处的 日志配置文件是:master-bin.000001,Position 为 334。
4、主库设置一个账号提供从库同步数据使用。此处账号为 slaveMysql。
CREATE USER 'slaveMysql'@'%' IDENTIFIED BY '123456'; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slaveMysql'@'%';
5、登录从库的 Mysql 执行,建议还是连接到 Navicat 上运行和查看,服务器上查看格式很乱。
(1)执行同步的主库配置。注意这里的是结尾符号。
change master to master_host='172.18.0.2', master_user='slaveMysql', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 334, master_connect_retry=30;
参数详解:
change master to master_host=${容器所用IP} 这里需要是同一局域网内,第 2 所得。 master_port Master 的端口号,指的是容器的运行数据库的端口号,不是映射到主机的端口号,第 1 所得。 master_user 设置同步使用的账号, 第 4 所得 master_password 设置同步使用的账密码,第 4 所得 master_log_file 指定了从主库哪个配置文件读取 Binlog 日志,第 3(6) 所得 master_log_pos 从哪个 Position 开始读,即上文中提到的 Position 字段的值,第 3(6) 所得 master_connect_retry 如果连接失败,重试的时间间隔,单位是秒,默认是60秒
(2)打开从库的配置。
start slave; #停止 slave。 #stop slave;
(3)查看主从同步的状态。 检查主从同步的状态。
show slave status ;
(4)检查错误。
可以通过查看 Last_Io_Error 查看到连接的错误。 排查以下出错的可能。 1>网络不通,端口和局域网 IP 2>用于同步的账户密码正常 3> Master 的 Binlog 文件名称和 Pos 位置错误。
6、测试主从是否正常。
Master 库创建数据库,查看 从库是否也有同步创建成功即可,到此就结束啦。
到此这篇关于Docker 环境运行 Mysql 和开启 Binlog 配置主从同步的文章就介绍到这了,更多相关Docker Binlog mysql主从同步内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- docker执行shell脚本(基于Docker搭建ELK 日志系统的方法)
- linuxnfs服务教程(使用Docker的NFS-Ganesha镜像搭建nfs服务器的详细过程)
- docker部署spring boot(Spring Boot 打包上传Docker 仓库的详细步骤)
- docker的解剖(再见 Docker如何5分钟转型 containerd)
- dockertomcat多开实例(Docker tomcat的设置内存大小配置方式)
- docker如何访问nginx(基于docker启动nginxssl配置)
- docker gitlab 配置(使用Docker构建一个Git镜像使用clone仓库)
- docker插件容器使用(Docker容器开jupyter不能访问到的解决方法)
- springbootdocker详解(Spring Boot 2.4 新特性之一键构建Docker镜像的过程详解)
- docker容器内部怎么查看id(docker容器中无法获取宿主机hostname的解决方案)
- docker重新加载nginx(Docker Nginx Log 三者的处理详解)
- dockercompose的常用命令的作用(PIP安装docker-compose超时问题解决方案)
- docker load镜像报错(Docker load之后镜像名字为none问题解决方法)
- docker中如何使用nginx(docker nginx实现一个主机部署多个站点操作)
- docker 默认内存(docker 运行指定内存的操作)
- docker集群安装教程(使用docker部署hadoop集群的详细教程)
- 终于来了,淘宝更改账户名测试中,快去看看你能不能修改(淘宝更改账户名测试中)
- 淘宝支持账号名修改,网友 终于可以 重新做人 了(淘宝支持账号名修改)
- 盘点那些年让人称奇的年终奖 最后一个赢辣条毫无悬念(盘点那些年让人称奇的年终奖)
- 你还没有升职吗 他竟因为几套激励理论,升职了(你还没有升职吗)
- 某知名企业绩效管理体系及薪酬分配体系操作手册(某知名企业绩效管理体系及薪酬分配体系操作手册)
- 职场人改不掉这4个习惯,只会越混越穷,一辈子也翻不了身(职场人改不掉这4个习惯)
热门推荐
- vue验证码(vue_drf实现短信验证码)
- mysql完整整理(Mysql隔离性之Read View的用法说明)
- thinkphp继承model如何使用(Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解)
- mysql整体架构设计(MySQL 整体架构介绍)
- 怎么使用阿里云cdn(阿里云CDN加速和全站加速DCDN区别及如何选择)
- 阿里云服务器使用教程(阿里云服务器安全规则配置详解)
- html5中canvas标签(html5 canvas绘制网络字体的常用方法)
- C#中的深拷贝与浅拷贝的区别
- 12步轻松搞定python装饰器(Python3.5装饰器典型案例分析)
- html5基本标签详解(HTML5 通过Vedio标签实现视频循环播放的示例代码)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9