深入解析MySQL实战.pdf
《深入解析MySQL实战.pdf》由会员分享,可在线阅读,更多相关《深入解析MySQL实战.pdf(105页珍藏版)》请在咨信网上搜索。
1、MySQL电子书深入MySQL实战快速理解MySQL核心技术业内资深大咖联合出品,详细解读AliSQL在双11等高并发场景下的应用与实践1MySQL电子书3123049688291MySQL高可用MGR8.0 最佳实践MySQL高并发场景实战RDS MySQL Java 开发实战MySQL查询优化MySQL 开发规约实战RDS for MySQL 表和索引优化实战从研发角度深入了解RDS AliSQL内核2020新特性深入MySQL实战微信关注公众号:阿里云数据库第一时间,获取更多技术干货阿里云开发者“藏经阁”海量免费电子书下载34MySQL电子书MySQL高可用MGR8.0 最佳实践(一)M
2、GR是什么(一)MGR插件组成(二)单主模式(二)示例1.MGR的定义MGR是具备强大的分布式协调能力,可用于创建弹性、高可用性、高容错的复制拓扑的一个MySQL插件。2.通讯协议基于Paxos算法的GCS原子广播协议,保证了一条事务在集群内要么在全部节点上提交,要么全部回滚。3.组成员资格MGR内部提供一个视图服务,集群节点之间相互交换各自的视图信息,从而且实现集群整体的稳态。4.数据一致性MGR内部实现了一套不同事务之间修改数据的冲突认证检测机制。在集群的所有节点当中进行一个冲突认证检测,反之,通过冲突认证检测的事务即可提交成功。当一个事务发起提交后,它会通过原子广播协议分发到集群其他Se
3、condary节点。集群的Secondary节点通过冲突检测之后,事务提交成功。在大多数的Secondary节点提交成功之后,会在Primary节点进行提交。反之,如果在冲突认证检测失败,Secondary节点会丢弃这段事务对应的Binlog,Primary节点回滚该事务。上图是一个三节点的MGR实例集群,Member1代表Primary节点,Member2、Member3代表Secondary节点。如上图所示,MGR插件使用 MySQL Server 与 API 接口层以及若干组件,最后由GCS(Group Communication System)协议封装而成。MySQL Server调用
4、MGR插件是基于MySQL现有的主从复制,利用Row格式的Binlog和Gtid等功能实现的集群架构。API接口层复制基于MySQL Server交互的接口集,在逻辑上将MySQL内核与MGR插件隔绝开来。其他组件例如Capture组件,它是负责事务状态在集群内提交或是回滚,以及通过Binlog event广播到其他节点上进行的冲突认证检测进行到哪个阶段。Apply组件代表MGR集群Secondary节点Binlog回放,Recovery组件代表进行崩溃恢复或集群扩容时增量数据的应用。ON表示单主模式,也是默认模式,OFF表示多主模式。如下图所示,在单主模式下(group_replicatio
5、n_single_primary_mode=ON):1该变量在所有组成员中必须设置为相同的值,同一个组中,不能将成员部署在不同模式中。例如,一个成员配置为单主模式,另一个成员配置为多主模式。2该集群具有一个设置为读写模式的主节点,组中的所有其他成员都设置为只读模式(superread-only=ON);MGR架构分为单主模式和多主模式。MGR特性集群架构作者:张彦东Member 1Member 2Member 3executecertifybinlogbinlogcommitcommitcertifyrelay logapplybinlogcommitcertifyrelay logapply
6、ConsensusMySQL ServerAPIs:Capture/Apply/LifecycleApplierCaptureRecoveryReplication Protocol LogicsGroup Communication System APIMySQL Group Replication PluginGroupGroup Communication Engine(Paxos variant)34MySQL电子书MySQL高可用MGR8.0 最佳实践(一)MGR是什么(一)MGR插件组成(二)单主模式(二)示例1.MGR的定义MGR是具备强大的分布式协调能力,可用于创建弹性、高可用
7、性、高容错的复制拓扑的一个MySQL插件。2.通讯协议基于Paxos算法的GCS原子广播协议,保证了一条事务在集群内要么在全部节点上提交,要么全部回滚。3.组成员资格MGR内部提供一个视图服务,集群节点之间相互交换各自的视图信息,从而且实现集群整体的稳态。4.数据一致性MGR内部实现了一套不同事务之间修改数据的冲突认证检测机制。在集群的所有节点当中进行一个冲突认证检测,反之,通过冲突认证检测的事务即可提交成功。当一个事务发起提交后,它会通过原子广播协议分发到集群其他Secondary节点。集群的Secondary节点通过冲突检测之后,事务提交成功。在大多数的Secondary节点提交成功之后,
8、会在Primary节点进行提交。反之,如果在冲突认证检测失败,Secondary节点会丢弃这段事务对应的Binlog,Primary节点回滚该事务。上图是一个三节点的MGR实例集群,Member1代表Primary节点,Member2、Member3代表Secondary节点。如上图所示,MGR插件使用 MySQL Server 与 API 接口层以及若干组件,最后由GCS(Group Communication System)协议封装而成。MySQL Server调用MGR插件是基于MySQL现有的主从复制,利用Row格式的Binlog和Gtid等功能实现的集群架构。API接口层复制基于My
9、SQL Server交互的接口集,在逻辑上将MySQL内核与MGR插件隔绝开来。其他组件例如Capture组件,它是负责事务状态在集群内提交或是回滚,以及通过Binlog event广播到其他节点上进行的冲突认证检测进行到哪个阶段。Apply组件代表MGR集群Secondary节点Binlog回放,Recovery组件代表进行崩溃恢复或集群扩容时增量数据的应用。ON表示单主模式,也是默认模式,OFF表示多主模式。如下图所示,在单主模式下(group_replication_single_primary_mode=ON):1该变量在所有组成员中必须设置为相同的值,同一个组中,不能将成员部署在不同
10、模式中。例如,一个成员配置为单主模式,另一个成员配置为多主模式。2该集群具有一个设置为读写模式的主节点,组中的所有其他成员都设置为只读模式(superread-only=ON);MGR架构分为单主模式和多主模式。MGR特性集群架构作者:张彦东Member 1Member 2Member 3executecertifybinlogbinlogcommitcommitcertifyrelay logapplybinlogcommitcertifyrelay logapplyConsensusMySQL ServerAPIs:Capture/Apply/LifecycleApplierCapture
11、RecoveryReplication Protocol LogicsGroup Communication System APIMySQL Group Replication PluginGroupGroup Communication Engine(Paxos variant)56MySQL电子书3.读写节点通常是引导该组的第一个节点,加入该集群的所有其他只读节点均需要从读写节点同步数据,并自动设置为只读模式。单主模式集群原理流程图多主模式集群原理流程图同步原理示例冲突检测原理Write ClientsServer S1 is the primary.Read ClientsS1S2S3S
12、4S5Write Clients?Server S1 fails.Read ClientsS1S2S3S4S5Write ClientsServer S2 is the new primary.Read ClientsS2S3S4S5(三)多主模式在多主模式下(group_replication_single_primary_mode=OFF):1.所有节点不会区分Primary和Standby角色;2.加入该集群时,与其他组成员兼容的任何节点都被设置为读写模式,并且可以处理写请求,即使它们在集群内是并发执行的;3.如果组复制中的某个节点停止接受写事务,例如,在某个节点意外宕机的情况下,可以将
13、与其连接的客户端重定向或故障转移到处于读写模式的任何其他健康的节点;4.组复制本身不处理客户端故障转移,因此需要使用中间件框架(例如MySQL Router 8.0代理,连接器或应用程序本身)来实现。如上图所示,以一个三节点的MGR集群为例。在单主模式下,当一个事务发起提交,它会通过原子广播协议将事务伴随着Binlog Event广播到其他Secondary节点上。在获得集群大多数节点同意之后,它会进行一个提交。如果通过冲突认证检测,那么该事务最终会在集群当中提交。如果在Secondary节点上面没有通过冲突认证检测,那么Secondary节点丢弃该事务对应的Binlog,Primary节点回
14、滚该事务。如上图所示,在冲突检测时:1.每个事务的Gtid Set和对应的主键Hash值组成事务认证列表,在每个节点的内存当中都维护这样一个冲突检测库。2.Gtid set:标记数据库的快照版本,事务提交前从gtid_execute变量中获取该值;Write ClientsAll server are primaries.Read ClientsS1S2S3S4S5Write Clients?Server S1 fails.Read ClientsS1S2S3S4S5Write ClientsS1s client connects to S3.Read ClientsS2S3S4S5(一)同步
15、原理示例(二)冲突检测原理数据同步原理PrepareBinlogCommitCOMMITDB1DB3TXTXSucceedsERROROKFallsCertifyRollbackPaxosDB2Relay logApplyTXSucceedsFallsCertifyDropPaxosDB2DB1DB3PK HASHdb1.tb1.pk=1db1.tb1.pk=2GTID SETgroup_name:1-10group_name:1-1556MySQL电子书3.读写节点通常是引导该组的第一个节点,加入该集群的所有其他只读节点均需要从读写节点同步数据,并自动设置为只读模式。单主模式集群原理流程图多
16、主模式集群原理流程图同步原理示例冲突检测原理Write ClientsServer S1 is the primary.Read ClientsS1S2S3S4S5Write Clients?Server S1 fails.Read ClientsS1S2S3S4S5Write ClientsServer S2 is the new primary.Read ClientsS2S3S4S5(三)多主模式在多主模式下(group_replication_single_primary_mode=OFF):1.所有节点不会区分Primary和Standby角色;2.加入该集群时,与其他组成员兼容的任
17、何节点都被设置为读写模式,并且可以处理写请求,即使它们在集群内是并发执行的;3.如果组复制中的某个节点停止接受写事务,例如,在某个节点意外宕机的情况下,可以将与其连接的客户端重定向或故障转移到处于读写模式的任何其他健康的节点;4.组复制本身不处理客户端故障转移,因此需要使用中间件框架(例如MySQL Router 8.0代理,连接器或应用程序本身)来实现。如上图所示,以一个三节点的MGR集群为例。在单主模式下,当一个事务发起提交,它会通过原子广播协议将事务伴随着Binlog Event广播到其他Secondary节点上。在获得集群大多数节点同意之后,它会进行一个提交。如果通过冲突认证检测,那么
18、该事务最终会在集群当中提交。如果在Secondary节点上面没有通过冲突认证检测,那么Secondary节点丢弃该事务对应的Binlog,Primary节点回滚该事务。如上图所示,在冲突检测时:1.每个事务的Gtid Set和对应的主键Hash值组成事务认证列表,在每个节点的内存当中都维护这样一个冲突检测库。2.Gtid set:标记数据库的快照版本,事务提交前从gtid_execute变量中获取该值;Write ClientsAll server are primaries.Read ClientsS1S2S3S4S5Write Clients?Server S1 fails.Read Cl
19、ientsS1S2S3S4S5Write ClientsS1s client connects to S3.Read ClientsS2S3S4S5(一)同步原理示例(二)冲突检测原理数据同步原理PrepareBinlogCommitCOMMITDB1DB3TXTXSucceedsERROROKFallsCertifyRollbackPaxosDB2Relay logApplyTXSucceedsFallsCertifyDropPaxosDB2DB1DB3PK HASHdb1.tb1.pk=1db1.tb1.pk=2GTID SETgroup_name:1-10group_name:1-157
20、8MySQL电子书3.事务提交前,数据库中执行了的Gtid集合,随着Binlog中的Event通过原子广播的方式分发到集群的所有节点上进行事务冲突检测。如上图所示,以T1与T2这两条Update语句为例。若T2修改的数据在冲突检测数据库中无匹配记录,则判定为通过冲突检测认证;若T2中的GTID SET包含了冲突检测数据库中相同主键值的GTID SET,则冲突认证检测通过;冲突认证检测通过后,每个节点的冲突检测数据库按照如下规则变更:1.若在冲突检测数据库中无匹配记录,则向其中插入一条新的记录。2.如果有记录,则更新冲突检测数据库中的GTID SET值。若T1修改的数据在冲突检测数据库中有匹配到
21、记录,且T1的GTID SET不包括冲突检测数据库中的GTID SET,则判定为冲突检测不通过。注意:冲突检测不通过时,不会更新认证数据库里的GTID SET。目前业内存在以下问题:1.MGR可确保仅在集群中的大多数节点都已收到事务,并就并发发送的所有事务之间的相对顺序达成一致后才提交事务。相对顺序意味着,在分发到Secondary节点之后,可以不按照Primary节点提交的顺序进行提交,只需保证和集群的一致性即可。2.在流量小的时候不存在任何的性能问题。当流量突增时,如果集群中某些节点的写入吞吐量比其他节点少,尤其是小于Primary节点,则这些节点的数据和Primary节点的数据存在偏差。
22、例如说在集群当中,一个3节点的集群,如果节点之间服务性能存在差异的话,则会存在性能问题。3.在单主模式的集群中,如果发生故障转移,在新的Primary节点可以立刻接受写入请求的情况下,则存在集群内事务一致性的问题。举例说明,当集群扩容时,例如由3节点集群扩容到5节点集群:1.无论采用Clone的方式还是用Xtrabackup做全量数据恢复后,都避免不了在集群扩容期间产生的增量数据以二进制日志的方式来追平;2.若新扩容的节点配置较低,写入吞吐差,则新加入的节点很有可能一直处于Recover的状态,该节点很难达到Online的状态。在进行高可用切换之后,存在事务一致性保证,这是由于Secondar
23、y节点和Primary节点存在追数据的过程,如果数据没有追平,那么业务数据可能会读到旧的数据,用户可以根据group_replication_consistency参数对应的可选值进行调整,总共有5个值如下:1.EVENTUAL(三)冲突检测示例DB2DB1DB3PK HASHT1update tb1set xid=2where PK=1gtid_executed:group_name:1-100gtid_executed:group_name:1-100T2update tb1set xid=3where PK=1T1:update tb1 set xid=1 wherepk=1(snaps
24、hot:group_name:1-100)T2:update tb1 set xid=2 wherepk=1(snapshot:group_name:1-100)certifydb1.tb1.pk=1GTID SETupdategroup_name:1-50PK HASHdb1.tb1.pk=1GTID SETgroup_name:1-101PK HASHT1:update tb1 set xid=1 wherepk=1(snapshot:group_name:1-100)certifydb1.tb1.pk=1GTID SETNo need to updategroup_name:1-101(
25、一)存在的问题(二)事务一致性保证性能分析78MySQL电子书3.事务提交前,数据库中执行了的Gtid集合,随着Binlog中的Event通过原子广播的方式分发到集群的所有节点上进行事务冲突检测。如上图所示,以T1与T2这两条Update语句为例。若T2修改的数据在冲突检测数据库中无匹配记录,则判定为通过冲突检测认证;若T2中的GTID SET包含了冲突检测数据库中相同主键值的GTID SET,则冲突认证检测通过;冲突认证检测通过后,每个节点的冲突检测数据库按照如下规则变更:1.若在冲突检测数据库中无匹配记录,则向其中插入一条新的记录。2.如果有记录,则更新冲突检测数据库中的GTID SET值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 深入 解析 MySQL 实战
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【Stan****Shan】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【Stan****Shan】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。