Mysql-主从复制架构的扩展主主-多从

Posted shark_西瓜甜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql-主从复制架构的扩展主主-多从相关的知识,希望对你有一定的参考价值。

在这里插入图片描述

一、配置文件

1. master1

log-bin=/var/log/mysql/mysql-bin
server-id=24

# 保证一致性的
innodb_flush_log_at_trx_commit=1
sync_binlog=1

# 服务器作为从的时候,将来自主服务器二进制日志的更新,也写入到自己的 binlog 中。
# 若果此服务器作为 slave 的同时也作为其他 slave 的 master 的情况下必须设置此参数
log-slave-updates=true

# 主服务上设置不记录到二进制日志的逻辑库名称,一行一个
binlog-ignore-db=mysql

# 应该在从服务器设置不需要进行复制的逻辑库名称,一行一个
replicate-ignore-db=mysql

# 自增列的其实数字
#auto-increment-offset = 1

# 自增列的每次自动增加的步长, 1,2,3,5
#auto-increment-increment = 2

创建二进制存放的目录,并授权

mkdir /var/log/mysql

chown mysql.mysql /var/log/mysql

2 . master 2

log-bin=/var/log/mysql/mysql-bin
server-id=190

# 保证一致性的
innodb_flush_log_at_trx_commit=1
sync_binlog=1

# 服务器作为从的时候,将来自主服务器二进制日志的更新,也写入到自己的 binlog 中。
# 若果此服务器作为 slave 的同时也作为其他 slave 的 master 的情况下必须设置此参数
log-slave-updates=true

# 主服务上设置不记录到二进制日志的逻辑库名称,一行一个
binlog-ignore-db=mysql

# 应该在从服务器设置不需要进行复制的逻辑库名称,一行一个
replicate-ignore-db=mysql

# 自增列的其实数字
#auto-increment-offset = 2

# 自增列的每次自动增加的步长, 2,4,6,8
#auto-increment-increment = 2

创建二进制存放的目录,并授权

mkdir /var/log/mysql

chown mysql.mysql /var/log/mysql

3. slave1

server-id=100

# 保证一致性的
innodb_flush_log_at_trx_commit=1
sync_binlog=1

# 应该在从服务器设置不需要进行复制的逻辑库名称,一行一个
replicate-ignore-db=mysql

4. slave2

server-id=114

# 保证一致性的
innodb_flush_log_at_trx_commit=1
sync_binlog=1

# 应该在从服务器设置不需要进行复制的逻辑库名称,一行一个
replicate-ignore-db=mysql

二、配置语句

1. master1

1.1 给 master2 授权

mster2 的 IP: 192.168.122.190

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.122.190' identified by 'QFedu123@';

1.2 获取自己当前的二进制日志名和位置

这个信息是给自己的 slave(此时,也就是 master2)使用的

mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |      711 |              | mysql            |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

2. master2

1.1 给 master1 授权

master1 的 IP: 192.168.122.24

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.122.24' identified by 'QFedu123@';

1.2 获取自己当前的二进制日志名和位置

这个信息是给自己的 slave(此时,也就是 master1)使用的

mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |      710 |              | mysql            |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

4 在 master1 上配置到 mater2 服务器的信息

mster2 的 IP: 192.168.122.190

mysql> change master to
    -> master_host='192.168.122.190',
    -> master_port=3306,
    -> master_user='repl',
    -> master_password='QFedu123@',
    -> master_log_file='mysql-bin.000002',
    -> master_log_pos=710;
Query OK, 0 rows affected, 2 warnings (0.13 sec)

mysql> start slave;
Query OK, 0 rows affected (0.03 sec)

mysql> show slave status\\G

5 在 master2 上配置到 master1的连接信息

mster1 的 IP: 192.168.122.24


mysql> change master to
    -> master_host='192.168.122.24',
    -> master_port=3306,
    -> master_user='repl',
    -> master_password='QFedu123@',
    -> master_log_file='mysql-bin.000002',
    -> master_log_pos=711;
Query OK, 0 rows affected, 2 warnings (0.22 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\\G

6. slave1

6.1 在 master1 上给 slave1 授权

slave 1 的 IP: 192.168.122.100

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.122.100' identified by 'QFedu123@';
Query OK, 0 rows affected, 1 warning (0.01 sec)

6.2 配置 slave1 到 master1 的连接信息

master1 的 IP: 192.168.122.24

change master to
master_host='192.168.122.24',
master_port=3306,
master_user='repl',
master_password='QFedu123@',
master_log_file='mysql-bin.000002',
master_log_pos=711;

6.3 在 slave1 上启动 slave 并检查状态

mysql> start slave;
Query OK, 0 rows affected (0.03 sec)

mysql> show slave status\\G

7. slave2

7.1 在 master2 上给 slave2 授权

slave 2 的 IP: 192.168.122.114

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.122.114' identified by 'QFedu123@';
Query OK, 0 rows affected, 1 warning (0.01 sec)

7.2 配置 slave2 到 master2 的连接信息

master2 的IP: 192.168.122.190

mysql> change master to
    -> master_host='192.168.122.190',
    -> master_port=3306,
    -> master_user='repl',
    -> master_password='QFedu123@',
    -> master_log_file='mysql-bin.000002',
    -> master_log_pos=710;
Query OK, 0 rows affected, 2 warnings (0.16 sec)

7.3 在 slave2 上启动 slave 并检查状态

mysql> start slave;
Query OK, 0 rows affected (0.03 sec)

mysql> show slave status\\G

以上是关于Mysql-主从复制架构的扩展主主-多从的主要内容,如果未能解决你的问题,请参考以下文章

MySQL双主(主主)架构方案

mysql 主从复制原理

MySQL主从复制

mysql 主从复制原理

mysql主从复制原理

6.2MySQL主从复制