5.7.20 多实例

数据库 | MySQL:5.7.20 多实例——MGR部署实战

MGR介绍

基于传统异步复制和半同步复制的缺陷——数据的一致性问题无法保证,MySQL官方在5.7.17版本正式推出组复制(MySQL Group Replication,简称MGR)。

由若干个节点共同组成一个复制组,一个事务的提交,必须经过组内大多数节点(N / 2 + 1)决议并通过,才能得以提交。如上图所示,由3个节点组成一个复制组,Consensus层为一致性协议层,在事务提交过程中,发生组间通讯,由2个节点决议(certify)通过这个事务,事务才能够最终得以提交并响应。

引入组复制,主要是为了解决传统异步复制和半同步复制可能产生数据不一致的问题。组复制依靠分布式一致性协议(Paxos协议的变体),实现了分布式下数据的最终一致性,提供了真正的数据高可用方案(是否真正高可用还有待商榷)。其提供的多写方案,给我们实现多活方案带来了希望。

1. 创建用户

useradd mysql

2. 上传5.7.20软件到/usr/local解压

tar -zxvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz mv mysql-5.7.20-linux-glibc2.12-x86_64/  mysql

3. 环境变量

vi /root/.bash_profileexport PATH=$PATH:/usr/local/mysql/binmkdir -p /data/3306/data  /data/3307/data /data/3308/datachown -R mysql.mysql /data /usr/local/mysql

4. 配置文件说明

配置示例:++++++++++3306++++++[mysqld]user=mysqldatadir=/data/3306/databasedir=/usr/local/mysqlport=3306socket=/data/3306/mysql.sockserver_id=1gtid_mode=ONenforce_gtid_consistency=ONmaster_info_repository=TABLErelay_log_info_repository=TABLEbinlog_checksum=NONElog_slave_updates=ONlog_bin=binlogbinlog_format=ROWtransaction_write_set_extraction=XXHASH64loose-group_replication_group_name="22d56f7c-dfe5-4eb1-a21a-cf9c27e8d625"loose-group_replication_start_on_boot=offloose-group_replication_local_address="192.168.29.128:33061"loose-group_replication_group_seeds="192.168.29.128:33061,192.168.29.128:33062,192.168.29.128:33063"loose-group_replication_bootstrap_group=offloose-group_replication_single_primary_mode=FALSEloose-group_replication_enforce_update_everywhere_checks= TRUE++++++++++3307++++++[mysqld]user=mysqldatadir=/data/3307/databasedir=/usr/local/mysqlport=3307socket=/data/3307/mysql.sockserver_id=2gtid_mode=ONenforce_gtid_consistency=ONmaster_info_repository=TABLErelay_log_info_repository=TABLEbinlog_checksum=NONElog_slave_updates=ONlog_bin=binlogbinlog_format=ROWtransaction_write_set_extraction=XXHASH64loose-group_replication_group_name="22d56f7c-dfe5-4eb1-a21a-cf9c27e8d625"loose-group_replication_start_on_boot=offloose-group_replication_local_address="192.168.29.128:33062"loose-group_replication_group_seeds="192.168.29.128:33061,192.168.29.128:33062,192.168.29.128:33063"loose-group_replication_bootstrap_group=offloose-group_replication_single_primary_mode=FALSEloose-group_replication_enforce_update_everywhere_checks= TRUE++++++++++3308++++++[mysqld]user=mysqldatadir=/data/3308/databasedir=/usr/local/mysqlport=3308socket=/data/3308/mysql.sockserver_id=3gtid_mode=ONenforce_gtid_consistency=ONmaster_info_repository=TABLErelay_log_info_repository=TABLEbinlog_checksum=NONElog_slave_updates=ONlog_bin=binlogbinlog_format=ROWtransaction_write_set_extraction=XXHASH64loose-group_replication_group_name="22d56f7c-dfe5-4eb1-a21a-cf9c27e8d625"loose-group_replication_start_on_boot=offloose-group_replication_local_address="192.168.29.128:33063"loose-group_replication_group_seeds="192.168.29.128:33061,192.168.29.128:33062,192.168.29.128:33063"loose-group_replication_bootstrap_group=offloose-group_replication_single_primary_mode=FALSEloose-group_replication_enforce_update_everywhere_checks= TRUE
组复制部分,配置文件介绍:group_replication变量使用的loose-前缀是指示Server启用时尚未加载复制插件也将继续启动transaction_write_set_extraction = XXHASH64##指示Server必须为每个事务收集写集合,并使用XXHASH64哈希算法将其编码为散列loose-group_replication_group_name="01e5fb97-be64-41f7-bafd-3afc7a6ab555"##表示将加入或者创建的复制组命名为01e5fb97-be64-41f7-bafd-3afc7a6ab555##可自定义(通过cat /proc/sys/kernel/random/uuid)loose-group_replication_start_on_boot=off ##设置为Server启动时不自动启动组复制loose-group_replication_local_address="192.168.29.128:33061" ##绑定本地的192.168.29.128及33061端口接受其他组成员的连接,IP地址必须为其他组成员可正常访问loose-group_replication_group_seeds="192.168.29.128:33061,192.168.29.128:33062,192.168.29.128:33063"##本行为告诉服务器当服务器加入组时,应当连接到192.168.29.128:33061,192.168.29.128:33062,192.168.29.128:33063##这些种子服务器进行配置。本设置可以不是全部的组成员服务地址。loose-group_replication_bootstrap_group = off ##配置是否自动引导组loose-group_replication_ip_whitelist=”10.30.0.0/16,10.31.0..0/16,10.27.0.0/16″##配置白名单,默认情况下只允许192.168.29.128连接到复制组,如果是其他IP则需要配置。

