本文主要描述 MySQL Group Replication的简易原理、搭建过程以及故障维护管理内容。由于是新技术,未在生产环境使用过,本文均是虚拟机测试,可能存在考虑不周跟思路有误情况,欢迎交流指正。
 
如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有。望各位支持! aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJIAAACoCAYAAAALmrdFAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAEKmSURBVHhe7d0HuGVVdQfwaW8qvdgiRQWJKRCT2BCxYsESe9dYABGjMSrEAiIqiFSDCIpiJZrYMD2WqBiNEqMxqCgqioKFrkiHYef8zrz/Y3G8U+DNm7lP5n+/9e19dt97rbN2PfvOaRuwAWsBGwRpA9YKNgjSBqwVbBCkDVgrGEtBuuGGG6bMNaGbExbV8NV+c2kYN8/Lly//DbehfUjxm62YdRopjR1mwcoYIAzwr2Guv/76Sdtv+q0Mo8JUN3b5VUraCTc0f5sw9hqpMiT2a665pvcnEFdddVVv58b/uuuu682rr766d//Vr37Vh0NXXHFFu/LKK3t3pudReUhD/GuvvbZ/FpfpOfTrX/+6N6UTu/jiJQ9lkha/pMdM+kiY5I1mK8ZSkDAtZmVkZcCZZ57ZvvrVr/aMCEMwSljhMPN///d/29e//vX2y1/+sk8v+Md//Mf2zW9+s7djnjjCxB6hkU4YzH11uPjii9uTn/zk9gd/8Ad9HiuDdAP2Wt/ZKkxjr5FiIg2Nvve977X73e9+bauttmpveMMbejeCBLTDT3/60/aBD3yg97/NbW7T9txzz3biiSe24447rh155JHt93//99vv/d7vtX/5l39p//mf/9kLJBCe5MF++eWX9+7f//7325ve9Kb2whe+sD396U9vj33sY9ujHvWotsMOO7Tf/d3f7dO6853v3O5617u2BQsWtDlz5rRNNtmkf77LXe7S++244469XRzuhE3+qVfqOFsx1oJEC+i6wtzLLrusd//sZz/bMwvRALSPsC972cvane50p7bpppv2jEyYefPmtUWLFrWFCxe2pUuX9nbuixcv7gVto4026oXry1/+cp93tB5hgle96lVTaSHp1OchJf3V0dOe9rRe6CNMEajZiLEVJJRuBhEWxF4F6T73uU/77ne/24f/0z/905swinaYO3duL0jVHRGo2IVh0lhAu8mHRpLuySef3LbbbrubpMU+MTHRp0Nwab/f+Z3f6YWMH/fb3/72bcstt2y3u93tej9hPG+++ea9FiO48lHP1BnNRoy1RqKBMu7R4MEnP/nJKSH44z/+4/aNb3yj9zcuude97tVrpdve9rZTzN5iiy3atttu2wvaTjvt1LsRsj/8wz/suxjhdVe6MHmnizMYZ0df+9rX2t/93d+1t7/97e31r399e9e73tXe+c53tve85z3tn//5n9tnPvOZ9pa3vKVtv/32fbl233339n//93/tW9/6Vj8ek/ZFF100WYMVuOSSS6Y07gZBmiGkQTWycQ+TAH3hC19on/vc53pmEQjjji9+8YtTYYN/+qd/mtI6GQ/9/Oc/bx/60IemmE3wfvGLX/QzO8BUQhtSBl2cATGhPv3003vBMKg2kP/EJz7RTjrppHbQQQe1vffeuz3ykY9sS5Ys6bXWHe5wh/bABz6wPeIRj2hPetKT2mMe85j2ghe8oL31rW/thTLajvbboJFmCBozbylGauif/exnfbdhPPPa1762FwSCgnF/9md/1gsFQfjSl77U/uZv/qa95jWv6bUO0rXoAu92t7v12kca4iNpfuxjH+tnbRkTVWGK2/vf//4+PC1HiyX+LSFjs4985CN9utF4GwRphhDtwtTQuhVMNO7YY489eobMnz//JgPbf/3Xf213vOMdp54rDcdJxjW6tic84Ql9tySfaIkIEXsE6YQTTugFUJ5Mgrnrrru2Jz7xie1xj3tce85zntOe+9zn9oN36RNYXd/xxx/fa6y/+qu/ave973174VePv/7rv556STYI0gyhNmrWXJ761Kf2DNpss83a/e9//ymBIEjLli1r22yzTTvttNP6abou5sEPfnB7wAMe0JOxkVkcITBGktZf/uVftmOPPbbvFnVXZ5999tR0H2MJVtaRmO9+97unZoLS0FUSwP/5n//p16rOO++89h//8R99V0tod9lll/ad73ynnXPOOf1yhS5UnuITpJe85CVTY0ACVes8GzHWg20mhuqyaCJMMHC2hsTu7ca0Qw45pGfSs571rH6dh6B5+w3EaY0/+ZM/mRICg+5HP/rR/fiFgAmjqxL++c9/fj9Alm/GS4SISWDkLb+NN964H/tIh6BK6573vGe/RpRxGZNQWVawjsTceuute8E3tvNsAB6tBOq6QZBmABoWaAxdEQaZPtM27DQMpnjz99tvv95tVbQm6zuWFuSLwRFipgE2QZLnqHiVjNtGuVci0GeddVZfP3kQoLw4sxFj3bVlnGKm5W3GAF1bxkgGrd78j3/84z1Tnv3s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" alt="" width="74" height="86" />

