收藏 分销(赏)

Percona-XtraDB-Cluster-运维实践.ppt

上传人:胜**** 文档编号:758360 上传时间:2024-03-06 格式:PPT 页数:28 大小:1.10MB
下载 相关 举报
Percona-XtraDB-Cluster-运维实践.ppt_第1页
第1页 / 共28页
Percona-XtraDB-Cluster-运维实践.ppt_第2页
第2页 / 共28页
Percona-XtraDB-Cluster-运维实践.ppt_第3页
第3页 / 共28页
Percona-XtraDB-Cluster-运维实践.ppt_第4页
第4页 / 共28页
Percona-XtraDB-Cluster-运维实践.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、PERCONA XTRADB CLUSERT 运维实践运维实践SOHU 徐国强徐国强XtraDB Cluster 特征n n1 1,同步复制同步复制同步复制同步复制n n 复制动作是同步的,复制动作是同步的,实际上数据并不是完全同步实际上数据并不是完全同步的的,数据的同步存在一个间隙,只能称为虚同步。,数据的同步存在一个间隙,只能称为虚同步。n n2 2,多多多多mastermastern n 每一个节点都可以作为每一个节点都可以作为mastermaster,并将改动发送,并将改动发送到其他节点。到其他节点。n n3 3,并行复制并行复制并行复制并行复制n n 复制可以指定多个线程,并且复制是

2、以事务为复制可以指定多个线程,并且复制是以事务为单位的,多个事务同时并行推送到所有集群节点。单位的,多个事务同时并行推送到所有集群节点。n n4 4,新节点自动部署新节点自动部署新节点自动部署新节点自动部署n n 只需要修改合适的参数,启动新节点的只需要修改合适的参数,启动新节点的mysqldmysqld进程并成功加入集群后,数据完全自动的部署到进程并成功加入集群后,数据完全自动的部署到新节点。新节点。n n5 5,数据一致性,数据一致性,数据一致性,数据一致性n n 严格的数据一致严格的数据一致n n6 6,高可用性,高可用性,高可用性,高可用性n n 单点故障不影响可用性单点故障不影响可用

3、性n n7 7,与传统,与传统,与传统,与传统mysqlmysql几乎完全兼容几乎完全兼容几乎完全兼容几乎完全兼容n n数据可以直接使用不需要任何转换,程序上也仅仅事务处数据可以直接使用不需要任何转换,程序上也仅仅事务处理机制有变化,并且还可以完全规避理机制有变化,并且还可以完全规避XtraDB Cluster 缺陷n n1 1,默认工作在,默认工作在InnoDBInnoDB引擎表上,因此对其他引擎的表支持的很差,甚至根引擎表上,因此对其他引擎的表支持的很差,甚至根本不支持,所以不要考虑在本不支持,所以不要考虑在PXCPXC上使用上使用MyISAMMyISAM或者其他的存储引擎或者其他的存储引

4、擎n n2 2,所有的表都必须要有主键,所有的表都必须要有主键n n 3 3,不支持的操作:,不支持的操作:LOCK/UNLOCK TABLESLOCK/UNLOCK TABLES、lock functions(GET_LOCK(),lock functions(GET_LOCK(),RELEASE_LOCK().)RELEASE_LOCK().)n n 4 4,query logquery log日志不能存放在表里面,必须存放在文件日志不能存放在表里面,必须存放在文件n n 6 6,由于集群是基于乐观的并发控制(,由于集群是基于乐观的并发控制(optimistic concurrency c

5、ontrol optimistic concurrency control),事务冲突的情况可能会在),事务冲突的情况可能会在commitcommit阶段发生阶段发生n n7 7,不支持,不支持XAXA事务,因为事务,因为XAXA事务有可能在事务有可能在commitcommit的时候出现异常发生的时候出现异常发生rollbackrollbackn n8 8,整个集群的吞吐量,整个集群的吞吐量/性能取决于最慢的那个节点(成本)性能取决于最慢的那个节点(成本)n n9 9,最小建议的集群节点数为,最小建议的集群节点数为3 3,否则很容易产生脑裂(成本),否则很容易产生脑裂(成本)n n1010,加