5. 初始化数据,并启动数据库节点

/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data/usr/local/mysql/bin/mysqld --initialize-insecure  --user=mysql --basedir=/usr/local/mysql --datadir=/data/3308/datamysqld_safe --defaults-file=/data/3306/my.cnf &mysqld_safe --defaults-file=/data/3307/my.cnf &mysqld_safe --defaults-file=/data/3308/my.cnf &

6. 3306节点加入GR

创建复制用户mysql -S /data/3306/mysql.sockset sql_log_bin=0; grant replication slave,replication client on *.* to repl@'localhost' identified by '123'; grant replication slave,replication client on *.* to repl@'127.0.0.1' identified by '123'; grant replication slave,replication client on *.* to repl@'192.168.29.%' identified by '123';  SET SQL_LOG_BIN=1; 注:如果为三台独立节点,需要将localhost、127.0.0.1和远程主机域都授权用户开启分布式复制 change master to master_user='repl',master_password='123' for channel 'group_replication_recovery';加载GR插件install plugin group_replication soname 'group_replication.so';show plugins;启动复制程序set global group_replication_bootstrap_group=ON;start group_replication;set global group_replication_bootstrap_group=OFF;#检测组是否创建并已加入新成员select * from performance_schema.replication_group_members;

7. 3307加入GR:**

创建复制用户mysql -S /data/3307/mysql.sockset sql_log_bin=0; grant replication slave,replication client on *.* to repl@'localhost' identified by '123'; grant replication slave,replication client on *.* to repl@'127.0.0.1' identified by '123'; grant replication slave,replication client on *.* to repl@'192.168.29.%' identified by '123'; SET SQL_LOG_BIN=1; 注:如果为三台独立节点,需要将localhost、127.0.0.1和远程主机域都授权用户 开启分布式复制 change master to master_user='repl',master_password='123' for channel 'group_replication_recovery';加载GR插件install plugin group_replication soname 'group_replication.so';show plugins;启动复制程序start group_replication;#检测组是否创建并已加入新成员select * from performance_schema.replication_group_members;注: 前面的用户密码修改和创建用户操作必须设置binlog不记录,执行后再打开,否则会引起START GROUP_REPLICATION执行报错:ERROR 3092 (HY000): The server is not configured properly to be an active member of the group. Please see more details on error log.解决方案是:根据提示打开group_replication_allow_local_disjoint_gtids_join选项,mysql命令行执行:mysql> set global group_replication_allow_local_disjoint_gtids_join=ON;然后再执行:mysql> start group_replication;

