组复制升级全方位认识MySQL8

本节引见怎么对组复制施行晋级的摆设。晋级构成员的根底环节与晋级独单实例的环节雷同,对于晋级方法,详细取舍马上晋级(基于本来的数据文献直接哄骗mysql_upgrade下令晋级数据字典)或逻辑晋级(当时搭建一个新版本的Server,将旧版本中的数据经过逻辑导出、而后再导入新版本),取决于组中储备的数据量而定。一般情状下,马上晋级更快,因而创议哄骗马上晋级的方法施行晋级。在线晋级组的历程中,为了使得组的可用性坚持最大化(只管保证组的可用性),那就须要对构成员施行转动晋级(一个一个革新),是以,在一个组中大概须要同时运转不同MySQLServer版本的成员。一个组中包括不同版本的成员时存在一些兼容性战略,这在晋级历程中能够平安地将在统一组中的运转不同版本MySQL的成员组合在一同。其它,这些战略大概会影响晋级构成员的次序。相关详细音信,请参拜"7.1在一个组中兼容不同版本的成员”。假定能够答应组离线晋级,则详细晋级历程请参拜"7.2.组复制离线晋级”。假定须要在线晋级组(一般临盆处境都请求在线晋级),则请参阅"7.3.组复制在线晋级”以领会最小停机功夫晋级组的不同办法。7.1.在一个组中兼容不同版本的成员组复制遵循与MGR插件绑定的MySQLServer版本施行版本管束。比方,假定一个成员运转在MySQL.7.2版本中,那末这即是MGR插件的版本。哄骗以下语句能够在构成员中查看MySQLServer版本:

root

localhost:(none):3:SELECTMEMBER_HOST,MEMBER_PORT,MEMBER_VERSIONFROMperformance_schema.replication_group_members;+-------------+-------------+----------------+

MEMBER_HOST

MEMBER_PORT

MEMBER_VERSION

+-------------+-------------+----------------+

node2

8.0.17

node3

8.0.17

node1

8.0.17