6、入新节点,开销大,有多少个节点就有多少重复的数据,加入新节点,开销大,有多少个节点就有多少重复的数据n n1111,不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上,不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上XtraDB Cluster 性能-测试环境测试环境n n1 1,PXC PXC 和和 Master-Slave Master-Slave 均为均为3 3个节点个节点n n2 2,SASSAS 、SSD SSD 磁盘磁盘n n3 3,Percona XtraDB Cluster 5.5.28Percona XtraDB Cluster 5.5.28n n4 4,P

7、ercona Sever 5.5Percona Sever 5.5n n5 5,Oracle Linux 6.3Oracle Linux 6.3 2.6.39-200.24.1.el6uek.x86_642.6.39-200.24.1.el6uek.x86_64n n6 6,DELL R710 DELL R710 n nCPU Xeon 5620 CPU Xeon 5620*2 2n nMemory 64GBMemory 64GBn n7 7,SysbenchSysbenchn n8 8,haproxy haproxy 和和 LVSLVSXtraDB Cluster 性能LVS LVS 只读测

8、试只读测试可以看到随着并发线程数的增加,三节点的只读操作:可以看到随着并发线程数的增加,三节点的只读操作:1,在使用,在使用SSD磁盘的情况下,磁盘的情况下,PXC与与MS结构的查询性能基本一致,偶有误差也基本保持在一个数量级结构的查询性能基本一致,偶有误差也基本保持在一个数量级上;上;SAS盘时,盘时,PXC性能会弱小一些性能会弱小一些2,从响应时间上来看,也差不多是这个情况,从响应时间上来看,也差不多是这个情况3,但是在实际的应用中,如果达到了,但是在实际的应用中,如果达到了100个实时活动的连接,那么系统就已经非常繁忙了,个实时活动的连接,那么系统就已经非常繁忙了,MasterSlave

9、结构,如果有写入操作,那么一致性就很难保证结构,如果有写入操作,那么一致性就很难保证XtraDB Cluster 性能LVS LVS 单节点写测试单节点写测试 PXC的写入性能是公开的表示了会比较差,这个差的比例约会低下的写入性能是公开的表示了会比较差,这个差的比例约会低下1/4,但是如果使用了,但是如果使用了SSD磁盘,磁盘,则会有较大的改观,但是依然会保持比较差的总体状况,具体原因后续会有分析:则会有较大的改观,但是依然会保持比较差的总体状况,具体原因后续会有分析:1,PXC整体上落后整体上落后MS结构结构2,响应时间也是同样落后一些,响应时间也是同样落后一些3,SSD磁盘会带来相当大的提

10、升磁盘会带来相当大的提升XtraDB Cluster 性能业务模拟测试业务模拟测试n n1 1,同时启,同时启,同时启,同时启2 2个个个个sysbenchsysbench,一个只读,另一个只写,一个只读,另一个只写,一个只读,另一个只写,一个只读,另一个只写n n2 2,写请求只发送到某一个固定节点,读请求负载均衡到集群环境的所有节点,写请求只发送到某一个固定节点,读请求负载均衡到集群环境的所有节点,写请求只发送到某一个固定节点,读请求负载均衡到集群环境的所有节点,写请求只发送到某一个固定节点,读请求负载均衡到集群环境的所有节点n n3 3,2 2个个个个sysbenchsysbench的读

11、写请求数比例设置约为的读写请求数比例设置约为的读写请求数比例设置约为的读写请求数比例设置约为9 9:1 1,保证测试时间约等于或大于,保证测试时间约等于或大于,保证测试时间约等于或大于,保证测试时间约等于或大于1 1小时小时小时小时n n4 4,数据量为,数据量为,数据量为,数据量为1.51.5亿亿亿亿nn6 6,依次对,依次对,依次对,依次对pxc/ms,lvs/haproxypxc/ms,lvs/haproxy各种环境进行测试,共各种环境进行测试,共各种环境进行测试,共各种环境进行测试,共4 4项:项:项:项:pxc-ssd-lvs,pxc-ssd-haproxy,ms-ssd-lvs,m

12、s-ssd-haproxypxc-ssd-lvs,pxc-ssd-haproxy,ms-ssd-lvs,ms-ssd-haproxyn n7 7,msms测试导致主备不同步,暂时忽略其对测试的影响。需等待测试导致主备不同步,暂时忽略其对测试的影响。需等待测试导致主备不同步,暂时忽略其对测试的影响。需等待测试导致主备不同步,暂时忽略其对测试的影响。需等待msms同步后再进行下一项测试同步后再进行下一项测试同步后再进行下一项测试同步后再进行下一项测试n n8 8,分别对集群环境中存在单节点、,分别对集群环境中存在单节点、,分别对集群环境中存在单节点、,分别对集群环境中存在单节点、2 2节点、节点、

