首页 运维干货如何在Docker上安装MySQL读写分离

如何在Docker上安装MySQL读写分离

运维派隶属马哥教育旗下专业运维社区,是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai
领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维

mysql主从的机制主要是通过从服务器订阅主服务器的binlog日志实现,这里以一主双从的形式演示。

如何在Docker上安装MySQL读写分离插图

解释

这三个mysql创建一个docker的局域网用于通信使用,因为各个容器之间是互不影响的,所以他们的启动端口都可以是3306,对于宿主机映射的端口分别是6606,6607,6608。

1 准备

1.1 docker-compose

1.2 准备my.cnf文件

1.2.1 mysql-master.cnf

1.2.2 mysqld-slave1.cnf

【注意】
配置文件中的server_id要保证全局唯一。

2. 启动mysql

2.1 将配置文件放置在指定目录

因为我们想将mysql的my.cnf文件映射到宿主机上(否则docker会将映射的文件作为路径处理导致报错),所以需要提前将准备好的配置文件放置在我们约定的指定位置中(这里我约定的路径为/volume/conf/mysql-ms/)

2.2执行docker-compose

第一次需要拉取mysql镜像,执行时间相对长一点。

启动完成后,查看mysql状态

如何在Docker上安装MySQL读写分离插图(1)

3. 配置mysql读写分离

3.1 进入镜像,这里以mysql-master为例

进入mysql

如何在Docker上安装MySQL读写分离插图(2)

开启远程访问权限

两个slave的mysql也需要相同的操作开启远程访问权限

3.2 获取mysql-master的binlog开始主从复制的地址

如何在Docker上安装MySQL读写分离插图(3)

3.3mysql-slave执行以下命令

  1. 重置mysql-slave

2.设置订阅的主服务器信息,这步很重要!!!
根据自己之前配置的信息编写对一个mysql-master的信息,这里的master_log_file和master_log_pos是刚刚查阅的master的status信息

3.启动订阅线程

4.查看订阅状态

如果订阅成功,你的Slave_IO_Running和Slave_SQL_Running应该都是Yes

如何在Docker上安装MySQL读写分离插图(4)

5.设置从服务器为只读(可以不设置)

为了避免开发人员误操作,我们最好将从服务器设置成只读模式

安装过程中可能出现的问题

服务器间网络不通,我之前因为懒,没有设置局域网,想着直接使用宿主机的ip+宿主机映射的port进行mysql之间的通信,结果是不好使的 :-||

没有编写my.cnf配置文件,docker如果需要映射文件的话需要提前在宿主机的指定目录创建好映射的文件,否则docker-compose启动会报错

作者:茶还是咖啡
链接:https://www.jianshu.com/p/371b84151999

本文链接:http://www.yunweipai.com/36428.html

网友评论comments

发表评论

电子邮件地址不会被公开。

暂无评论

Copyright © 2012-2020 YUNWEIPAI.COM - 运维派
扫二维码
扫二维码
返回顶部