1 What's Group Replication 

    主从复制,一主多从,主库提供读写功能,从库提供写功能。当一个事务在master 提交成功时,会把binlog文件同步到从库服务器上落地为relay log给slave端执行,这个过程主库是不考虑从库是否有接收到binlog文件,有可能出现这种情况,当主库commit一个事务后,数据库发生宕机,刚好它的binlog还没来得及传送到slave端,这个时候选任何一个slave端都会丢失这个事务,造成数据不一致情况。原理图如下:
 aaarticlea/png;base64,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" alt="" />
 
     为了避免出现主从数据不一致的情况,MySQL引入了半同步复制,添加多了一个从库反馈机制,这个有两种方式设置:
  • 主库执行完事务后,同步binlog给从库,从库ack反馈接收到binlog,主库提交commit,反馈给客户端,释放会话;
  • 主库执行完事务后,主库提交commit ,同步binlog给从库,从库ack反馈接收到binlog,反馈给客户端,释放会话;

    但是,但是,但是,问题来了,虽然满足了一主多从,读写分析,数据一致,但是,依旧有两个弊端
  • 写操作集中在MASTER服务器上;
  • MASTER宕机后,需要人为选择新主并重新给其他的slave端执行change master(可自行写第三方工具实现,但是mysql的复制就是没提供,所以也算是弊端)
    于是乎,官方感应到民间怨气以及业界压力,于2016年12月12日正式发布了MySQL Group Replication,此处应有掌声 aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEcAAAA2CAYAAACVzoR7AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABPsSURBVGhDpdoDsHXH0gbgE9u2U7Htiu1KUnFSsW3bqti2bdu2bVtz65mbd9+5O+fkfPf/u2pqrTXo6X6nu6dn9u75/fffyz+VP//8s5Y//vij16IN/frrr/XZ0m+//VY+/vjj2u/nn38uP/zwQ63zjX755ZdO2zfffFM+//zz8sknn5QPPvigvP322+WNN96oz1deeaUW7++88059fvrpp505v/vuu8obhffXX39dZWvl0pZ2FB3zTjZEri+//LL0C04Y9lX0Qen/448/1u8IRcCvvvqq3HzzzWW//fYrK6+8cpl22mnLRBNNVMYdd9wy1lhjldFHH72MMsooZcQRR6xl+OGHL8MMM0wZaqihytBDD10GHXTQMthgg5UhhhiiDD744HXc2muvXc4777zyzDPP1HlQZOkGpDdSr18WF+UdSMDtF5yUFhBMUvqihx9+uNx9993l+OOPLxtuuGEZe+yxS09PT6cMPPDAtbR1qR9kkEHqc6CBBvpbW96HHHLIMtpoo5VFF120nHnmmeW5556rVpXVb6k3WVvdEL3yPsCWY7K8t8CEvv/++2rS2lnIa6+9Vm666aay9NJLVwuhhBWn0JhjjlkWWWSRCtbee+9dDjnkkHLssceW4447rpxwwgnlpJNOKqeeemo57bTTavFO8VNOOaUcdNBBZfvtt69liy22KHPOOWcHsHHGGacsvPDCZZdddik33HBDddNu6yFfiPzqUMCMrsj4L774ovTo9E+lP3Baeuihh8ruu+9ellhiiSo4C+AGyy+/fDn66KMraCzq2WefrSuDrJI5wrubUieuiDXvvvtujWNPPPFEdavNN9+8zDjjjB23m2uuucrhhx/eiXWh8PGMLvkO5Z081a10+qfSApOCSQpiPY8//ngVNK4w3HDDVeu56667ymeffVbHISvK0lre4eOpvl2QBO2W9FMvvgHrtttuK9tss02ZdNJJO1Z6xhln1MWKVWcc3mQI//COPEg7L+gXnAEpAGDqU0wxRRVs9tlnL4ceemi5884762QEeu+992r56aefal1fhF8rNAKEBTCWsnY1gLOmAPvhhx+Wiy66qKywwgpVhtlmm63ss88+5fXXX687IcKT4uHtnWwooOE3wG6ls9Jbm8J8d9ppp2rWhGLi559/fnUbChA6cSnk26oTJgIqsQaFgOqM+/bbb+tKMnWAaAeUJyAp4p081157bdlyyy2rLOutt1554IEHyvvvv9+Zw3wh/QNudET6/c2tAkRKb2QQIpQ+O+64Y91ubbsC60cffVRBoSjCl6LGUTLCyWVQ5tI/bQDAP4AhgEbBuKmi3U6lHuErps0333wVILvkxRdfXMFDARbliQ+KWyHW2QEnQqaEtGESBhSN2VulaaaZpu5C8g5uREgCvPDCC9V6AKLvq6++WlffWAkcUxcvAGK+8PceRQH65ptvVmWTFIptjz76aLn99turxZAH4WccsFizXY5cLNomoZ+F82z1Q5n7b+AEjLZ0kwnbemDJKRZffPG6Osz4+eefr8qHshsBx/ZOwaeffrrGHUIChlARDE9AxVLwuvzyy8tuu+1W44idTzIo4HtOP/30ZZVVVimXXHJJtTRAhZdvwJILOFNPPXU5++yz/8ulzJdFGGBw+iIMwoyCchKZLbO955576oow9/i/ye0WBFxnnXUqiMqoo45as2M5iW0deKgVlgtdeOGFHfCVMcYYoyqaJFEdd55llllqzgTwyE8GscqC2UEz78svv1xlw7+lfsHpizIwgptUwLUbzD333OWII46ops/XgWYCil555ZVl1llnrYIlYaOc2OSdyS+77LI1wZOzEJrVWPWrrrqq8mYlM888c9lrr73Kiy++WF3pxhtvrHMCzhFDkuk4cc0111TXowursxEg2/xkk01W59xjjz3q2S2bg7lQn+D89d4ntaaIHnzwwbLUUkvVyQhtorfeequ6Ufzft8TPynKJW265pa6mWCAWXXDBBdUtWMB0001XXQegxosnq622WgdAmbMYhbJAvlmBXXKGGWaofcmEL3AoyzrwJJ96ORCrM6ab/s/goAwWEHfdddcy0kgjlQknnLCuFoWAoY+Vt21K9bnb6quvXu64447/ApiCAJbFOmCOPPLI1cIobFVPP/30qgir4RLiVcYHQAAA20md2+ZA6mAbWRE3p6S+ZAGiDcQ8cWf0/wKHcAbG3JmypM/OIchihFiP0/ccc8xRlRYsCWgXY8LAJQjlKNYeSCWSgNx0003rN/djNXgDaNttt63nrSuuuKKCGzcU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" alt="" />
    那么,MySQL Group Replication可以提供哪些功能呢?
  • 多主,在同一个group里边的所有实例,每一个实例可以执行写操作,也就是每个实例都执行Read-Write

    • 注意一点,多主情况下,当执行一个事务时,需要确保同个组内的每个实例都认可这个事务无冲突异常,才可以commit,如果设置的是单主,其他实例ReadOnly,则不需要进行上面的判断
    • 多主情况下,事务并发冲突问题就凸显出来了,如何避免呢?数据库内部有一个认证程序,当不同实例并发对同一行发起修改,在同个组内广播认可时,会出现并发冲突,那么会按照先执行的提交,后执行的回滚
  • 弹性,同个Group Replication中,节点的加入或者移除都是自动调整;如果新加入一个节点,该节点会自动从Group的其他节点同步数据,直到与其他节点一致;如果移除一个节点,那么剩下的实例会自动更新,不再向这个节点广播事务操作,当然,这里要注意,假设一个Group的节点有n个(max(n)=9,同个Group最多节点数为9),移除或者宕机的节点数应该小于等于 floor((n-1)/2) ,注意是向下取整;如果是单主模式,宕机的是单主,则人为选择新主后,其他节点也会自动从新主同步数据。
  • 更高性能的同步机制
 

涉及知识点
故障探测( Failure Detection):
Group Replication中有一个故障检测机制,会提供某些节点可能死掉的信息,然后广播给同一个Group的各个节点,如果确定宕机,那么组内的节点就会与它隔离开来,该节点即无法同步其他节点的传送过来的binlog events,也无法执行任何本地事务。
这里有个问题,故障探测中,假设N个节点,一个节点故障,是采用多数投票机制还是全部一致投票机制?
 

2 配置要求与限制

2.1 数据库要求