+-------------+-------------+----------------+3rowsinset(0.01sec)为了取得最好的兼容性和功能,组中的全数成员创议运转雷同版本的MySQLServer,也创议运转雷同版本的组复制通信协定。不过,在线晋级组的历程中,为了最大化组的可用性,大概须要同时运转不同MySQLServer版本的成员。由于不同MySQL版本之间的一些个性大概有所不同(比方:较新的版本大概支撑一些新功效而旧版本不支撑,在较新的版本中清除了一些较旧的版本中支撑的一些功效),在这类情状下新旧版本之间大概会碰到不兼容题目。在此情状下,假定将不同版本的MySQLServer摆设到一个组中,则大概会致使依赖弃用个性的成员失利、也大概致使较旧的版本不支撑新版本中的新个性而呈现题目。为避免呈现这些题目,组复制支撑一些兼容性战略,使得一组运转在不同MySQLServer版本的构成员之间能够平安兼容。构成员运用这些战略来决意能否寻常参加组、或以只读形式参加组、或不参加组,这详细取决于哪类取舍能够保证新参加Server和组中的现有成员之间的操纵平安。在对组实行转动晋级时,每个成员都须要先摆脱组,而后晋级到新版本,而后再次从头以新版本参加组,此时,组中的成员须要为新版本做对应的战略般配(该战略大概与构成员晋级以前运用的战稍不同)。试验参加组的成员所运用的兼容性战略以下:假定一个MySQLServer的版本低于组中的现有构成员运转的最低版本,则该Server不答应参加组。假定一个MySQLServer的版本与组中现有成员所运转的最低版事实同,那末该Server一般会(也答应)参加组。一个Server参加组后,假定它运转的MySQLServer版本高于组中现有构成员运转的最低版本,则该成员将坚持只读形式(假定组运转在单主形式,新参加组的成员在职何情状下都默觉得只读;假定组运转在多主形式下,则新参加组的成员大概处于读写形式)。运转MySQL8.0.17或更高版本的Server在查看其兼容性时,会思考刊行版的补钉版本(比方:版本号为8.0.17,个中8.0示意要紧版本,17示意补钉版本,也能够叫做次要版本)。运转MySQL8.0.1或更低、或MySQL.7的Server只思考要紧版本(比方:版本号为8.0.1,个中8.0位要紧版本)。假定有一个全数成员都运转8.0.13版本的组,则试验参加组的Server所运用的兼容性战略以下:一个运转MySQL.7.x版本的Server不答应参加组。一个运转MySQL8.0.1版本的Server答应寻常参加组(由于这边只思考要紧版本字符串8.0,与组中现有成员思考的字符串8.0般配)。一个运转MySQL8.0.17版本的Server答应参加组,但会坚持只读形式(由于新参加的Server它也会同时思考补钉版本17,即8.0.17,而组中的现有成员只思考字符串8.0)。仔细,MySQL.7.27以前版本的Server参加组时,会查看全数构成员的版本,以便查看各个构成员的MySQL要紧版本号能否更低。因而,遵循上述示例以及兼容性战略,假定组中有任何成员运转MySQL8.0版本,则这个查看就会失利,致使MySQL.7.27以前版本的Server无奈参加组,假使组中曾经有其余成员运转MySQL.7版本,也不能参加组。从MySQL.7.27版本着手,参加组的Server只查看组中现有成员运转的最低要紧版本,如此,运转在MySQL.7.27及其以后版本的Server就可以够参加一个哄骗搀和有MySQL.7.x版本成员的组。在具备不同MySQLServer版本的多主形式组中,组复制会主动治理运转MySQL8.0.17或更高版本的成员的读写和只读状况。假定一个成员离开了组,则运转目下最低版本的成员将主动摆设为读写形式。哄骗group_replication_switch_to_multi_primary_mode()UDF在线将单主形式的组改动成多主形式时,组复制会主动将成员摆设为准确的形式。假定某个成员运转的MySQLServer版本高于组中的最低版本,则它将主动摆设为只读形式,而运转最低版本的成员将主动摆设为读写形式。7.1.1.晋级构成员在线晋级历程中,假定组处于单主形式,则在实行晋级操纵的成员脱机以后(实行晋级操纵的构成员须要脱机,未实行晋级操纵的构成员不须要脱机),组中未实行晋级操纵的构成员会遵循"1.3.1单主形式”中所述的推举战略推举一个新的要紧节点。仔细,假定请求要紧节点不停坚持稳固(除非它自己正在实行晋级),则必需先对全数其余的构成员实行晋级,而后结尾对要紧节点实行晋级(当晋级要紧节点时,由于要紧节点脱机,是以组内会从头推举新的要紧节点,等候其晋级告竣以后,假定你指望要紧节点依旧本来的成员,则,此时能够哄骗group_replication_set_as_primary()UDF将其从头指定为要紧节点)。假定组处于多主形式,则在晋级历程中能够寻常实行写操纵的构成员将越变越少,由于晋级后的成员将被置为只读形式偏从头参加组(这是为了避免新版本的个性在旧版本中不能被胜利复制)。假定全数成员都晋级到MySQL8.0.17及其更高的版本时,则它们城市主动复原到读写形式。但对于较早的版本,在晋级告竣以后,必需手动将每个构成员上的统变量super_read_only和read_only系摆设为OFF(摆设读写形式)以将其做为要紧节点。仔细:对于新旧版本的对比而言,从MySQL8.0.17着手,对比时须要思考到次要版本号,而对于8.0.1及其以前的版本,做版本对比时只思考要紧版本号。假定在构成员晋级历程中须要做晋级回滚的成员,或许须要为组新增一个成员,则,在快捷情状下,能够答应一个MySQLServer版本低于组中最低版本的成员参加组(哄骗组复制系统变量group_replication_allow_local_lower_version_join来遮盖寻常的兼容性战略。须要仔细,将该系统变量摆设为ON并不会使新成员与组兼容。因而,该系统变量只可在特定情状下小心哄骗。相关更多提防办法,请参拜"8、组复制系统变量"中的group_replication_allow_local_lower_version_join系统变量的描摹)。7.1.2.组复制通信协定版本组复制哄骗的组通信协定版本号与构成员的MySQLServer版本号不肯定绝对一致(比方:MySQLServer8.0.17哄骗的通信协定版本为8.0.1,而不是8.0.17,该协定版本代表着该组目下支撑的最低的MySQLServer版本,MySQL.7.1版本支撑收缩动静,MySQL8.0.1版本支撑动静分段)。要观察组的通信协定版本,能够在组中肆意成员实行以下语句施行盘问:

root

localhost:(none):3:SELECTgroup_replication_get_


转载请注明:http://www.aierlanlan.com/tzrz/978.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了