概念
- Mysql读写分离主要是通过主从数据库复制来实现,Mysql自带的二进制复制技术;
- Mysql5.7与Mysql8操作稍有差别,Mysql8的授权模式有改动,需要先创建用户;
- 实现主从同步后,使用MyCat等软件实现读写分离;
- 使用Docker来模拟两台服务器,原理和使用2台不同IP的服务器一样;
安装Docker
- 下载
Docker Desktophttps://www.docker.com/get-started,这个是有图形界面的Docker,可以省去很多命令操作,对系统有一定要求; - 直接安装即可;
拉取mysql
docker pull mysql:5.7
- 在Docker Hub查看版本,本文使用5.7版本
https://hub.docker.com/_/mysql?tab=tags

制作主从Mysql镜像
1. 任意位置创建2个文件夹,并分别创建Dockerfile和My.cnf

Dockerfile– 打包配置文件My.cnf– Mysql配置文件,这里修改好以后替换Mysql原有文件,也可以打包以后进入容器修改,但是Docker原生没有Vim编辑,需要更新源安装,但是速度很慢;
2. 编写Dockerfile
FROM mysql:5.7
COPY my.cnf /etc/mysql/
EXPOSE 3306
CMD ["mysqld"]
- master和slave相同
mysql:5.7– 不写版本号5.7会拉取最新版Mysql,最新版的授权有变化,需修改授权方式
3. 编写My.cnf
master:
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
# 新添加的在下面
#启用二进制,必须
log-bin=mysql-bin
#填写整数,每个数据库不同
server-id=1
slave:
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
# 新添加的在下面
#启用二进制,必须
log-bin=mysql-bin
#填写整数,每个数据库不同
server-id=2
- 更多配置参考
server-id=1 #任意自然数n,只要保证两台MySQL主机不重复就可以了。
log-bin=mysql-bin #开启二进制日志
auto_increment_increment=2 #步进值auto_imcrement。一般有n台主MySQL就填n
auto_increment_offset=1 #起始值。一般填第n台主MySQL。此时为第一台主MySQL
binlog-ignore=mysql #忽略mysql库【我一般都不写】
binlog-ignore=information_schema #忽略information_schema库【我一般都不写】
replicate-do-db=aa #要同步的数据库,不填默认所有库
# 配置好后重启MySQL
# https://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label7
4. 打包
- master文件夹下
docker build -t master/mysql .
- slave文件夹下
docker build -t slave/mysql .
-
.– 点代表本文件夹下所有,必写 -
查看是否成功

创建主从Mysql容器
docker run -p 17717:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d master/mysql
docker run -p 17718:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD

本文详细介绍如何使用Docker搭建Mysql5.7的主从复制环境,并通过具体步骤实现读写分离。涵盖安装Docker、创建Mysql镜像、配置主从同步及测试过程。
&spm=1001.2101.3001.5002&articleId=122037472&d=1&t=3&u=3c92b04038db424aa9c4e6e4c3edfb9c)
1953

被折叠的 条评论
为什么被折叠?