13、节点、节点、3 3节点测试节点测试节点测试节点测试3 3组组组组n n9 9,每组测试,每组测试,每组测试,每组测试5 5轮。每秒请求数计算:轮。每秒请求数计算:轮。每秒请求数计算:轮。每秒请求数计算:SUM(SUM(读请求数读请求数读请求数读请求数+写请求数写请求数写请求数写请求数)/SUM()/SUM(读执行时间读执行时间读执行时间读执行时间+写执行时写执行时写执行时写执行时间间间间),GROUP BY),GROUP BY 测试项测试项测试项测试项XtraDB Cluster 性能业务模拟测试业务模拟测试如果排除延迟问题,如果排除延迟问题,MS确实比确实比PXC的性能更好(但是实际情况下,

14、的性能更好(但是实际情况下,MS的延迟已的延迟已经非常严重,测试了一小时,基本上延迟越来越大)经非常严重,测试了一小时,基本上延迟越来越大)基于Galera实现n n Percona Percona的这个的这个ClusterCluster实际上就是基实际上就是基于于GaleraGalera实现,添加实现,添加了一些了一些mysqlmysql的参数,的参数,并调用并调用GaleraGalera的接口,的接口,这是整体的工作流程:这是整体的工作流程:n n1 1,客户端提交,客户端提交MySQLMySQL数据库访问请数据库访问请求求n n2 2,通过,通过wsrepAPIwsrepAPI调调用用G

15、aleraGalera将数据变化将数据变化复制到集群中其他节复制到集群中其他节点点数据复制流程(一)n n 描述两个节点间的数描述两个节点间的数据复制。据复制。n n要点:要点:1 1,只有当发生,只有当发生CommitCommit操作时,才操作时,才 发送数据验证请求到其他节点。发送数据验证请求到其他节点。2 2,传输,传输/返回验证数据时间和其他返回验证数据时间和其他 节点的数据验证时间,将影响到当节点的数据验证时间,将影响到当 前数据操作节点真正前数据操作节点真正commitcommit的时的时 刻。刻。3 3,其他节点只要验证成功了,就,其他节点只要验证成功了,就 会返回成功的信号,即

16、使当前数据会返回成功的信号,即使当前数据 并没有真正的写入当前节点,这段并没有真正的写入当前节点,这段 时间内,将造成数据的不一致。时间内,将造成数据的不一致。数据复制流程(二)数据复制流程(三)n n 根据前面描述的数据复根据前面描述的数据复制流程,可以得到这样的制流程,可以得到这样的结论:结论:n n 当多个事务同时操作相当多个事务同时操作相同的数据资源时,这个资同的数据资源时,这个资源在集群中是不受任何一源在集群中是不受任何一个个SessionSession影响的,直到影响的,直到有一个有一个SessionSession对这个数对这个数据资源进行了成功的据资源进行了成功的CommitCo

17、mmit操作,这时,其操作,这时,其他的他的SessionSession的所有操作的所有操作实际上已经不可能成功了,实际上已经不可能成功了,当其他的事务尝试做当其他的事务尝试做CommitCommit,会直接返回一,会直接返回一个因为个因为deadlockdeadlock事务失败事务失败回滚的信息。回滚的信息。n n 这与这与mysqlmysql默认的机制默认的机制不同,在不同,在mysql innodbmysql innodb默认的情况下,当我们在默认的情况下,当我们在其他事务中对某个其他事务中对某个idid的数的数据进行据进行updateupdate;此时我们;此时我们发起一个事务对这个数

