暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MGR部署:单主模式---基础篇

沃趣技术 2020-12-02
1802



作者  张彦东 · 沃趣科技数据库工程师

出品  沃趣科技

组复制作为MySQL Server的插件提供,并且集群中的每个MySQL server都需要配置和安装插件。

1.在单主模式下部署MGR:

集群中的每个MySQL实例都可以在独立的物理主机上运行,这是部署MGR的推荐方法。本节着重说明如何部署一个三节点的MGR集群,每个实例在不同的主机上运行。

如下图片展示了一个部署在不同主机上的三节点MGR集群的架构:

1.1初始化安装:

配置启动MySQL的步骤略过,不是本系列的重点,下面是配置文件的一个示例:

通用的MySQL server配置本文不会指出,下面的配置只会针对于搭建MGR集群需要重点关注的配置给出相应的说明。

server端配置:

用MyISAM存储引擎的情况下,使用mysql_upgradeMySQL升级实例时(在MySQL 8.0.16之前),可能会升级失败,可以在运行mysql_upgrade时重新启用该存储引擎,然后在重新启动服务器时再次禁用掉。

disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE #8.0.20及其之前额版本需要开启此参数
log_bin=binlog #8.0.3及其之前的版本需要开启
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE
transaction_write_set_extraction=XXHASH64 #8.0.2及其之前需要开启此参数

MGR配置部分:
plugin_load_add='group_replication.so'
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=off #是否需要随着MySQL Server一并启动MGR插件,在有PRIMARY节点时,建议重新设置为ON
group_replication_local_address"s1:33061" #当前节点service地址
group_replication_group_seeds"s1:33061,s2:33061,s3:33061" #种子节点的service地址
group_replication_bootstrap_group=off #是否使用这个Server来引导集群
loose-group_replication_enforce_update_everywhere_checks=off
loose-group_replication_ip_whitelist='0.0.0.0/0'
loose-group_replication_single_primary_mode=on
loose-group_replication_gtid_assignment_block_size=1

为每个成员保留的连续GTID的数量,默认值为1000000

loose-group_replication_clone_threshold=50000 #超过指定事务延迟数量后触发Clone Plugin重搭备库

clone插件相关:

plugin-load-add=mysql_clone.so 
loose-clone_autotune_concurrency=ON 
loose-clone_max_concurrency=16 
loose-clone_max_data_bandwidth=100 
loose-clone_max_network_bandwidth=100 
loose-clone_ddl_timeout=300

在这里为什么要用这个插件,我们后面会详细讨论。

2.启动集群中的所有节点:

此过程按照正常启动三个单机MySQL实例的步骤即可,具体步骤略过。
如果没有在配置文件中指定组复制插件,则实例启动时不会自动安装组复制插件,需要在实例启来时,在每个节点上执行如下命令手动安装组复制插件:
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
安装成功后在每个节点执行show plugins;输出如下:
root@localhost:mysql.sock 11:29:16 [(none)]> show plugins; 
+---------------------------------+----------+--------------------+----------------------+---------+ 
| Name | Status | Type | Library | License | 
+---------------------------------+----------+--------------------+----------------------+---------+ 
| group_replication | ACTIVE | GROUP REPLICATION | group_replication.so | GPL | 
| clone | ACTIVE | CLONE | mysql_clone.so | GPL | 
+---------------------------------+----------+--------------------+----------------------+---------+

3.搭建MGR:

3.1创建用户:

mysql> SET SQL_LOG_BIN=0;
mysql> CREATE USER repl_user@'%' IDENTIFIED BY 'user_repl';
mysql> GRANT REPLICATION SLAVE ON . TO rpl_user@'%';
mysql> GRANT BACKUP_ADMIN ON . TO 'repl_user'@'%';
mysql> FLUSH PRIVILEGES;
mysql> SET SQL_LOG_BIN=1;

3.2配置复制通道:

mysql> CHANGE MASTER TO MASTER_USER='repl_user*', MASTER_PASSWORD='user_repl' FOR CHANNEL 'group_replication_recovery';

3.3启动MGR集群:

3.3.1引导节点启动:

mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION;
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;

或者通过指定复制通道用户来启动:

mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION USER='repl_user', PASSWORD='user_repl';
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;

检查集群是否启动且primary节点是否成功加入集群:

root@localhost:mysql.sock 11:43:53 [(none)]> SHOW STATUS LIKE 'group_replication_primary_member'
+----------------------------------+--------------------------------------+ 
| Variable_name | Value 
+----------------------------------+--------------------------------------+ 
|
 group_replication_primary_member | bfd7119e-0d2d-11eb-8c01-fa481f05d800 | 