8. 3308加入GR

创建复制用户mysql -S /data/3308/mysql.sockset sql_log_bin=0; grant replication slave,replication client on *.* to repl@'localhost' identified by '123'; grant replication slave,replication client on *.* to repl@'127.0.0.1' identified by '123'; grant replication slave,replication client on *.* to repl@'192.168.29.%' identified by '123'; set sql_log_bin=1; 注:如果为三台独立节点,需要将localhost、127.0.0.1和远程主机域都授权用户 开启分布式复制 change master to master_user='repl',master_password='123' for channel 'group_replication_recovery';加载GR插件install plugin group_replication soname 'group_replication.so';show plugins;启动复制程序start group_replication;#检测组是否创建并已加入新成员select * from performance_schema.replication_group_members;
(0)

相关推荐

  • 面试被问MySQL 主从复制,怎么破?

    一.前言 随着应用业务数据不断的增大,应用的响应速度不断下降,在检测过程中我们不难发现大多数的请求都是查询操作. 此时,我们可以将数据库扩展成主从复制模式,将读操作和写操作分离开来,多台数据库分摊请求 ...

  • Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合

    来自:CSDN,作者:云深i不知处 链接:https://blog.csdn.net/mu_wind/article/details/109516995 先贴上几个案例,水平高超的同学可以挑战一下: ...

  • 散偏汤实例——困扰20年的头痛,散偏汤加减5付见效

    上周发布了一篇关于偏头痛的文章,就有粉丝问我怎么服用.在这里我想说明一下,中医治病不是说一个方子能包治百病,中医之所以能渊远流传下来,靠的是辨证论治. 分享一则案例 治疗前 患者50多岁,头痛已有20 ...

  • 行医20年用实例说明,中医不光能治病,还...

    行医20年用实例说明,中医不光能治病,还能治大病! 糖尿病不用多说,现在有不少人都深受其害,西医说了这是一种只能终身服药,不可治愈的"绝症",一般他们追求5年能控制住,就已经算很好 ...

  • 收藏!20条非常实用的Python代码实例

    据说Python之父-Guido Van Rossum打算让CPython更快,速度直接翻五倍,这是实实在在的好消息. Python一直以来被诟病速度慢,影响开发效率,希望这次Guido老爷子能帮py ...

  • 20个会计分录实例(收藏)

    [业务1]为扩大经营规模,公司收到投资者A的货币资金300 000 元,存入银行.公司的实际出资额不应享有的对耀华公司注册资本比例相等. 借:银行存款 300 000 贷:实收资本-A公司 300 0 ...

  • 刘宪权教授的刑法总论课:讲透20 热门司法实例,理论与实务并重

    导语:刑法学是与社会生活关联性极强的应用型学科,层出不穷的司法实例,也令刑法学变得愈发错综复杂.为了帮助法律人吃透刑法学原理,同时应用于实际,智拾网诚邀华东政法大学刑事法学研究院院长.中国刑法学研究会 ...

  • 详解最新变频空调快修大全,5分钟实例,学会能省开支的20%

    摘要:变频空调现在在市面上很受家庭的欢迎,因为它的节能,舒适感等优势,很多人都下大笔钱来买,但是变频空调的维修整体来说,次数比较多而维修且费用高,所以今天小编特意为大家整理市面上最新最受欢迎的品牌变频 ...

  • 环保酵素治斑秃20天见效(实例分享)

    无论您远走何方 斑秃别称: 圆形脱发,圆秃,鬼剃头 病因不明. 在毛囊周围有淋巴细胞浸润,且本病有时合并其他自身免疫性疾病(如白癜风.特应性皮炎),故目前认为本病的发生可能存在自身免疫的发病机制. 遗 ...

  • 20多个宜家家具实例 - DIY 你的房间

    预算有限但需求多多? 不妨在宜家里找到一些适合的家具自己组装打造一个温馨舒适,别具一格的家. 玄关鞋柜,简洁大方.即可以收纳,又可以坐下换鞋,还可以临时放置出门的外套,包包. 高低组合,辅以对比色墙漆 ...