18、据发起一个事务对这个数据进行需要获得排它锁的操进行需要获得排它锁的操作,操作将会进行等待,作,操作将会进行等待,直到超时失败或者现在持直到超时失败或者现在持有排它锁的事务提交,当有排它锁的事务提交,当前事务将继续。前事务将继续。n n (注意:这里的每个注意:这里的每个SessionSession来源于不同节点,单节点的死来源于不同节点,单节点的死锁机制遵循锁机制遵循mysql innodbmysql innodb默认默认的工作模式的工作模式)那么上图的session中,那些会成功呢?只有SessionB节点状态变化节点变化过程中用到的部分术语:SST(State Snapshot Trans

19、fer)用于节点间传送数据,发生在节点初始化,或者节点故障需要全部重置数据的时候,相当于整个copy一份数据到新节点,这个过程影响非常大,会造成Donor节点的无法访问IST(Increment Snapshot Transfer)用于节点间传送数据,发生在节点初始化,或者节点故障,但是能够从galera.dat中获得增量同步点的情况,仅仅做必要的增量同步,是最理想的数据恢复方法。Donor 当发生SST时,集群中被选中作为数据源的节点,可以手动指定也可以自动选择,被选中为Donor的节点可以进行Select,但是新的数据变化情况无法被应用,会被缓存在当前节点的cache文件中。当SST过程结

20、束,Donor节点将变为JOINED状态,并应用这些缓存的内容,从而返回SYNCED状态。新节点加入流程名词解释n nGlobal Transcation IDGlobal Transcation ID(GTIDGTID)当通过客户端对数据库进行有顺序的一系列修改时(不一定仅仅当通过客户端对数据库进行有顺序的一系列修改时(不一定仅仅是数据库),集群中所有的节点都对这个修改动作进行同步。在是数据库),集群中所有的节点都对这个修改动作进行同步。在wsrep APIwsrep API中,通过中,通过GTIDGTID对这个修改进行标识,对这个修改进行标识,从而在所有节从而在所有节点达到一致。点达到一致

21、。GTIDGTID由俩部分组成,一个标识对象的由俩部分组成,一个标识对象的UUIDUUID,和一,和一个标识这次修改状态的个标识这次修改状态的sequencesequence(对应每一个动作),例如:(对应每一个动作),例如:45eec521-2f34-11e0-0800-45eec521-2f34-11e0-0800-2a36050b826b:945305863042a36050b826b:94530586304n nState Snapshot TransferState Snapshot Transfer(SSTSST)节点初始化节点初始化/重做方法,使用指定的重做方法,使用指定的sst

22、sst策略,来做数据的全量同策略,来做数据的全量同步。步。n nIncremental State Transfer(IST)Incremental State Transfer(IST)Galera 2.x Galera 2.x 开始支持。开始支持。当一个节点加入,他当前的当一个节点加入,他当前的GUIDGUID与现集群相同,且缺失的数据能够与现集群相同,且缺失的数据能够在在donordonor的的WritesetWriteset的的cachecache中找到,则可以进行中找到,则可以进行ISTIST,否则只能全部初始化数据,进行,否则只能全部初始化数据,进行SST(State Snapsh

23、ot Transfer)SST(State Snapshot Transfer)。SST方式的选择n nMySQL Dump需要锁定需要锁定DonorDonor节点,无法提供访问节点,无法提供访问速度慢速度慢n nRsync需要锁定需要锁定DonorDonor节点,无法提供访问节点,无法提供访问速度快速度快n nXtrabackup只需要短时间锁定只需要短时间锁定DonorDonor,基本不影响访问,基本不影响访问速度较快速度较快Rolling Schema Upgrade Schema Upgrade指的是任何修改数据库结构的DDL语句,这种语句不具有事务性。Total Order Isol

24、ation(TOI)默认的工作方式,在这种模式下,DDL语句的表现将和在一个单机数据库上一样,将会锁定整个集群库。并且这个语句将会同时发 送到所有的集群节点去执行。Rolling Schema Upgrade(RSU)wsrep是通过设置wsrep_OSU_method参数,DDL语句将会在当前节点执行,并且在执行过程中不锁 定其他节点,当这个节点的DDL操作完成,将会应用操作过程中延迟的replication,然后你在手工的一个一个节点的去做DDL操作。这个滚动 升级的过程中,集群中会有部分服务器有新的表结构,部分有旧的表结构。节点故障n n任何的硬件故障、软件崩溃、网络连接异常,都将造成节

25、点故障。任何的硬件故障、软件崩溃、网络连接异常,都将造成节点故障。判判断故障节点的依据,是根据他是否还能够连接断故障节点的依据,是根据他是否还能够连接PCPC(Primary Primary componentcomponent),),而而PCPC是从当前集群中随机选择的,因此不能简单的是从当前集群中随机选择的,因此不能简单的根据服务根据服务 器是否能够器是否能够pingping通等外部的方式来判断,需要根据各个节通等外部的方式来判断,需要根据各个节点的点的wsrep_local_statewsrep_local_state来进行投票。来进行投票。n n故障侦测故障侦测 节点每隔节点每隔 ev

