主从复制—上

MySQL复制

  • 扩展方式: Scale Up ,Scale Out
  • MySQL的扩展 读写分离 复制:每个节点都有相同的数据集
    • 复制的功用: 数据分布、负载均衡读、备份、高可用和故障切换、MySQL升级测试

    一主一从

    notion image
    可靠和可用是区别的 可靠表示系统稳定运行无故障 可用表示系统某一台故障了还能正常提供服务,目前基本上都是99.999% 一年最多允许故障5分钟

    一主多从

    notion image

    主从复制原理

    notion image
    • 主节点: dump Thread:为每个Slave的I/O Thread启动一个dump线程,用于向其发送binary log events
    • 从节点: I/O Thread:向Master请求二进制日志事件,并保存于中继日志 SQL Thread:从中继日志中读取日志事件,在本地完成重放
    • 跟复制功能相关的文件:
      • master.info:用于保存slave连接至master时的相关信息,例如账号、密码、服务器地址等
      • relay-log.info:保存在当前slave节点上已经复制的当前二进制日志和本地replay log日志的对应关系

    MySQL垂直分区

    notion image
    没有多表查询的需求,而且表的数据较大的情况下,可以分库或分服务器操作,相当于多个人干活

    MySQL水平分片(Sharding)

    notion image
    可以将表的数据分开存放,比如100W的数据,可以分3张表,1-40,40-80,80-100,分国家城市存放相关数据,也可以定义其他的算法来存放

    对应shard中查询相关数据

    notion image
    数据拆分后,确保分片管理器,可靠或高可以

    主从特点

    • 主从复制特点: 异步复制(默认是异步,异步性能好) 主从数据不一致比较常见
    • 复制架构: Master/Slave, Master/Master, 环状复制 一主多从 从服务器还可以再有从服务器 一从多主:适用于多个不同数据库
    • 复制需要考虑二进制日志事件记录格式 STATEMENT(5.0之前) ROW(5.1之后,推荐) MIXED

    MySQL复制模型

    notion image
    1、一主一从,目前推荐使用 2、一主多从,目前推荐使用 3、一主一从多从,中间的从服务器相当于中继的作用,减少主服务的压力,目前推荐使用 4、多主一从,简单来说,两个主服务使用一个从服务,如,可以根据两个主不同的数据库,共一个从服务器 5、多主,主主,可以这么用,只有一个主节点可以写,另一个主节点当备份用或读操作,高可用 6、环形复制,需要避免循环复制的问题,

    一主一从

    主节点配置
    从节点配置
    复制架构中应该注意的问题 1、限制从服务器为只读 在从服务器上设置read\_only=ON 注意:此限制对拥有SUPER权限的用户均无效 阻止所有用户, 包括主服务器复制的更新 mysql> FLUSH TABLES WITH READ LOCK; 2、RESET SLAVE在从服务器清除master.inforelay-log.info, relay log ,开始新的relay log 注意:需要先STOP SLAVE RESET SLAVE ALL 清除所有从服务器上设置的主服务器同步信息 如:PORT, HOST, USER和 PASSWORD 等 3、sql\_slave\_skip\_counter = N 从服务器忽略几个主服务器的复制事件,global变量 4、如何保证主从复制的事务安全 参看https://mariadb.com/kb/en/library/server-system-variables/ 在master节点启用参数: sync\_binlog=1 每次写后立即同步二进制日志到磁盘,性能差 如果用到的为InnoDB存储引擎: innodb\_flush\_log\_at\_trx\_commit=1 每次事务提交立即同步日志写磁盘,设置2性能是比较好的 innodb\_support\_xa=ON 默认值,分布式事务MariaDB10.3.0废除 sync\_master\_info=# #次事件后master.info同步到磁盘在slave节点启用服务器选项:skip\_slave\_start=ON 不自动启动slave,默认只启一次,若后续需要手工启动,改此项即可在slave节点启用参数(提供性能的) sync\_relay\_log=# #次写后同步relay log到磁盘 sync\_relay\_log\_info=# #次事务后同步relay-log.info到磁盘
    如果主节点已经运行了一段时间,且有大量数据时,如何配置并启动slave节点 通过备份恢复数据至从服务器 复制起始位置为备份时,二进制日志文件及其POS 如果要启用级联复制,需要在从服务器启用以下配置
    1、若从服务器关机或在宕机,排查恢复后,从服务会自动向主服务同步时间的 验证
    2、新增一台从服务,两种场景 a) 对新建的主从服务,从服务器,从头开始复制就可以了,较为干净的,新的数据库情况下 b) 若主服务运行过一段时间了,二进制日志较多的情况下,先将主服务先完全备份,从服务在进行恢复,配置主服务二进制日志位置即可
    3、若主服务停了,从服务60秒重自动从连,重连次数相当于1天,这里从服务可以定义时间和次数
    4、若主服务停了,使用一个从节点来当主节点,建议使用同步数据和主节点
    级联复制 ABC3台主机 A>B是主从,B>C是主从关系
    忽略写入数据

    转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 438803792@qq.com
    Loading...