五味杂陈的电车行

admin · 2001-11-01

  

  平常任务中,MySQL数据库是必不成少的存储,此中读写折柳根本是标配,而这当面必要MySQL开启主从同步,构成一主一从、或一主众从的架构,支配主从同步的道理和了解何如实践运用,是一个架构师的必备本领。楼主将正在本总结,看这一篇就够了。

   1、主从同步道理 主从同步架构图(异步同步)

  这是最常睹的主从同步架构。

  

   主从同步流程(异步同步) 主库把数据调动写入binlog文献 从库I/O线程建议dump哀求 主库I/O线程推送binlog至从库 从库I/O线程写入当地的relay log文献(与binlog样子一律) 从库SQL线程读取relay log并从新串行推行一遍,取得与主库类似的数据 甚么是binlog?

  主库每提交一次事件,都市把数据调动,记载到一个二进制文献中,这个二进制文献就叫binlog。需注视:只要写操纵才会记载至binlog,只读操纵是不会的(如select、show语句)。

   binlog的3种样子: statement样子:binlog记载的是实践推行的sql语句 row样子:binlog记载的是转移先后的数据(触及整个列),形如update table_a set col1=value1, col2=value2 ... where col1=condition1 and col2=condition2 ... mixed样子:默许取舍statement样子,只正在必要时改用row样子 binlog样子比较 statement级别:长处是binlog文献小,缺欠是主库的慢sql也会正在从库上再展现一次,极少依附境遇或高低文的函数大概会爆发纷歧概的数据 row级别:缺欠是文献大(一条语句假设触及众行,会缩小n倍),长处是无尚述慢sql成绩,不依附境遇或高低文 为了获取先后转移数据,canal提议运用row级别 主从同步的2种形式 异步同步:默许形式,大概会招致主从切换时数据丧失。由于主库能否co妹妹it与主从同步流程有闭,也不感知。 半同步:高可用计划,较新mysql版本支撑,必要起码1个从库(默许1,详细数目可指定)对写入relay log实行ack,主库才会co妹妹it并把了局前往client。 主从同步流程(半同步) 从库正在衔尾主库时,注脚本人支撑半同步复制 主库也需支撑半同步复制,主库co妹妹it事件前会梗阻恭候起码一个从库写入relay log的ack,直至超时 假设梗阻恭候超时,则主库且自切换回异步同步形式,当起码一个从库的半同步追进步度时,主库再切换至半同步形式 半同步实用处景

  高可用备份:半同步复制,可确保从库与主库的一概性,当主库发作妨碍时,切换到从库不会丧失数据。为了保障安稳性(不因半同步慢而连累主库),寻常不经受营业流量、尽大概疾地ack,只用于同步备份。

   2、主从同步运用处景 普遍场景:线上从库异步同步,高可用备份半同步

   对一概性央求较高的大数据取数需要

  大数据取数大概招致从库cpu运用率飙升、ack变慢,可扶植半同步所需ack数目为1,寻常境况下高可用备份能很疾ack,因而主库会co妹妹it并前往,而大数据取数复制慢极少也无所谓。如许就不会由于大数据取数ack慢而影响主库和营业了。

  

  参考:mysql官方文档

   https://dev.mysql.com/doc/refman/5.7/en/replication-semisync.html https://dev.mysql.com/doc/internals/en/binary-log-overview.html

文章推荐:

cctv怎么看欧洲杯直播表

cba回放中心

nba公众号

cba视频直播网站