26、s.inactive_check_periodevs.inactive_check_period接收一次数据包。接收一次数据包。假如在假如在evs.keepalive_periodevs.keepalive_period间隔都没有任何信息发出,则发出一间隔都没有任何信息发出,则发出一个个heartbeatheartbeat信信 号。假如某一个节点在号。假如某一个节点在evs.suspect_timeoutevs.suspect_timeout都没都没有任何信息发出,则这个节点被标识为有任何信息发出,则这个节点被标识为suspectedsuspected,当所有的当所有的clusterclust

27、er成员节点都认为这个节点成员节点都认为这个节点 是是suspectedsuspected,则认为这个节点则认为这个节点failedfailed。同理,假如某个节点认为另一个节点有问题,则也必须所有的节点都保持一致的想法,才能够定同理,假如某个节点认为另一个节点有问题,则也必须所有的节点都保持一致的想法,才能够定性。性。n n 综上,这些节点状态参数的设置应该遵循:综上,这些节点状态参数的设置应该遵循:evs.keepalive_period=evs.inactive_check_period=evs.suspect_timeout=evs.keepalive_period=evs.inact

28、ive_check_period=evs.suspect_timeout=evs.inactive_timeout=evs.consensus_timeoutevs.inactive_timeout=evs.consensus_timeoutGalera Arbitern n 0.8.2 0.8.2的的GaleraGalera开始开始支持一个支持一个ArbitratorArbitrator节节点,来预防脑裂点,来预防脑裂(split-brain)(split-brain);在如;在如下图的情况下,如果下图的情况下,如果有其中一个有其中一个nodenode无法无法正常连接正常连接WANWAN,那

29、么,那么 另外一个另外一个nodenode仍然可仍然可以通过和以通过和ArbitratorArbitrator的的联系来确认状态正常,联系来确认状态正常,并且继续提供服务。并且继续提供服务。n n n n 需要注意的是,需要注意的是,ArbitratorArbitrator需要能够看需要能够看到所有的网络流量,到所有的网络流量,尽管它不用这些数据尽管它不用这些数据做任何事,因此,它做任何事,因此,它会给网络带来额外的会给网络带来额外的压力。压力。部分参数调整n n当网络状况不好时考虑调整的参数设置:当网络状况不好时考虑调整的参数设置:wsrep_provider_options=evs.kee

30、palive_period=PT3S;wsrep_provider_options=evs.keepalive_period=PT3S;evs.inactive_check_period=PT10S;evs.suspect_timeout=evs.inactive_check_period=PT10S;evs.suspect_timeout=PT30S;evs.inactive_timeout=PT1M;evs.consensus_timeout PT30S;evs.inactive_timeout=PT1M;evs.consensus_timeout=PT1M=PT1M n nevs.kee

31、palive_period evs.keepalive_period 参数控制多久发送一次参数控制多久发送一次keepalivekeepalive请请求信号求信号n n evs.inactive_check_period evs.inactive_check_period 参数控制多久检测一次节点活动参数控制多久检测一次节点活动/静止静止状态状态 n nevs.suspect_timeout evs.suspect_timeout 参数控制某个节点是否被标识为参数控制某个节点是否被标识为suspectedsuspected状态的时间间隔状态的时间间隔n n evs.inactive_timeo

32、ut evs.inactive_timeout 参数控制节点不活动时检测周期参数控制节点不活动时检测周期 n nevs.consensus_timeout evs.consensus_timeout 参数控制多久检测一次节点一致性参数控制多久检测一次节点一致性 通通过上面的设置,可以使节点超时时间为过上面的设置,可以使节点超时时间为3030秒秒n nevs.inactive_timeoutevs.inactive_timeout参数必须不小于参数必须不小于evs.suspect_timeoutevs.suspect_timeout,evs.consensus_timeoutevs.consen

33、sus_timeout必须不小于必须不小于evs.inactive_timeoutevs.inactive_timeout。n nwsrep_slave_threadswsrep_slave_threads 建议每个建议每个corecore启动启动4 4个复制线程,这个参数很大程度上受到个复制线程,这个参数很大程度上受到I/OI/O能力的影响,官方能力的影响,官方甚至在甚至在ThinkPad R51ThinkPad R51一个一个42004200转硬盘、单核心的机器上设置转硬盘、单核心的机器上设置3232个线程,并且执个线程,并且执行良好。行良好。可以通过观察可以通过观察wsrep_cert_

