mysql主从复制绕WAF
2023-10-26 09:45:06
MySQL Replication
主从复制,简单来讲就是将一台MySQL服务器的数据库文件同步到其他MySQL服务上,使得被同步的MySQL服务也能读取到我们的数据
为什么要有主从复制?主要是为了缓解MySQL服务的压力。在用户访问量大的情况下,若所有读和写操作都在一台服务器上,就容易导致服务崩溃。主从复制模式中,将写操作给主服务器(Master),读操作给从服务器(Slave),从服务器(Slave)可以部署多台,分摊压力,以解决数据库单点故障。大部分情况下,读的操作肯定是大于写的操作。
- master将SQL的写操作记录(update、delete、insert)写入
binary log中,并通知slave更新数据 - slave向master请求
binary log,master根据偏移量将新的binary log发给slave - slave接收到新的
binary log后,写入自身的relay log中继日志中 - slave检测到中继日志更新,将更新的内容同步到自身数据库中
接下来用docker来搭建MySQL主从复制的环境
docker pull mysql:5.7 拉取mysql 5.7的镜像
1 | version: "3.3" |
master和slave都要有自身的server-id,并且每一个server-id不能相同
master的配置./master/my.cnf
1 | [mysqld] |
slave的配置./slave/my.cnf
1 | [mysqld] |
docker-compose up -d启动主从两台服务
- 主服务器
1 | docker exec -it master mysql -uroot -p123456 |
查看master的binary log文件名和position,下面slave的change master要用到
binary log在/var/lib/mysql/master-bin.000001
- 从服务器
1 | docker exec -it slave mysql -uroot -p123456 |
打印出这些内容就说明连接成功了。接下来在master上的写操作都会被同步到slave上。


