mysql 多级主从_mysql主从复制-二级主从

# mysql主从复制-二级主从

> master1和slave1已经处于主从关系, 现在希望加一个slave2作为slave1的从库,并设置延迟复制。 这样做有如下几个好处:

> 1. 不会增加master1服务器压力

> 2. 能保证slave1的及时同步速度

> 3. 保证master1数据误操作时可以从slave2快速回滚

## 创建数据库

``` linux

# 对应master1, 主库

docker run --name mysql1 -d \

-v /Users/chenpeng/docker/mysql1/data:/var/lib/mysql \

-v /Users/chenpeng/docker/mysql1/logs:/var/log/mysql/ \

-v /Users/chenpeng/docker/mysql1/conf:/etc/mysql/conf.d \

-e MYSQL_ROOT_PASSWORD=123456 \

-e TZ=Asia/Shanghai \

-p 3306:3306 \

mysql:5.7.19 \

--character-set-server utf8mb4 --collation-server utf8mb4_general_ci

```

``` linux

# 对应slave1, 一级从库

docker run --name mysql2 -d \

-v /Users/chenpeng/docker/mysql2/data:/var/lib/mysql \

-v /Users/chenpeng/docker/mysql2/logs:/var/log/mysql/ \

-v /Users/chenpeng/docker/mysql2/conf:/etc/mysql/conf.d \

-e MYSQL_ROOT_PASSWORD=123456 \

-e TZ=Asia/Shanghai \

-p 3307:3306 \

mysql:5.7.19 \

--character-set-server utf8mb4 --collation-server utf8mb4_general_ci

```

``` linux

# 对应slave2, 二级从库, 主库是slave1

docker run --name mysql3 -d \

-v /Users/chenpeng/docker/mysql3/data:/var/lib/mysql \

-v /Users/chenpeng/docker/mysql3/logs:/var/log/mysql/ \

-v /Users/chenpeng/docker/mysql3/conf:/etc/mysql/conf.d \

-e MYSQL_ROOT_PASSWORD=123456 \

-e TZ=Asia/Shanghai \

-p 3308:3306 \

mysql:5.7.19 \

--character-set-server utf8mb4 --collation-server utf8mb4_general_ci

```

## 编辑配置文件

``` linux

# 三个my.cnf配置文件基本差不多

[mysqld]

log-bin=mysql-bin

# mysql1[server-id]=1, mysql2[server-id]=2, mysql3[server-id]=3

server-id=1

gtid_mode=ON

enforce-gtid-consistency=ON

slave-skip-errors = 1032,1062

skip_slave_start=1

expire_logs_days=7

# 只有mysql2需要开启

# log_slave_updates=ON

## 配置完成后, 需要重启下mysql服务

```

## 同步账号设置

``` linux

# mysql1执行

grant replication slave on *.* to 'slave2'@'172.17.0.1' identified by '123456';

# mysql2执行

change master to master_host='172.17.0.1', master_user='slave2',master_port=3306,master_password='123456';

start slave;

grant replication slave on *.* to 'slave3'@'172.17.0.1' identified by '123456';

# mysql3执行

change master to master_host='172.17.0.1', master_user='slave3',master_port=3307,master_password='123456';

start slave;

```

## 总结

一个主从同步正常情况下,从库同步数据是不会产生binlog日志,所以没有办法再成为其他从库的主库, 需要在配置文件添加 `log_slave_updates=ON` 来开启binlog日志, 这就是二级复制的关键, 在多级复制下, 也是这样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值