34、deps_distancewsrep_cert_deps_distance这个状态变量来获得当前最这个状态变量来获得当前最佳的线程数,这个参数实际上表示单位时间平均多少个佳的线程数,这个参数实际上表示单位时间平均多少个writesetswritesets能被执行掉。能被执行掉。监控要点n nwsrep_flow_control_pausedwsrep_flow_control_paused 这个变量标识当前节点落后于集群的程度,这个变量标识当前节点落后于集群的程度,0.0-1.0,0.00.0-1.0,0.0为没有落后,为没有落后,1.01.0为为flow controlflow contro

35、l已经停止了。已经停止了。应该尽量保证这个变量值为应该尽量保证这个变量值为0.00.0。如果落后实在太厉害,则应该适当增加复制线程数如果落后实在太厉害,则应该适当增加复制线程数wsrep_slave_threadswsrep_slave_threads,如果还没有改善,则应该从集群中删除最慢的节点。,如果还没有改善,则应该从集群中删除最慢的节点。n nwsrep_cert_deps_distancewsrep_cert_deps_distance 这个变量标识当前节点平均时间内并行执行的事务数,这个数据可以用来作为这个变量标识当前节点平均时间内并行执行的事务数,这个数据可以用来作为wsrep_

36、slave_threadswsrep_slave_threads的参考,同时当并发量很高的时候,这个数值也会很大。的参考,同时当并发量很高的时候,这个数值也会很大。n nwsrep_flow_control_sentwsrep_flow_control_sent 表示表示flow_controlflow_control发出发出FC_PAUSEFC_PAUSE事件的次数,暂停的次数越多,表示接受到的请求频繁堵满事件的次数,暂停的次数越多,表示接受到的请求频繁堵满slaveslave队列,这种情况下不是队列长度不足,就是机器性能太差。(如果集群中多个机器都有队列,这种情况下不是队列长度不足,就是机

37、器性能太差。(如果集群中多个机器都有 这个情况,这个情况,则考虑调整则考虑调整slaveslave队列长度的相关参数,如队列长度的相关参数,如gcs.fc_limitgcs.fc_limit等)等)n nwsrep_local_recv_queue_avgwsrep_local_recv_queue_avg 这个参数表示本地节点平均的接收队列长度,如果这个参数不为这个参数表示本地节点平均的接收队列长度,如果这个参数不为0.00.0,则表示接收来的数据不能被及,则表示接收来的数据不能被及时应用(立即应用了则不会进入队列)。时应用(立即应用了则不会进入队列)。n nwsrep_local_send

38、_q_avgwsrep_local_send_q_avg 这个参数表示本地节点发送数据的队列长度,如果这个参数不为这个参数表示本地节点发送数据的队列长度,如果这个参数不为0.00.0,则表示向外发送数据的速度比,则表示向外发送数据的速度比较慢,有堆积。较慢,有堆积。高负载下的宕机风险n n利用利用sysbenchsysbench通过通过HaproxyHaproxy对三节点的对三节点的ClusterCluster进行并进行并发读写,并发线程数发读写,并发线程数300300。n n此时,整体每个节点的此时,整体每个节点的IOIO负载都比较低,没有造成瓶颈,负载都比较低,没有造成瓶颈,但是但是CPU

39、CPU资源消耗很大资源消耗很大高负载下的宕机风险n n此时三个节点的日志中均频繁出现如下内容。此时三个节点的日志中均频繁出现如下内容。n n此时发生过一次三个节点均无法通信,导致脑裂,三个节点此时发生过一次三个节点均无法通信,导致脑裂,三个节点 均变为只均变为只读状态的故障。读状态的故障。n n同时观察同时观察wsrep_*wsrep_*的相关状态参数,发现了的相关状态参数,发现了wsrep_cert_deps_distancewsrep_cert_deps_distance的值,与集群的稳定性息息相关。在的值,与集群的稳定性息息相关。在当时的测试情况下,当该值超过当时的测试情况下,当该值超过

