浅谈MYSQL之级联复制


级联复制

  • 原理:级联结构就是通过减少直接从属于 Master 的 Slave 数量,减轻 Master 的压力,分散复制请求,从而提高整体的复制效率。

  • 级联复制的应用场景

    • 跨机房复制,A—>B–|-->C(C跨机房),A挂,B提升为主,此时C不用做change master,缺点是复制延迟大,无法避免
    • 库的拆分,某库压力很大,可以使用级联复制将其独立出去
  • 中间从服务器需要注意的参数设置

  • 缺点:

    • 这种架构可以降低主库的负载,但是存在的问题是由于存在了多级复制,而主从复制由于是异步复制存在延迟问题,故最底层的从库会延迟更大,并且延迟随着级联层次的增大而增大,故如果读服务不能容忍太大的数据延迟,则不能采用这种架构模式。
[mysqld]
log_bin                           / 开启二进制日志
log_slave_updates
/ log-slave-updates这个参数用来配置从服务器的更新是否写入二进制日志,这个选项默认是不打开的,
/ 但是,如果这个从服务器B是 服务器A的从服务器,同时还作为服务器C的主服务器,
/ 那么就需要开发这个选项,这样它的从服务器C才能获得它的二进制日志进行同步操作

实验:实现级联复制

结构图如下

  • 准备工作

    • 三台干净环境的主机
    • 时间同步完成
    • 防火墙关闭
    • SELINUX关闭
  • 设置主MASTER配置
vim /etc/my.cnf
[mysqld]
server_id=1    / IP地址最后一位,局域网唯一ID
log-bin        / 二进制日志
systemctl start mariadb
/  创建复制权限账户
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'repliuser'@'172.20.%.%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> SHOW MASTER LOGS;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       401 |
+--------------------+-----------+
1 row in set (0.00 sec)
  • 二级级联机器172.20.54.2配置
vim /etc/my.cnf
[mysqld]
server_id=2
log-bin
log-slave-updates=1      / 从服务器写入二进制日志参数MariaDB [(none)]> CHANGE MASTER TO->   MASTER_HOST='172.20.54.1',->   MASTER_USER='repliuser',->   MASTER_PASSWORD='123456',->   MASTER_PORT=3306,->   MASTER_LOG_FILE='mariadb-bin.000001',->   MASTER_LOG_POS=401,->   MASTER_CONNECT_RETRY=10;
Query OK, 0 rows affected (0.03 sec)MariaDB [(none)]> START SLAVE;
Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 172.20.54.1Master_User: repliuserMaster_Port: 3306Connect_Retry: 10Master_Log_File: mariadb-bin.000001Read_Master_Log_Pos: 401Relay_Log_File: mariadb-relay-bin.000002Relay_Log_Pos: 531Relay_Master_Log_File: mariadb-bin.000001Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 401Relay_Log_Space: 827Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1
1 row in set (0.00 sec)ERROR: No query specified
/ 给三号机器建立访问账号权限
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'repliuser'@'172.20.54.%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec).
/ 查看二进制日志 POS点
MariaDB [(none)]> SHOW MASTER LOGS;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       245 |
+--------------------+-----------+
  • 第三台机器设置
vim /etc/my.cnf
[mysqld]
server-id=3systemctl start mariadbMariaDB [(none)]> CHANGE MASTER TO->   MASTER_HOST='172.20.54.2',->   MASTER_USER='repliuser',->   MASTER_PASSWORD='123456',->   MASTER_PORT=3306,->   MASTER_LOG_FILE='mariadb-bin.000001',->   MASTER_LOG_POS=245,->   MASTER_CONNECT_RETRY=10;
Query OK, 0 rows affected (0.03 sec)MariaDB [(none)]> START SLAVE;MariaDB [(none)]> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 172.20.54.2Master_User: repliuserMaster_Port: 3306Connect_Retry: 10Master_Log_File: mariadb-bin.000001Read_Master_Log_Pos: 402Relay_Log_File: mariadb-relay-bin.000003Relay_Log_Pos: 531Relay_Master_Log_File: mariadb-bin.000001Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 1Exec_Master_Log_Pos: 402Relay_Log_Space: 1270Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 2
1 row in set (0.00 sec)ERROR: No query specified
  • 测试过程
