Mysql主从级联复制

Posted 闫世成

tags:

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

场景1

  如果主节点已经运行了一段时间,且有大量数据时,如何配置并启动slave节点

    通过备份恢复数据至从服务器
·    复制起始位置为备份时,二进制日志文件及其POS:

   Mater 设置

  1) 修改配置文件

  2) 备份出数据库,会自动刷新日志,查看bin 日志

[[email protected] ~]# mysqldump -A -F --single-transaction --master-data=1 > /root/all.sql

MariaDB [(none)]> show binary logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |      2200 |
| mariadb-bin.000002 |       245 |
+--------------------+-----------+
2 rows in set (0.00 sec)

  3) 备份完成之后 随便创建点东西 或者空数据库

  Slave 设置

    1) 导入 Master 备份的数据

[[email protected] ~]# mysql < /root/all.sql 

    2) 链接数据库(因为导出的数据库里面已经有了,要指定的log,在此就不需要指定)

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST=‘172.16.0.40‘,MASTER_USER=‘alave‘,MASTER_PASSWORD=‘123456‘;
MariaDB [(none)]> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> show slave statusG

  

从服务器添加只读属性

  1、限制从服务器为只读

    在从服务器上设置readonly=ON

    注意:此限制对拥有SUPER权限的用户均无效

    阻止所有用户,包括主服务器复制的更新

    mysql> FLUSH TABLES WITH READ LOCK;

  

  1) 查看是否开启

MariaDB [(none)]> show variables like ‘read%‘;
+----------------------+--------+
| Variable_name        | Value  |
+----------------------+--------+
| read_buffer_size     | 131072 |
| read_only            | OFF    |
| read_rnd_buffer_size | 262144 |
+----------------------+--------+

  2) 修改配置文件开启read_only

 

  3) 查看是否开启

MariaDB [(none)]> show variables like ‘read%‘;
+----------------------+--------+
| Variable_name        | Value  |
+----------------------+--------+
| read_buffer_size     | 131072 |
| read_only            | ON     |
| read_rnd_buffer_size | 262144 |
+----------------------+--------+

  

 级联复制

如果要启用级联复制,需要在从服务器启用以下配置
  [mysqld]
  log_slave_updates

 实验:

  Mastr 配置和之前一样不变,导出数据库.等(注: 同步之前查看log ops)

  中间从服务器,导入sql,并且启动,进行同步,配置文件需要先加入以下信息

 [mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
innodb_file_per_table
server_id=2
read-only
log_slave_updates
log_bin

  Csalve配置

    1) 配置文件

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=3
read-only

    2) 链接(用户名可以Master 同步过去的用户<不行再创建一个在中间的从服务器>,服务器地址填中间从服务器)

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST=‘172.16.0.41‘,MASTER_USER=‘vvve‘,MASTER_PASSWORD=‘123456‘,MASTER_LOG_FILE=‘mariadb-bin.000001‘,MASTER_LOG_POS=517706;
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show slave statusG

  

 

  

以上是关于Mysql主从级联复制的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL 完全备份主从复制级联复制半同步

MYSQL数据库中的主从级联复制的实现

从理论到实战,彻底搞懂MySQL主从复制原理

MySQL主从复制

第五章:MySQL主从复制

MySQL级联复制