2.1.1 innodb引擎

    为什么需要使用innodb引擎呢?在MySQL Group Replication中,事务以乐观形式执行,但是在提交时检查冲突,如果存在冲突,则会在某些实例上回滚事务,保持各个实例的数据一致性,那么,这就需要使用到 事务存储引擎,同事Innodb提供一些额外的功能,可以更好的管理和处理冲突,所以建议 业务使用表格使用inndb存储引擎,类似于系统表格mysql.user使用MyISAM引擎的表格,因为极少修改及添加,极少出现冲突情况。

2.1.2 主键

    每个需要复制的表格都必须定义一个显式主键,注意跟隐式主键区分(使用Innodb引擎的表格,如果没有指定主键,默认选择第一个非空的唯一索引作为主键,如果没有,则自动创建一个6个字节的rowid隐式主键)。这个主键能在冲突发生时启动极其重要的作用,同时,能够有效提高relay log的执行效率。

2.1.3 隔离级别

    官网建议使用READ COMMITTED级别,除非应用程序依赖于REPLEATABLE READ,RC模式下没有GAP LOCK,比较好支持Innodb本身的冲突检测机制何组复制的内部分布式检测机制一起协同工作。不支持SERIALIZABLE隔离级别。

2.1.4 外键

    不建议使用级联外键,如果旧库本身有外键,业务上无法去除并且使用的是多主模式,那么,请配置 group_replication_enforce_update_everywhere_check ,强制检查每个组成员的级联检查,避免多主模式下执行级联操作造成的检测不到的冲突。

2.1.5 IPv4网络,网络性能稳定延迟小带宽充足

2.1.6 自增跟步长

这里需要注意到,搭建group的时候,每个实例中的auto_increment_increment跟auto_increment_offset的配置情况。

  • auto_increment_increment,在GROUP中范围在1-9(因为一个GROUP最多只能有9个组成员),GROUP中安装的时候,默认为7;
  • auto_increment_offset,增长步长,GROUP安装过程,是等于@@server_id的,但是注意有个规则是,当 auto_increment_offset > auto_increment_increment的时候,则是忽略 auto_increment_offset的设置,第一个insert的从1开始,组内其他成员的初始值按照插入顺序 1+n*组员个数,若GROUP有3个成员,A,B,C,serverid分别为2243310,2243320,3423340,A先insert,C再insert,B最后insert,则初始值 A是1,B是9,C是6 (测试结论,未找到实际说明文档)
 mysql> show global variables like 'auto_inc%';
+--------------------------+---------+
| Variable_name | Value |
+--------------------------+---------+
| auto_increment_increment | 7 |
| auto_increment_offset | 2143340 |
+--------------------------+---------+
2 rows in set (0.00 sec)

2.2 安装mysql_replication引擎前提

  • master info and relay log info repositories

    • master_info_repository

      • set global master_info_repository ='table';
    • relay_log_info_repository
      • set global relay_log_info_repository=‘table';
    • 如果不设置会报错,报错信息如下
      • [ERROR] For the creation of replication channels the master info and relay log info repositories must be set to TABLE
  • binlog_checksum
    • binlog的校验方式应该设置为none
    • 如果不设置,报错性能如下
    • [ERROR] Plugin group_replication reported: 'binlog_checksum should be NONE for Group Replication'

2.3 其他参数要求

  • binary log设置

    • 需要启动记录binary log,任何复制都需要使用到二进制内容
    • 在配置文件中添加 log-bin = [binlog存储路径及命名方式]
    • 例子: log-bin = /data/mysql/mysql3310/logs/bin_log
  • log-slave-updates设置
    • 默认情况下,主库同步到从库执行的内容,是不产生binlog日志的,一般开启该参数是为了满足 多级复制,比如 A->B->C(A是B的主库,B是C的主库),那么这个时候B就需要开启这个参数记录从A同步到B上面的所有操作到binary log中,这样才能完整的同步到C上。
    • 而在MGR中,组中的server需要记录从组接收和应用的所有事务,因为恢复的时候,是依赖域各个组的二进制日志内容的。
    • 那么这个时候,可能就有个疑问,在多主模式下,假设实例A ,B , C三台中,每个实例修改的内容都记录到binary log中,再同步给其他组成员,那在B上执行事务 tranb : update了一行数据,tranb提交后同步到 A跟C,各自执行后,由于启动了log-slave-updates设置,A跟C也生成了binary log,那么这些日志如果再同步回B,再执行一遍,不就可能出现问题了吗?实际上这个担忧是多余的,在MGR中,启动了GTID模式,会检查GTID EXCUTED集合,如果是已经执行的,则不会再次执行。
  • binary log格式
    • MGR依赖以及与行复制格式
    • binlog_format=row
  • GTID模式启动
    • 组复制使用全局事务标识符来记录哪些事务已在所有server实例上提交,从而判断哪些是已提交事务哪些是冲突事务,避免重复执行及数据不一致
    • gtid_mode=ON
  • transaction_write_set_extraction
    • 这个神奇的参数5.7.6版本引入,用于定义一个记录事务的算法,这个算法使用hash标识来记录事务。如果使用MGR,那么这个hash值需要用于分布式冲突检测何处理,在64位的系统,官网建议设置该参数使用 XXHASH64 算法。
    • transaction_write_set_extraction ='XXHASH64'
    • 官网解释:Defines the algorithm used to generate a hash identifying the writes associated with a transaction. If you are using Group Replication, the hash value is used for distributed conflict detection and handling. On 64-bit systems running Group Replication, we recommend setting this to XXHASH64 in order to avoid unnecessary hash collisions which result in certification failures and the roll back of user transactions

3 搭建Mysql Group Replication

本次搭建采用3个实例,两个服务器,同一个网段,MGR的参数配置在配置文件中添加。
  • 注意通讯端口号的配置,它用于组成员之间的通讯使用
  • 请确定当前MySQL版本为5.7.17或者之后版本
  • 每个实例的serverid必须是唯一标识,建议使用ip末端+端口描述
基础信息如下:
 
实例名
A
B
C
IP
192.168.9.242
192.168.9.242
192.168.9.244
实例端口号
3310
3320
3340
Server-ID
2423310
2423320
2443340
通讯端口号
24201
24202
24404
MySQL Versoin
5.7.17
5.7.17
5.7.17
MGR参数配置方式
修改配置文件
修改配置文件
修改配置文件
 