40、13001300,则集群崩溃的可能性非常大。,则集群崩溃的可能性非常大。n n这种宕机一般不会引起数据丢失和不一致,但是将会终止数据库的可这种宕机一般不会引起数据丢失和不一致,但是将会终止数据库的可用性。用性。高负载引起宕机风险的防治n n参考建议的监控数据,严格控制n n对应用的入口SQL详细审核,避免不正常的SQL运行n n使用一些策略,例如Iptables限制单位时间的并发量、包个数,来避免宕机节点故障与恢复n n任何的硬件故障、软件崩溃、网络连接异常,都将造成节点故障。任何的硬件故障、软件崩溃、网络连接异常,都将造成节点故障。判判断故障节点的依据,是根据他是否还能够连接断故障节点的依据

41、,是根据他是否还能够连接PCPC(Primary Primary componentcomponent),而),而PCPC是从当前集群中随机选择的,因此不能简单的是从当前集群中随机选择的,因此不能简单的根据服务根据服务 器是否能够器是否能够pingping通等外部的方式来判断,需要根据各个节通等外部的方式来判断,需要根据各个节点的点的wsrep_local_statewsrep_local_state。n n前面说过,故障侦测前面说过,故障侦测 节点每隔节点每隔 evs.inactive_check_periodevs.inactive_check_period接收一接收一次数据包。假如在次数

42、据包。假如在evs.keepalive_periodevs.keepalive_period间隔都没有任何信息发出,间隔都没有任何信息发出,则发出一个则发出一个heartbeatheartbeat信信 号。假如某一个节点在号。假如某一个节点在evs.suspect_timeoutevs.suspect_timeout都没有任何信息发出,则这个节点被标识为都没有任何信息发出,则这个节点被标识为suspectedsuspected,当所有的,当所有的clustercluster成员节点都认为这个节点成员节点都认为这个节点 是是suspectedsuspected,则认为这个节点,则认为这个节点fa

43、iledfailed。同理,假如某个节点认为另一。同理,假如某个节点认为另一个节点有问题,则也必须所有的节点都保持一致的想法,才能够定性。个节点有问题,则也必须所有的节点都保持一致的想法,才能够定性。n n 综上,这些节点状态参数的设置应该遵循:综上,这些节点状态参数的设置应该遵循:evs.keepalive_period=evs.inactive_check_period evs.keepalive_period=evs.inactive_check_period=evs.suspect_timeout=evs.inactive_timeout=evs.consensus_timeout=e

44、vs.suspect_timeout=evs.inactive_timeout=evs.consensus_timeout节点故障与恢复n n一旦节点发生故障,分不同的情况,如果无法进行一旦节点发生故障,分不同的情况,如果无法进行ISTIST,则需要做,则需要做SSTSST,即需要进行完全的,即需要进行完全的state snapshot state snapshot transfertransfer,代价非常巨大。,代价非常巨大。n nDonorDonor选择:选择:有自动选择和手动指定有自动选择和手动指定DonorDonor两种方式,两种方式,通过通过wsrep_sst_donor=DONO

45、R_NAMEwsrep_sst_donor=DONOR_NAME来指定,不来指定,不指定则在当前集群中随机选择。指定则在当前集群中随机选择。n n 需要注意的是,当某个需要注意的是,当某个nodenode被选为被选为DonorDonor时,如果使时,如果使用用RsyncRsync或者或者DumpDump,这个节点是不能提供客户端服务,这个节点是不能提供客户端服务的,即使使用的,即使使用XtrabackupXtrabackup这个节点的性能和稳定性也这个节点的性能和稳定性也会受到很大影响,基于这种情况,建议手动选择一个会受到很大影响,基于这种情况,建议手动选择一个DonorDonor,避免高负载

46、的机器被用来做,避免高负载的机器被用来做DonorDonor。节点故障与恢复n n节点故障后获取GTID的方法 执行执行mysqldmysqld加加-wsrep-recover-wsrep-recover参数,可获得参数,可获得GTIDGTID,如如 n nmysqld-defaults-file=/DATA/my6000/f-mysqld-defaults-file=/DATA/my6000/f-log_error=/dev/stdout-wsrep-recoverlog_error=/dev/stdout-wsrep-recovern n再调用再调用-wsrep_start_position=-wsrep_start_position=设置设置GTIDGTID,启动启动mysqldmysqldn n默认情况下,目前的版本似乎会自动这样做,看源码是从innodb redolog记录的checkpoint里获得的GTID谢谢 谢谢

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服