/ 在1号master主机
MariaDB [(none)]> CREATE DATABASE TESTDB1;
Query OK, 1 row affected (0.01 sec)MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| TESTDB1            |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)
/ 2号级联SLAVEMariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| TESTDB1            |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)
/ 3号SLAVE机器MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| TESTDB1            |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)
  • 测试完成

浅谈MYSQL之级联复制(附带实验)相关推荐

  1. mysql怎么在海量数据上ddl_浅谈MySQL Online DDL(中)

    本文首发于个人微信公众号<andyqian>,期待你的关注! 前言 在上一篇文章中<浅谈MySQL Online DDL (上)>中,我们谈到了MySQL Online DDL ...

  2. 浅谈mysql主从复制的高可用解决方案

    1.熟悉几个组件(部分摘自网络) 1.1.drbd      -- DRBD(Distributed Replicated Block Device),DRBD号称是 "网络 RAID&qu ...

  3. 浅谈mysql的主键和索引

    在上一篇文章<count(1).count(*).count(字段)哪个更靠谱>中,我们提到过主键是优化不了count的查询效率的,需要建索引才可以,那么,是不是意味着主键的效率还不如一般 ...

  4. 支付宝的数据库是MySQL变种_浅谈MySql的储存引擎(表类型)

    浅谈mysql的存储引擎(表类型) 什么是MySql数据库 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库, ...

  5. 【转载】运维角度浅谈MySQL数据库优化

     运维角度浅谈MySQL数据库优化 2015-06-02 14:22:02 标签:mysql优化   mysql分库分表分区 mysql读写分离 mysql主从复制 原创作品,允许转载,转载时请务必以 ...

  6. 浅谈 MySQL 新的身份验证插件 caching_sha2_password

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 介绍 从 MySQL 8.0.4 开始,MySQL ...

  7. 浅谈MySQL存储引擎-InnoDBMyISAM

    浅谈MySQL存储引擎-InnoDB&MyISAM 存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式 ...

  8. 浅谈 MySQL 子查询及其优化

    2019独角兽企业重金招聘Python工程师标准>>> 使用过oracle或者其他关系数据库的DBA或者开发人员都有这样的经验,在子查询上都认为数据库已经做过优化,能够很好的选择驱动 ...

  9. mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

最新文章

  1. ironpython 教程_「ironpython」VS2017 IronPython做界面
  2. IDEA使用switch传入String编译不通过
  3. QA seven's blog
  4. what is IOC
  5. ssm提交post_我用spring mvc做,用post方式提交,后台获取不到参数值,用get方式就可以,什么问题...
  6. [Abp 源码分析]后台作业与后台工作者
  7. 用宏定义写出swap(x,y)
  8. 【转】浅谈TDD、BDD、ATDD、DDD的区别
  9. PIX525故障一例,求解
  10. python编程(webpy + gunicorn + nginx部署)
  11. python之join()用法
  12. Weka数据挖掘平台
  13. git diff与git status
  14. ISO 18000-6c 访问标签--应用程序访问操作ISO 18000-6C标签的方法
  15. 四川大学计算机学院2020转专业,四川大学化学学院2020年本科生转专业工作实施方案...
  16. 报错: com.alibaba.druid.pool.DruidDataSource : abandon connection, owner thread
  17. 【Google面试题】有四个线程1、2、3、4同步写入数据…C++11实现
  18. 2020机修钳工(中级)模拟考试及机修钳工(中级)作业模拟考试
  19. 【Midjourney教程】设计麻瓜也能10分钟上架一套表情包
  20. 宇视网络视频录像机升级步骤

热门文章

  1. UE4移动组件详解(二)——移动同步机制
  2. Vue实例基础5 (vue 条件渲染与列表渲)
  3. java程序是怎么执行的
  4. 堆栈的区别及增长方向
  5. @Aspect注解使用场景
  6. GOM传奇引擎提示登陆器密码和网关密码不相同
  7. rabbitmq默认guest无法登录的问题解决
  8. C#中的ulong关键字
  9. MySQL第三方客户端工具
  10. 在idea中如何导入一个已有的项目