评论

收藏

[MySQL] 老司机带你在MySQL领域“大吉大利,晚上吃鸡”

数据库 数据库 发布于:2021-07-03 21:27 | 阅读数:528 | 评论:0

  老张superzs来更新博客啦,大家新年好啊,好久没有跟大家见面了。说句走心的话,很想你们!最近因为要出版自己的第一本书《MySQL王者晋级之路》一直在忙于宣传。实在抱歉,没能及时更博。今后还是会多奉献精彩文章!
  最近绝地求生这个游戏太火了,当我问我的朋友们你们闲时在干嘛,基本上告诉我的答案都是在"吃鸡"啊!想必很多老铁们也玩,那一定应该知道绝地求生中有把枪叫AWM。此枪伤害裸132点,爆头330,即使三级头爆头必死,无防弹衣或者防弹衣有破损,一枪死。是这个游戏中威力最大的狙击×××,足足是98K的两倍。
  那么在MySQL领域有没有这么一把威力超大的“枪”呢~答案是必须有啊!但老张先问你们一个问题。
  请问你搭建MySQL复制的时候,还在执行备份恢复,在从库进行change master to的操作嘛?如果是那你可就真的落后了。
  本章介绍MySQL官方推荐的一款高可用集群方案MySQL Group Replication。简称:MGR(组复制)。它是官方推出的一种基于Paxos协议的状态机复制,彻底解决了基于传统的异步复制和半同步复制中数据一致性问题无法保证的情况。也让MySQL数据库涉及的领域更广,彻底拥有了打开互联网金融行业的大门。2016年12月 MySQL Group Replication推出了第一个GA版本发布在MySQL5.7.17中。但目前直接投入到生产环境中使用,风险还是比较大。建议等其越来越成熟之后,我们再真正投入使用。
随着MySQL8.0版本即将与我们见面,再配合官方逐渐成熟的高可用集群 Group Replication方案,到那时再看看谁还是我们MySQL的对手,全都不在了!MySQL数据库就是作者的信仰,爱你无怨无悔。
MGR组复制原理

  先来谈谈什么叫做组复制。组复制是一种可用于实现容错系统的技术。复制组是一个通过消息传递相互交互的server集群。复制组由多个server成员组成,如下图的master1,master2,master3,所有成员独立完成各自的事务。当客户端先发起一个更新事务,该事务先在本地执行,执行完成之后就要发起对事务的提交操作了。在还没有真正提交之前需要将产生的复制写集广播出去,复制到其他成员。如果冲突检测成功,组内决定该事务可以提交,其他成员可以应用,否则就回滚。最终,这意味着所有组内成员以相同的顺序接收同一组事务。因此组内成员以相同的顺序应用相同的修改,保证组内数据强一致性。

DSC0000.png
  实战第3步:
  在三个节点上分别创建复制账号,命令如下
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.56.%' IDENTIFIED BY '123456';
  实战第4步:
  在三个节点上分别安装GR插件,命令如下
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
  组件安装完成之后,展示结果:
root@db 13:23:  [(none)]> show plugins;

DSC0001.png
  实战第7步:
  在192.168.56.102上面启动第二个节点的mgr集群服务。命令如下
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';
set global group_replication_allow_local_disjoint_gtids_join=ON;  
START GROUP_REPLICATION;
  启动成功之后,查看节点状态信息。命令如下
SELECT * FROM performance_schema.replication_group_members;
关注下面的标签,发现更多相似文章