3.1 单主模式(group_replication_single_primary_mode =ON

3.1.1 主机名修改

    为了方便后续管理维护以及一些不必要的错误,强烈建议修改主机名,尤其是当同个GROUP里边的SERVER主机名都是一样的情况下,由于本人在虚拟机中测试,虚拟机的主机名都是一样的,导致后续出现了部分问题,建议修改。
注意在两台SERVER上都修改哈!
 #查看当前主机名
hostname #修改主机名
hostname sutest242 #进入vim /etc/hosts
#添加记录,不要修改默认的 127.0.0.1跟::1的记录,其他的系统服务会使用到的
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.9.242 sutest242
192.168.9.244 sutest244
配置后检查如下:
 

3.1.2 设置环境变量

关于GTID及日志信息记录相关参数(这部分的参数设置含义可以查看 第二部分:配置要求与限制
gtid_mode=on
enforce-gtid-consistency=on
binlog_gtid_simple_recovery=1
log-slave-updates=1
binlog_checksum=NONE
master_info_repository=TABLE
relay_log_info_repository=TABLE
 
关于MGR相关参数说明
transaction_write_set_extraction #记录事务的算法
group_replication_start_on_boot #是否随服务器启动而自动启动组复制
group_replication_bootstrap_group #引导组成员的组,这个用于第一次搭建MGR跟重新搭建MGR的时候使用
group_replication_group_name  #此GROUP的名字,必须是一个有效的UUID,以此来区分整个内网里边的各个不的GROUP
group_replication_local_address #本地的IP地址字符串,host:port
group_replication_group_seeds  #需要接受本实例的信息服务器IP地址字符串
group_replication_single_primary_mode #是否启动单主模式,如果启动,则本实例是主库,提供读写,其他实例仅提供读
group_replication_enforce_update_everywhere_checks #多主模式下,强制检查每一个实例是否允许该操作
 
关于MGR相关参数配置
 #动态配置:
set global transaction_write_set_extraction='XXHASH64';
set global group_replication_start_on_boot=OFF;
set global group_replication_bootstrap_group = OFF ;
set global group_replication_group_name= '9ac06b4e-13aa-11e7-a62e-5254004347f9'; #某个UUID
set global group_replication_local_address='192.168.9.242:24201';
set global group_replication_group_seeds ='192.168.9.242:24201,192.168.9.242:24202,192.168.9.242:24401';
set global group_replication_ip_whitelist = '127.0.0.1/8,192.168.9.0/24';
set global group_replication_single_primary_mode=True;
set global group_replication_enforce_update_everywhere_checks=False; #cnf文件配置:
server-id=12001
transaction_write_set_extraction = XXHASH64
loose-group_replication_group_name = '9ac06b4e-13aa-11e7-a62e-5254004347f9'
loose-group_replication_ip_whitelist = '127.0.0.1/8,192.168.9.0/24'
loose-group_replication_start_on_boot = OFF
loose-group_replication_local_address = '192.168.9.242:24201'
loose-group_replication_group_seeds = '192.168.9.242:24201,192.168.9.242:24202,192.168.9.242:24401'
loose-group_replication_bootstrap_group = OFF
loose-group_replication_single_primary_mode = true
loose-group_replication_enforce_update_everywhere_checks = false
 
    这一步这里采用配置文件添加的方式,添加成功后重启数据库服务。
 

3.1.3 建立复制账号

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.%' IDENTIFIED BY 'replforslave';

3.1.4 安装引擎

INSTALL PLUGIN group_replication SONAME 'group_replication.so';
 
如果出现1123错误,请查看当前的数据库版本是否是5.7.17及之后的版本,只有这些版本才有grou_replication插件
ERROR 1123 (HY000): Can't initialize function 'group_replication'; Plugin initialization function failed.
 
安装后,引擎默认会创建一个用户 _gr_user,提供group_replication引擎内部使用,其权限如下:
 
检查是否安装成功,show plugins;
 
来到了这一步,离成功已经很近了,注意检查 步骤1-4,必须在每个实例或者server上都配置一遍。
 

3.1.5  配置Group

按照先把实例A加入Group中,由于是第一个加入Group中,需要启动group_replication_bootstrap_group,引导组,实例A加入成功后,陆续加入实例B及实例C。
 
首先,对实例A进行操作:
 #实例A
#1 查看当前的group replication相关参数是否配置有误
show global variables like 'group%'; #2 启动 group_replication_bootstrap_group
SET GLOBAL group_replication_bootstrap_group=ON; #3 配置MGR
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='replforslave' FOR CHANNEL 'group_replication_recovery'; #4 启动MGR
start group_replication; #5 查看Error log,截图如下
#error log如果有问题,拉到本文末端,对应找错误,如果没有解决,请google或者留言 #6 关闭 group_replication_bootstrap_group
SET GLOBAL group_replication_bootstrap_group=OFF;
  
进入到数据目录,发现新建了几个文件:
  
*_apaplier.*  系列文件 提供 SQL_Thread 使用,存储同个组内其他SERVER的binnary log,这个文件在第一个组成员加入组的时候,可以在Error Log看到其安装信息。
*_recovery.* 系列文件 是做什么使用的呢,在第一个成员启动MGR的时候,并没有看到其相关信息,稍后解疑!
先在实例A上开始造数据,建立数据库mgr,建立表格tb1,INSERT部分数据,操作如下:
#实例A
mysql> create database mgr;
Query OK, 1 row affected (0.01 sec) mysql> use mgr
Database changed
mysql> create table tb1(id int primary key auto_increment not null,name varchar(100));
Query OK, 0 rows affected (0.10 sec) mysql> insert into tb1(name) select @@server_id;
Query OK, 1 row affected (0.09 sec)
Records: 1 Duplicates: 0 Warnings: 0 mysql> insert into tb1(name) select @@server_id;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0 mysql> insert into tb1(name) select @@server_id;
Query OK, 1 row affected (0.01 sec)
Records: 1 Duplicates: 0 Warnings: 0 mysql> insert into tb1(name) select @@server_id;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0 mysql> select * from tb1;
+----+---------+
| id | name |
+----+---------+
| 6 | 2423310 |
| 13 | 2423310 |
| 20 | 2423310 |
| 27 | 2423310 |
+----+---------+
4 rows in set (0.00 sec) mysql> show master status;
+----------------+----------+--------------+------------------+------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------+----------+--------------+------------------+------------------------------------------+
| bin_log.000002 | 1795 | | | 9ac06b4e-13aa-11e7-a62e-5254004347f9:1-7 |
+----------------+----------+--------------+------------------+------------------------------------------+
1 row in set (0.00 sec)

模拟数据操作

 
接着,对实例B 进行操作:
 #实例B
#1 查看当前的group replication相关参数是否配置有误
show global variables like 'group%'; #2 配置MGR
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='replforslave' FOR CHANNEL 'group_replication_recovery'; #3 启动MGR
start group_replication; #4 查看Error log,截图如下
#error log如果有问题,拉到本文末端,对应找错误,如果没有解决,请google或者留言

    通过errrlog,可以详细看到启动过程的所有步骤信息,由于新增数据,导致实例B需要使用到 group_replication_recovery 通道来恢复数据。但是是怎么一个恢复过程呢?查看 *_recovery.* 系列文件 都是只有文件头没有binlog内容的文件。
在加入实例C之前,再次在实例A上造数据,这次造多多数据。新建表格tb2,设置2个大字段,然后insert 2w+的数据量。
 #实例A
mysql> use mgr
Database changed
mysql> create table tb2(id int auto_increment primary key not null,namea varchar(8000),nameb varchar(8000));
Query OK, 0 rows affected (0.03 sec) mysql> insert into tb2(namea,nameb) select repeat('a',8000),repeat('b',8000);
Query OK, 1 row affected (0.02 sec)
Records: 1 Duplicates: 0 Warnings: 0 #insert 自行操作,看试验需要,本次需要大量数据来recovery,所以后面采用 insert into tb2 .. select .. from tb2 方式造数据 2w+行
 
最后,对实例C 进行操作:
 #实例C
#1 查看当前的group replication相关参数是否配置有误
show global variables like 'group%'; #2 配置MGR
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='replforslave' FOR CHANNEL 'group_replication_recovery'; #3 启动MGR
start group_replication; #4 查看Error log,截图如下
#error log如果有问题,拉到本文末端,对应找错误,如果没有解决,请google或者留言
通过errrlog,可以详细看到启动过程的所有步骤信息,由于新增数据,导致实例C需要使用到 group_replication_recovery 通道来恢复数据,这跟实例B是一模一样的过程,但是,由于前期实例A造了大量的数据,所以在整个recovery的过程中,可以查看到  *_recovery.* 系列文件 的变化情况。
    通过error log大小的变化,是通过group_replication_recovery 通道来恢复数据,需要恢复的binary log是存放在 *_recovery.* 系列文件 ,通过本次recovery 文件查看,发现,在recovery过程中,通道内的IO_THREAD拉去日志存储在 *_recovery.* 系列文件 中,当通道内的 SQL_Thread 完成日志应用后,则会删除掉 *_recovery.* 系列文件 文件,新建空文件,代表已经没有数据需要恢复。
    至此,单主模式已搭建结束,实例A可提供读写,但是实例B跟实例C仅提供读服务。
   

在搭建的过程中,也理清了两个重要通道的使用情况:

  • group_replication_applier 通道 提供组内成员向 MASTER 实时同步binlog日志使用,这个通道内IO_thread拉取到的日志存放在 *_apaplier.* 系列文件中,再通过SQL_Thread应用到组内的各个SERVER上。
  • group_replication_recovery 通道 提供 首次加入GROUP或者重新加入GROUP时恢复数据使用,这个通道内 IO_thread拉取到的日志存放在 *_recovery.* 系列文件中,再通过SQL_Thread应用到组内的各个SERVER上,应用结束后,删除所有  *_recovery.* 系列文件 ,重新建立新的 *_recovery.* 系列文件。
可以通过P_S库中的表格查询使用情况:SELECT * FROM mysql.slave_relay_log_info
 

3.2 多主模式group_replication_single_primary_mode =OFF

    多主模式如何配置呢,其实跟 单主模式的流程一模一样,只需要修改 3.1 单主模式 中第二部 配置环境变量中,把 group_replication_single_primary_mode 参数设置成关闭状态即可,然后按照 单足模式的一直执行就可以了。
# 动态修复方式
set global group_replication_single_primary_mode=OFF; # 配置文件修改方式
loose-group_replication_single_primary_mode = OFF
 
    但是,既然说到配置多主模式,除了从头就直接配置多主外,还有一种情况是,本来是单主模式,现在修改为多主模式,这个转换过程,则是这部分要来描述的。
    首先,考虑到的是,能否直接在多主模式运行的情况下,就直接动态修改这个参数呢?因为这个参数是可以动态调整,BUT,在 GROUP_REPLICATION 运行的过程中,是不能修改这个参数的,会友好的提示您:
 
 
    所以,需要新停掉GROUP_REPLICATION。
 
    操作流程:业务端连接IP处理 -> GROUP内成员逐个依次主动退出GROUP -> 关闭 group_replication_single_primary_mode参数-> 逐个启动GROUP内的SERVER

3.2.1 业务端连接IP处理

    对程序端端影响:如果是程序直连主库,则不需要操心这个过程,但是如果是通过第三方工具检查GROUP中的主库是哪个的话,需要先修改第三方工具直连原主库,因为所有Group内的成员都要停止服务,如果都是自动判断的话,最后会找不到GROUP中的成员的,所以,在开始切换的时候,就需要业务方固定读写在实例A上。

3.2.2 GROUP内成员逐个依次主动退出GROUP

连接实例A:
 #实例A
stop group_replication; #检查实例B,C的error log,发现实例A主动退出,group成员删除实例A
Error Log内容如下:
 
    这个时候,A可读写,但是不在group中,其binlog内容不会在组内同步;C升级自动升级为主库,可读写,binlog会同步到B上。这里的主库升级,是看MEMBER_ID的升序排序情况,最小的升级为主库
在B上通过表格 replication_group_members跟global_status,可以查看现在的组成员以及主库是哪个。查看截图如下: 
 
连接实例B:

1 #实例B
2 stop group_replication;
3
4 #检查实例B,C的error log,发现实例A主动退出,group成员删除实例A
 
    这个时候,A,B均可以读写,但是不在GROUP中,业务目前在A上运行,C也可以读写,目前是主库。
 
连接实例C:
#实例c
stop group_replication;
   
    这个时候,整个GROUP内的所有成员都依次自动退出了GROUP。

3.2.3 关闭 group_replication_single_primary_mode参数

    需要修改2个地方,第一个是动态修改参数,第二个是到配置文件中修改参数(防止DB服务重启,参数失效)!
#动态修改
#实例A
set global group_replication_single_primary_mode =OFF #实例B
set global group_replication_single_primary_mode =OFF #实例C
set global group_replication_single_primary_mode =OFF #配置文件添加
#实例A的cnf文件中修改
loose-group_replication_single_primary_mode = OFF #实例B的cnf文件中修改
loose-group_replication_single_primary_mode = OFF #实例C的cnf文件中修改
loose-group_replication_single_primary_mode = OFF
 
为了模拟有业务在实例A上操作,在实例A上创建表格 tb4,并导入tb2的所有数据

#实例A
mysql> create table tb4 like tb2;
Query OK, 0 rows affected (0.18 sec) mysql> insert into tb4 select * from tb2;
Query OK, 20480 rows affected (33.13 sec)
Records: 20480 Duplicates: 0 Warnings: 0

3.2.4 逐个启动GROUP内的SERVER

    首先针对实例A启动,然后启动实例B,紧接着启动实例C。这个过程中,每加入一个组成员,记得去看error log是否有报错。
当A启动的时候,可以看到成了一个新的GROUP,B加入到时候,需要通过 group_replication_recovery 通道恢复数据,C加入到时候,也需要通过 group_replication_recovery 通道恢复数据,这部分的内容跟 3.1. 5 配置Group 中的errorlog内容差不多,这里就不做截图分析。

#实例A
#需要启动 group_replication_bootstrap_group 引导组,启动后需要关闭,防止脑裂
mysql> set global group_replication_bootstrap_group=ON;
Query OK, 0 rows affected (0.00 sec) mysql> CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='replforslave' FOR CHANNEL 'group_replication_recovery';
Query OK, 0 rows affected, 2 warnings (0.02 sec) mysql> START GROUP_REPLICATION;
Query OK, 0 rows affected (1.16 sec) mysql> set global group_replication_bootstrap_group=Off;
Query OK, 0 rows affected (0.00 sec) #实例B
mysql> CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='replforslave' FOR CHANNEL 'group_replication_recovery';
Query OK, 0 rows affected, 2 warnings (0.04 sec) mysql> start group_replication;
Query OK, 0 rows affected (4.31 sec) #实例C
mysql> CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='replforslave' FOR CHANNEL 'group_replication_recovery';
Query OK, 0 rows affected, 2 warnings (0.07 sec) mysql> start group_replication;
Query OK, 0 rows affected (3.83 sec)

3.2.5 检查现在GROUP情况

目前GROUP中的各个成员都关闭了super_read_only选项,提供了读写服务,由于三个都为主库,属于多主情况,所以 global_status中无法查看到主库是哪个,因为这个GROUP中,每个SERVER都是MASTER。
 
mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 2ec0fecd-16a2-11e7-97e1-52540005b8e1 | sutest244 | 3340 | ONLINE |
| group_replication_applier | 94e39808-15ed-11e7-a7cf-52540005b8e2 | sutest242 | 3310 | ONLINE |
| group_replication_applier | 9b78d231-15ed-11e7-a82a-52540005b8e2 | sutest242 | 3320 | ONLINE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
3 rows in set (0.21 sec) mysql> select * from performance_schema.global_status where variable_name like '%group%';
+----------------------------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+----------------------------------+----------------+
| group_replication_primary_member | |
+----------------------------------+----------------+
1 row in set (0.35 sec) mysql> show global variables like 'group_replication_single_primary_mode';
+---------------------------------------+-------+
| Variable_name | Value |
+---------------------------------------+-------+
| group_replication_single_primary_mode | OFF |
+---------------------------------------+-------+
1 row in set (0.33 sec) mysql> show global variables like 'super%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| super_read_only | OFF |
+-----------------+-------+
1 row in set (1.20 sec)
至此,多主模式已搭建结束,实例A、B、C均可提供读写。PS: 这里需要注意冲突处理机制,可以查看第五部分的故障模拟。
 

4 管理维护

这部分内容主要涉及到几个系统表格,有点类似于 SQL SERVER中的DMV视图,详见下表。
id table_schema table_name type description
1 performance_schema replication_group_members 重要,常用 查看GROUP成员。
2 performance_schema replication_group_member_stats 重要,常用 当前SERVER在GROUP中的同步情况,查看applier通道的同步情况。
3 performance_schema replication_connection_stats 重要,常用 当前server中各个通道的使用情况,applier通道是一定有显示,recovery通道看是否使用过,如果有则显示,没有则不显示。
4 performance_schema replication_applier_stats 重要,常用 当前server中各个通道是否启用。
5 performance_schema global_status 重要,常用 单主模式下,可以查看当前主库是哪个。
6 performance_schema replication_applier_configuration 不常用,了解即可  
7 performance_schema replication_applier_status_by_coordinator 不常用,了解即可  
8 performance_schema replication_applier_status_by_worker 不常用,了解即可  
9 performance_schema replication_connection_configuration 不常用,了解即可  
10 mysql slave_master_info 重要,不常用 设置了master_info_repository=TABLE,所以master的相关信息会存储在这个表格。
如果使用GROUP中的SERVER备份数据库,恢复到时候,注意要清理这个表格。
11 mysql slave_relay_log_info 重要,不常用 设置了relay_log_info_repository=TABLE,所以master的相关信息会存储在这个表格。
如果使用GROUP中的SERVER备份数据库,恢复到时候,注意要清理这个表格。
 

4.1 查看GROUP中的成员有哪些

SELECT * FROM performance_schema.replication_group_members

4.2 单主模式下主库是哪个

SELECT * FROM performance_schema.replication_group_members;
SELECT * FROM performance_schema. global_status;
两个查询出来的UUID一致的为 主库。

4.3 检查数据库是否正常提供读写服务

show global variables like 'super%';
SELECT * FROM performance_schema.replication_group_members;
 
如果super_read_only是启动的,那么该成员仅提供读服务;
如果super_read_only是关闭的,并且 replication_group_members 中正常的成员n 满足 2n+1 > 整个GROUP成员个数,并且该成员的 member state是online,则该成员可提供读写服务。
 

4.4 检查数据库是否复制出现问题

可以通过表格replication_group_members ,replication_group_member_stats ,replication_connection_stats ,replication_applier_stats 查看
重点注意各个 组成员的 ERROR LOG详细信息,因为报错描述最清楚都在这里了。

5 故障模拟及处理

节选测试过程的图,跟之前配置的GROUP有些不一致,理解注重思路即可,部分测试细节没有再次描述。

5.1 单主模式

5.1.1 主库宕机,如何自动选择新主库?各个实例之间的super_read_only模式如何切换?

select * from performance_schema.replication_group_members;
select * from performance_schema.global_status where VARIABLE_NAME='group_replication_primary_member';
show global variables like 'server_uuid';
show global variables like 'super%'; select * from performance_schema.replication_connection_status;
select * from performance_schema.replication_applier_status;

模拟group中,有三个实例,端口分别为 3320,3330,3340,用简称来 m3320、m3330、m3340来分别描述。

    m3330在属于主库,模拟其主库宕机,使用 kill 进程方式,当m3330宕机后,m3320及m3340检查到 timeout reading,则会从group_member中剔除该实例,同时检测宕机实例是否小于 floor((n-1)/2) (n为group中所有实例个数),如果满足,则启动新的GROUP,按照GROUP中各个实例的UUID进行 升序排序,选择第一个作为新的主库,由于新主库之前是super_read_only状态,仅支持只读,升级为新主库后,会执行 ,不设置 super_read_only,关闭此参数,那么新主库则是可提供读写服务,原先的从库现在依旧为从库,super_read_only依旧为启动状态,仅提供读服务。

5.1.2 主库宕机后,恢复,重新加入group

    旧主库恢复后,检查GROUP_REPLICATION相关参数,是否设置有误,它需要以一个从库的方式加入,详见 GROUP配置的参数说明。
如果参数无误,执行change master,然后start 即可。

CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='replforslave' FOR CHANNEL 'group_replication_recovery';
START GROUP_REPLICATION;
    其他两个节点检查连接情况,连接无误后,加入group中,更新 GROUP Member,同时开始同步差异binlog日志内容。

5.1.3 从库宕机1台,影响情况

    kill 3330进程,模拟从库宕机,发现剩下实例检测到 m3330异常,从 group中删除,主库m3320照常提供读写服务,从库m3340照常提供读服务。

5.1.4 从库宕机2台,影响情况

    基于3的基础上,再次kill 3340进程,模拟从库宕机,主库3320检查到 m3340异常,但是没有删除该 成员,而是便是为 unreachable,表明该成员可能由于崩溃或者意外被断开而导致的不可访问。
    或者(两个从库宕机的时刻非常接近,则来不及判断剔除出group)
 
    对仅存活动 m3320 执行查询操作,是正常情况。但是DDL及DML 操作,均处于等待状态,并且,error log也无报错情况。
 

    这个时候,如果想要恢复主库读写服务,需停止group(这里有个疑问,查看replication_applier_status,主库状态正常;但是不提供读写应该从哪个地方判断呢,难道是group_member的正常个数不满足group的正常个数要求,则不提供服务?除了stop group_relication和新加入节点外,还有其他方式处理吗?
 

5.1.5 新增从库:innobackupex新增(这个需要留意)

    选择在 m3320备份实例,备份结束后apply log。
 innobackupex --datadir=/data/mysql/mysql3320/data/ --user=root --password=ycf.com --no-timestamp --socket=/tmp/mysql3320.sock /data/backup3320
innobackupex --apply-log /data/backup3320
    第一次启动数据库时,报错,找不到relay log文件,因为拷贝过来的时候 ,备份库指定参数如下,mysql库中的master_relay_log_info指定了relay log的相关信息,但是现在没有找到文件,数据库会自动创建 applier跟recovery系列文件。
master_info_repository=TABLE
relay_log_info_repository=TABLE
 
    所以需要进入数据库中,truncate 两个表格:mysql.slave_master_info, mysql.slave_relay_log_info ,然后删除 applier跟recovery系列文件 。
 truncate table mysql.slave_master_info
truncate table mysql.slave_relay_log_info rm -rf applier系列文件
rm -rf recovery系列文件
查看下备份的GTID集合,如下
 
重启数据库服务,进入数据库,重新配置GTID集合与备份中的一致,启动GROUP_REPLICATION。
RESET MASTER;
SET @@GLOBAL.GTID_PURGED='9ac06b4e-13aa-11e7-a62e-5254004347f9:1-10';
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='replforslave' FOR CHANNEL 'group_replication_recovery';
START GROUP_REPLICATION;

5.1.6 新增从库:mysqldump新增(这个需要留意)

备份数据库实例:
/usr/local/mysql5717/bin/mysqldump --socket=/tmp/mysql3320.sock -uroot -p --all-databases > ~/mysql3320.sql
 
    这里有个小TIPS,个人建议,建立一个新的实例后,在新实例中安装 好 group_replication 引擎,不要等到source后再安装,这样的好处是:避免直接在恢复的数据库实例上安装引擎,会出现各种错误。
 
    在服务器上先安装 group_replication引擎,然后再source数据,避免source数据后由于环境问题导致group_replication引擎安装有问题
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
 
    成功后source /data/mysql3320.sql
    检查当前的binlog跟gtid使用情况,show master status;
    由于目前的使用情况跟mysqldump中的 gtid_purge不一致,重新拷贝下mysql3320.sql中的 gtid_purged语句,注意,如果当前的gtid_excuted不为空,则需要重置下master相关信息,reset master后执行gtid_purge语句。
 
SET @@GLOBAL.GTID_PURGED='9ac06b4e-13aa-11e7-a62e-5254004347f9:1-18'; #看GTID集合是否一致
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='replforslave' FOR CHANNEL 'group_replication_recovery';
START GROUP_REPLICATION;

5.2 多主模式

5.2.1 单主模式切换多主模式

这部分参考第三部分的第二节,多主模式。
简要步骤:
1 先由 从主库开始,逐一逐一停止group replication
2 设置group_replication_single_primary_mode 关闭
3 依次启动GROUP replication
 
测试内容:
1 整个GROUP中每个SERVER同时执行一个DML语句
2 整个GROUP中每个SERVER同时执行一个DDL语句
 
测试结论:
    严重注意,如果在同时提交DDL语句,则在每个实例都是可以提交成功,但是同步到各个实例的时候会发生报错,group_replication出现 error错误,所有实例启动super_read_only只读情况,整个group不提供 写操作,需要人为接入修复。所以DDL语句,建议在设计的时候,就专门只有一个实例可以执行DDL语句,人为默认在某一台上执行DDL语句,而不是每台都执行,避免不必要的冲突。

5.2.2 宕机一台整体影响

kill 进程,其他实例检车链接有问题后,剔除该节点,正常操作。 

5.2.3 宕机后重新加入

启动数据库实例后,记得检查 group_replication_single_primary_mode是否是关闭状态,如果不是,注意启动,要不然会由于模式不一致报错,
set global group_replication_single_primary_mode=OFF;
 
正常执行 
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='replforslave' FOR CHANNEL 'group_replication_recovery';
START GROUP_REPLICATION;

5.2.4 宕机超过合理个数,整体影响(非一个个慢慢宕机,而是一口气宕机超过合理个数)

    5台server端,一口气停机了3台,则3台的status修改为UNREACHABLE,剩下的2台为ONLINE,虽然super_read_only是关闭的状态,但是这两台server不提供写功能,仅提供读功能。
    这里注意下,如果这个时候,发生DML操作,则会挂起该操作,一直处于等待状态,其他链接可以正常连接数据库进行操作;但是如果发生DDL操作,这个时候,不仅该会话处于等待状态,而且其他新的连接将无法执行user dbname(涉及操作的DBname)进入到该数据库中进行 任何查询操作,但是可以在其他数据库上 使用 dbname.tbname 方式查询,比如select * from dbgroup.alld!
 
    仅剩下的一台主库居然不提供读写,除非关闭stop group_replication!
 
    关闭后,error log中会提示事务回滚信息。
 

5.2.5 新增DB:innobackupex新增

简要步骤
  1. 备份后执行apply log
  2. 新建实例,添加plugins引擎
  3. 替换数据目录
  4. 启动数据库
  5. 清理relay-log文件,清理slave_master_info跟slave_relay_log_info信息
  6. 查看当前的GTID序号是否与 xtrabackup_binlog_info记录一致,如果不一致,执行 set gtid_purged
  7. 重启数据库服务
  8. 检查group replication配置是否有误
  9. change master
  10. start group_replication
#部分参考SQL
SET @@GLOBAL.GTID_PURGED='9ac06b4e-13aa-11e7-a62e-5254004347f9:1-26:1000004';
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='replforslave' FOR CHANNEL 'group_replication_recovery';
START GROUP_REPLICATION;

5.2.6 新增DB:mysqldump新增

简要步骤
  1. 新建实例,添加plugins引擎
  2. source 备份文件
  3. 清理relay-log文件,清理slave_master_info跟slave_relay_log_info信息
  4. 查看当前的GTID序号是否与备份文件前面记录一致,如果不一致,执行 set gtid_purged
  5. 检查group replication配置是否有误
  6. change master
  7. start group_replication

6 问题记录

1 ip间隔是 逗号

2 不要有分号,本人就这么笨的开始!

3 port是使用端口号 ,非实例端口号

4 [ERROR] Plugin group_replication reported: 'This member has more executed transactions than those present in the group. Local transactions: 32538cbf-12fc-11e7-af43-5254004347f9:1-5 > Group transactions: 2236bd6b-12fc-11e7-a706-5254004347f9:1-16

 [ERROR] Plugin group_replication reported: 'This member has more executed transactions than those present in the group. Local transactions: 32538cbf-12fc-11e7-af43-5254004347f9:1-5 > Group transactions: 2236bd6b-12fc-11e7-a706-5254004347f9:1-16,9ac06b4e-13aa-11e7-a62e-5254004347f9:1'

[ERROR] Plugin group_replication reported: 'The member contains transactions not present in the group. The member will now exit the group.'

[Note] Plugin group_replication reported: 'To force this member into the group you can use the group_replication_allow_local_disjoint_gtids_join option'

  • 解决

    • set global group_replication_allow_local_disjoint_gtids_join=ON;(但是实际上这种方法治标不治本)
    • 建议还是在搭建group_replication的时候,在start group_replication之前,reset master,重置所有binary log,这样就不会出现各个实例之间的日志超前影响;但是这里要考虑是否影响到旧主从。

5 [ERROR] Plugin group_replication reported: 'Table te does not have any PRIMARY KEY. This is not compatible with Group Replication'

表格需要添加主键

6 mysql> insert into ct(id,name) select 2,'b'; ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statement

只读模式下,不提供写服务。

7 [ERROR] Plugin group_replication reported: 'Transaction cannot be executed while Group Replication is on ERROR state. Check for errors and restart the plugin'   2017-03-29T15:46:13.619141Z 31 [ERROR] Run function 'before_commit' in plugin 'group_replication' failed

GROUP出错了,是否是重复执行冲突了,好好处理下

7  未解决问题

1 可以通过 show slaves status for channel 'group_replication_recovery' 查看recovery通道执行情况,但是怎么看 applier呢?(show slaves status for channel 'group_replication_applier'报错 )
2 当宕机超过有效个数时,查看replication_applier_status,状态正常,但是ONLINE的server实际上不提供写服务,仅提供读服务,可以通过什么方式快速判断呢?个人认为是以下判断,是否有更好的方式?
 
show global variables like 'super%';
SELECT * FROM performance_schema.replication_group_members;
如果super_read_only是启动的,那么该成员仅提供读服务;
如果super_read_only是关闭的,并且 replication_group_members 中正常的成员n 满足 2n+1 > 整个GROUP成员个数,并且该成员的 member state是online,则该成员可提供读写服务。
 
3 当宕机超过有效个数时,ONLINE的server仅提供读服务,如果需要启动写服务,目前个人测试结果是只有两种方案恢复写服务:当前SERVER,执行stop group_replication;恢复另外的异常SERVER变正常。是否还有其他方式?
 
4 GROUP中剔除一个成员,假设N个节点,一个节点故障,是采用多数投票机制还是全部一致投票机制?
 
参考文档:
mysql官方在20161212正式发布了group replication版本,官网详细地址:https://dev.mysql.com/doc/refman/5.7/en/group-replication.html
感谢京东的中文翻译:http://acmug.net/?p=164 ,某些地方字面直译,有些不好理解,如果感觉理解有误,可对照看下英文文档。 翻译中文文档下载地址:http://storage.360buyimg.com/brickhaha/Mysql.pdf
 

细细探究MySQL Group Replicaiton — 配置维护故障处理全集的更多相关文章

  1. 细细探究MySQL Group Replicaiton — 配置维护故障处理全集(转)

    如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持! 

  2. MySQL Group Replication配置

    MySQL Group Replication简述 MySQL 组复制实现了基于复制协议的多主更新(单主模式). 复制组由多个 server成员构成,并且组中的每个 server 成员可以独立地执行事 ...

  3. Mysql Group Replication 简介及单主模式组复制配置【转】

    一 Mysql Group Replication简介    Mysql Group Replication(MGR)是一个全新的高可用和高扩张的MySQL集群服务.    高一致性,基于原生复制及p ...

  4. mysql group replication 安装&配置详解

    一.原起: 之前也有写过mysql-group-replication (mgr) 相关的文章.那时也没有什么特别的动力要写好它.主要是因为在 mysql-5.7.20 之前的版本的mgr都有着各种各 ...

  5. MySQL Group Replication 技术点

    mysql group replication,组复制,提供了多写(multi-master update)的特性,增强了原有的mysql的高可用架构.mysql group replication基 ...

  6. MySQL Group Replication-MGR集群

    简介 MySQL Group Replication(简称MGR)字面意思是mysql组复制的意思,但其实他是一个高可用的集群架构,暂时只支持mysql5.7和mysql8.0版本. 是MySQL官方 ...

  7. Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication

    Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication Overview Galera Cluster 由 Coders ...

  8. Mysql 5.7 基于组复制(MySQL Group Replication) - 运维小结

    之前介绍了Mysq主从同步的异步复制(默认模式).半同步复制.基于GTID复制.基于组提交和并行复制 (解决同步延迟),下面简单说下Mysql基于组复制(MySQL Group Replication ...

  9. mysql group replication 主节点宕机恢复

    一.mysql group replication 生来就要面对两个问题: 一.主节点宕机如何恢复. 二.多数节点离线的情况下.余下节点如何继续承载业务. 在这里我们只讨论第一个问题.也就是说当主结点 ...

随机推荐

  1. 前端总结·基础篇·CSS(二)视觉

    前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·CSS(四)兼容 目录 一.动画(animation)(IE ...

  2. 浅谈PHP的CI框架(一)

    作为前端开发人员,掌握一门后端语言是必不可少的,PHP的CI框架是一个快速开发框架,基于MVC,比较接近原生PHP,在原有的PHP代码上封装了许多类,易上手,容易扩展,适用于小项目,并且CI的文档及案 ...

  3. Linux下ls命令显示符号链接权限为777的探索

    Linux下ls命令显示符号链接权限为777的探索 --深入ls.链接.文件系统与权限 一.摘要 ls是Linux和Unix下最常使用的命令之一,主要用来列举目录下的文件信息,-l参数允许查看当前目录 ...

  4. nodejs中异步

    nodejs中的异步 1 nodejs 中的异步存在吗? 现在有点 javascript 基础的人都在听说过 nodejs ,而只要与 javascript 打交到人都会用或者是将要使用 nodejs ...

  5. 《HelloGitHub月刊》第11期

    <HelloGitHub>第11期 兴趣是最好的老师,<HelloGitHub>就是帮你找到兴趣! 简介 最开始我只是想把自己在浏览 GitHub 过程中,发现的有意思.高质量 ...

  6. 多线程简介及GCD的使用

    多线程简介: 对于任意一个iOS应用,程序运行起来后,默认会产生一个主线程(MainThread),主线程专门用来处理UIKit对象的操作,如界面的显示与更新.处理用户事件触发的操作等等.(记忆这点, ...

  7. failed (1113: No mapping for the Unicode character exists in the target multi-byte code page), client: 127.0.0.1...

    nginx部署网站后,访问域名,网页显示  500 Internal Server Error ,经查看发现nginx的error.log中有报错: failed (1113: No mapping ...

  8. Asp.Net 常用工具类之Office-文档操作(6)

    文档一直是老大难问题,君不知,代码用时方恨少!有一套成熟的文件帮助类能很大程度上减少寻找各种资料的时间. 记得以前做一个业务,需要导出协议,一份可编辑,一份不可编辑.那么Word和PDF是最好的选择, ...

  9. PHP学习路线图

    文章转载自「开发者圆桌」一个关于开发者入门.进阶.踩坑的微信公众号 这里整理的PHP学习路线图包含初中高三个部分,你可以通过百度云盘下载观看对应的视频 链接: http://pan.baidu.com ...

  10. Rotate Array leetcode

    Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array  ...