+----------------------------------+--------------------------------------+ 
1 row in set (0.00 sec)
mysql> SELECT * FROM performance_schema.replication_group_members;

3.3.2非引导节点启动:

SET SQL_LOG_BIN=0;
CREATE USER repl_user@'%' IDENTIFIED BY 'user_repl';
GRANT REPLICATION SLAVE ON . TO repl_user@'%';
GRANT BACKUP_ADMIN ON . TO repl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='repl_user', MASTER_PASSWORD='password*' FOR CHANNEL 'group_replication_recovery';
mysql> START GROUP_REPLICATION;
mysql> START GROUP_REPLICATION USER='rpl_user', PASSWORD='password'; #用此方式启动集群也可以

重复上述步骤,将剩下的节点加入集群中即可。

注意:在非引导节点上执行上述命令,返回结果为OK集群才算启动成功。

4.集群数据同步:

将组成员加入集群时,组复制使用分布式恢复过程对其进行数据同步。分布式恢复涉及使用group_replication_recovery的复制通道将事务从引导节点的二进制日志传输到新加入成员。
因此,必须设置具有正确权限的复制用户,以便组复制可以建立直接的成员到成员复制通道。如果已将组成员设置为支持将远程克隆操作用作分布式恢复的一部分(可从MySQL 8.0.17获得),则复制用户还将用作引导节点上的克隆用户,并且需要正确的权限。

| 作者简介
张彦东·沃趣科技数据库工程师
MySQL爱好者,熟悉MySQL体系结构,擅长MySQL故障诊断和排查,喜好钻研开源技术,热衷于MySQL及其周边技术分享。


相关链接

MySQL 一个让你怀疑人生的hang死现象

集群架构:多主模式---基础篇

集群架构:单主模式---基础篇

组复制背景:初识MGR---基础篇

MySQL权限表损坏导致无法启动

K8S服务暴露: HAProxy在RDS场景下的妙用

深入浅出Zookeeper(五):Leader选举

深入浅出Zookeeper(四):客户端的请求在服务器中经历了什么

深入浅出Zookeeper(三):Watch实现剖析

组复制常见疑问 | 全方位认识 MySQL 8.0 Group Replication

组复制要求和限制 | 全方位认识 MySQL 8.0 Group Replication

组复制系统变量 | 全方位认识 MySQL 8.0 Group Replication

组复制升级 | 全方位认识 MySQL 8.0 Group Replication

组复制性能 | 全方位认识 MySQL 8.0 Group Replication

组复制安全 | 全方位认识 MySQL 8.0 Group Replication

组复制常规操作-使用xtrabackup备份恢复或添加组成员 | 全方位认识MySQL8.0 Group Replication

组复制常规操作-网络分区&混合使用IPV6与IPV4 | 全方位认识 MySQL 8.0 Group Replication

组复制常规操作-分布式恢复 | 全方位认识 MySQL 8.0 Group Replication

组复制常规操作-事务一致性保证 | 全方位认识 MySQL 8.0 Group Replication

组复制常规操作-在线配置组 | 全方位认识 MySQL 8.0 Group Replication

再述mysqldump时域问题

揭秘 MySQL 主从环境中大事务的传奇事迹

MySQL 执行DDL语句 hang住了怎么办?

手把手教你认识OPTIMIZER_TRACE

MySQL行级别并行复制能并行应用多少个binlog group?

binlog server还是不可靠吗?

MySQL binlog基于时间点恢复数据失败是什么鬼?

MySQL高可用工具Orchestrator系列六:Orchestrator/raft一致性集群

MySQL高可用工具Orchestrator系列五:raft多节点模式安装

MySQL高可用工具Orchestrator系列四:拓扑恢复

MySQL高可用工具Orchestrator系列三:探测机制

select into outfile问题一则

开源监控系统Prometheus的前世今生

prometheus监控多个MySQL实例

prometheus配置MySQL邮件报警

MySQL问题两则

Kubernetes scheduler学习笔记

直方图系列1

执行计划-12:基数反馈

执行计划-11:真实数据

执行计划-10:猜想

执行计划-9:多倍操作

执行计划-8:成本、时间等

大数据量删除的思考(四)

大数据量删除的思考(三)

日志信息记录表|全方位认识 mysql 系统库

复制信息记录表|全方位认识 mysql 系统库

时区信息记录表|全方位认识 mysql 系统库

Oracle RAC Cache Fusion系列十八:Oracle RAC Statisticsand Wait Events

Oracle RAC Cache Fusion 系列十七:Oracle RAC DRM

Oracle RAC CacheFusion 系列十六:Oracle RAC CurrentBlock Server


更多干货,欢迎来撩~


文章转载自沃趣技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论