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

文章目录

    • 1. 前言
    • 2. 资源分布
    • 3. 开始配置
      • 3.1 创建镜像
      • 3.2 进入容器修改文件
    • 4. 启动 配置

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. 再验证是否成功

你可能感兴趣的:(MySQL 主从复制搭建 双主双从 主从切换 环境搭建)