mgr mysql 大规模使用,mysql mgr搭建

  mgr mysql 大规模使用,mysql mgr搭建

  前言MySQL 8.0.30,这个版本在MGR上没有大的变化。为什么我说值得上MGR?

  GIPK因为8.0.30才增加了SQL _ generate _ invisible _ primary _ key参数,简称GIPK模式!

  在GIPK模式下,如果在创建表时没有显式定义主键,将自动添加一个不可见的主键索引。请参考以下两个表格:

  # # SQL _ generate _ invisible _ primary _ key=不在构建的表中

  mysql SHOW创建表auto_0\G

  *************************** 1\.第*************************行

  表格:auto_0

  创建表:创建表“auto_0 ”(

  ` C1 varchar(50)默认为空,

  ` c2` int默认为空

  )ENGINE=InnoDB DEFAULT CHARSET=utf8mb 4 COLLATE=utf8mb 4 _ 0900 _ ai _ ci

  集合中的1行(0.00秒)

  # # SQL _ Generate _ Invisible _ Primary _ Key=在构建的表上

  mysql显示创建表auto_1\G

  *************************** 1\.第*************************行

  表格:自动_1

  创建表:创建表` auto_1 `(

  ` my _ row _ id ` bigint unsigned NOT NULL AUTO _ INCREMENT/*!80023隐形*/,

  ` C1 varchar(50)默认为空,

  ` c2` int默认为空,

  主键(` my_row_id `)

  )ENGINE=InnoDB DEFAULT CHARSET=utf8mb 4 COLLATE=utf8mb 4 _ 0900 _ ai _ ci

  1 row in set (0.00 sec)在这个函数正式设计出来之前,我早就在percona的工程师博客上听过这个设计思路。当时觉得很好很可行。现在官方已经在工程上实现了(老叶备注:其实阿里云RDS很早就实现了类似的功能)。这是一个伟大的设计。

  自动创建不可见主键依赖于 INVISIBLE 关键字,所以select * from xxx的结果与前面的兼容,不会有多余的my_row_id列。如果表本身有主键,那么GIPK不会自动创建主键。如果在创建表时没有显式指定主键,请不要在创建表时包含名为my_row_id的列,因为GIPK模式自动创建的不可见主键列称为my_row_id,会导致创建表失败。只有在创建表格时,才会触发GIPK功能。如果该表已经创建并且没有主键,请自己求解或重建该表。他解决了许多人对经理的一个硬性要求。

  其实不建议主从架构甚至单机架构没有主键。现在,GIPK的这个特性可以让那些懒惰的开发者不再阻挡MGR的崛起。

  8.0.30经理,上车!

  高可用架构MySQL已经很久没有一个可靠的高可用架构方案了。所有高可用性架构均由第三方提供,如keepalived主从/双主架构、MHA架构和orchestrator架构。直到5.7.17才出现了第一个官方的高可用性架构管理器。

  为什么我说前面三个流行的架构不靠谱?我来一一说说。

  Keepalived主从/双主架构,因为是双机自仲裁架构,既是运动员的跑步数据库,又是裁判的仲裁数据库,势必会出大问题。有可能最后大家都以为自己是主人的时候,大家都捧着VIP,也就是所谓的裂脑现象。MHA架构,一般三台主机,A,B,C三台机器,假设A为主,B为从,C可以部署从也可以不部署。假设C上没有部署MySQL,C只进行仲裁,即C仲裁A和B,仲裁人是同一个人C,这种情况下脑裂的风险很低。因此,MHA比keepalived架构可靠得多,MHA也支持第二仲裁链路的配置。但是MHA至少有4.5年没有更新代码了,而且作者也从来没有在MySQL8.0上宣称支持,所以我强烈不推荐MySQL8.0的MHA,除非你有能力重新开发MHA架构。MHA的仲裁节点本身可用性不高,会出现单点的问题,也有点不爽。MHA有gtid,但是当主库挂机但主库主机不挂机时,不会出现binlog补码bug。这只能通过半同步来规避,这个有能力的学生可以自己修复代码。但是他的代码是用perl写的,说服了很多人。Orchestrator原本是明日之星,但2021年7月,作者表示退役。可以说这个项目已经处于半黄状态。这是一个比MHA好得多的架构,而且是用go语言写的。有能力的同学可以考虑二次开发后再吃,没有二手能力的同学吃起来可能会比较痛苦。反正我检测到了很多bug,也改不了代码。再来看MGR,官方开发的。可以保证可靠性和稳定性,不存在作者跑路的现象。此外,MGR采用paxso仲裁算法。三机架构就是三个节点投票,得到两票的可以选主。一般在正常使用中不会裂他们的脑。

  5.7 MGR可以上车吗?MySQL8.0的MGR比MySQL5.7的MGR有以下优势,所以MGR不适合5.7版本。

  上表没费多大力气总结。其实应该有更多的对比项来证明5.7不适合MGR。是最后一个,导致5.7无法上MGR(老叶备注:如果非要上5.7的MGR,强烈建议选择GreatSQL版本5.7.36-39,相比MySQL官方社区版有很多改进和升级)。

  版权归作者所有:原创作品来自博主小二上九8,转载请联系作者取得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: