MySQL 主从复制搭建 双主双从 主从切换 环境搭建

1. 前言

在前面已经搭建了一主一从 读写分离环境,虽然读写分离分担了压力但是,任然存在单点故障,因此需要有主备切换也就是需要多个主机,多个从机,一个主机挂了,另外一个顶上

2. 资源分布

在原有一台机器上,不同端口表示不同MySQL

实际环境中应该在不同机器上,达到最大io利用

  • 3306 主 负责写操作,与33060 互相切换 读写
  • 3307 从 负责读操作
  • 33060 主 负责读操作,与3306 互相切换 读写
  • 33070 从 负责读操作

3. 开始配置

3.1 创建镜像


mkdir /home/data/mysql5760 ;
mkdir /home/data/mysql5770 ;

docker run -d -p 33060:3306 --restart=always --name mysql5760 -eTZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=chennewtoo_ -v /home/data/mysql5760:/var/lib/mysql --privileged=true  mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci  

docker run -d -p 33070:3306 --restart=always --name mysql5770 -eTZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=chennewtoo_ -v /home/data/mysql5770:/var/lib/mysql --privileged=true  mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci  


3.2 进入容器修改文件

进入新容器后安装一下vim
apt-get update;apt-get install -y vim ;

  1. 修改主库1 3306
[mysqld]
## 同一局域网内注意要唯一
server-id=3306
## 开启二进制日志功能,可以随便取(关键) 
log-bin=mysql-bin
### muti master muti slave config
# maybe master shift to  slave , slave shift to master
# 如果需要双主切换读写 必须加
log-slave-updates
# increment step is 2
auto-increment-increment=2
# increment  start with 1 起点与另外的主不能重复
auto-increment-offset=1

  1. 修改主库2 33060

### muti master muti slave config
#
#
[mysqld]
server-id=33060
log-bin=mysql-bin

log-slave-updates
auto-increment-increment=2
auto-increment-offset=2
  1. 修改从库1 3307

[mysqld]
## 设置server_id,注意要唯一
server-id=3307
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
#relay_log=edu-mysql-relay-bin
# muti m s config
relay-log=mysql-relay

  1. 修改从库2 33070
[mysqld]
server-id=33070 #服务器唯一ID
log-bin=mysql-slave-bin # 这个是下面的前提
relay-log=mysql-relay #启用

4. 启动 配置

  1. 同样给 两个主库添加 slave 账号 赋权 [REPLICATION SLAVE REPLICATION CLIENT]
  2. 在主库上查看状态 show master status;
  3. 在两个slave change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 2830, master_connect_retry=30;
  4. 修改成对应的主库账号
    需要注意
    如果配置的是docker 的IP 端口处直接写的是容器内的端口3306 而不是映射外部的端口如 33060
    如果之前是一主一从的配置 需要重置master RESET MASTER;和 slave RESET slave; 并且停止stop slave
  5. 然后启动slave start slave, 查看各个状态 SHOW MASTER STATUS; SHOW slave STATUS;
  6. 和一主一从相同,slave 是yes 即成功 , 到这里 两个 主从就好了,但是还需要两个主之间进行主从配置,相互切换
  7. 在 两个master 上面执行 第3步 , 将改成复制对方 ,然后分别 start slave
  8. 再验证是否成功
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木秀林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值