**MGR新手福利来了,一文帮大家快速掌握MGR集群的部署和运维知识点,**新建集群、添加新节点、滚动升级、切主在这全都有,超详细。
0内容提纲
-
1、运行环境
-
2、准备my.cnf配置文件
-
3、初始化MySQL实例
-
4、构建MGR集群
- 4.1 构建MGR集群前的准备工作
- 4.2 配置MGR集群PRIMARY节点
- 4.3 查看MGR集群状态
- 4.4 测试数据读写
-
5、进一步,再增加一个新节点
-
6、再进一步,切换主节点
- 6.1 先升级SECONDARY节点
- 6.2 再升级PRIMARY节点
- 6.3 手动切换PRIMARY节点
接下来,小编将详细介绍如何在单机环境下,利用GreatDB旗下的GreatSQL产品构建一个3节点的MGR集群,并用mysqld_multi进行管理。
为了简单起见,这个MGR集群采用单主(single-primary)模式,不采用多主(multi-primary)模式。
构建完MGR集群后,再添加一个新节点,以及模拟进行滚动升级和切主等其他操作。
除了MySQL官方社区版本外,如果想体验更可靠、稳定、高效的MGR,推荐使用GreatSQL版本。本文采用GreatSQL 8.0.22版本,关于这个版本的说明详见 GreatSQL,打造更好的MGR生态。
(P.S:单机模式下,如果要部署多实例并构建MGR集群,要注意避免TCP self-connect的问题,详见 bug#98151,如果采用GreatSQL版本就没这个问题了。)
1、运行环境
GreatSQL二进制包放在 /usr/local/ 下,即 basedir = /usr/local/GreatSQL-8.0.22。
三个实例按下面规划分配:
| 实例 | 端口 | detadir |
|---|---|---|
| GreatSQL-01 | 3306 | /data/GreatSQL/mgr01/ |
| GreatSQL-02 | 3307 | /data/GreatSQL/mgr02/ |
| GreatSQL-03 | 3308 | /data/GreatSQL/mgr03/ |

2、准备my.cnf配置文件
[mysqld]
basedir=/usr/local/GreatSQL-8.0.22
log_timestamps=SYSTEM
user = mysql
log_error_verbosity = 3
log-bin=binlog
binlog-format=row
log_slave_updates=ON
binlog_checksum=CRC32
master-info-repository=TABLE
relay-log-info-repository=TABLE
gtid-mode=on
enforce-gtid-consistency=true
binlog_transaction_dependency_tracking=writeset
transaction_write_set_extraction=XXHASH64
slave_parallel_type = LOGICAL_CLOCK
slave_parallel_workers=128 #可以设置为逻辑CPU数量的2-4倍
sql_require_primary_key=1
slave_preserve_commit_order=1
slave_checkpoint_period=2
#mgr
loose-plugin_load_add='mysql_clone.so'
loose-plugin_load_add='group_replication.so'
#所有节点的group_replication_group_name值必须相同
#这是一个标准的UUID格式,可以手动指定,也可以用随机生成的UUID
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa1"
#指定MGR集群各节点的IP+端口,这个端口是专用于MGR的,不是平常所说的mysqld实例端口
#如果是在多节点上部署MGR集群时,要注意这个端口是否会被防火墙拦截
loose-group_replication_group_seeds= "127.0.0.1:33061,127.0.0.1:33071,127.0.0.1:33081"
#不建议启动mysqld的同时也启动MGR服务
loose-group_replication_start_on_boot=off
#默认不要作为MGR集群引导节点,有需要时再手动执行并立即改回OFF状态
loose-group_replication_bootstrap_group=off
#当退出MGR后,把该实例设置为read_only,避免误操作写入数据
loose-group_replication_exit_state_action=READ_ONLY
#一般没什么必要开启流控机制
loose-group_replication_flow_control_mode = "DISABLED"
#【强烈】建议只用单主模式,如果是实验目的,可以尝试玩玩多主模式
loose-group_replication_single_primary_mode=ON
[mysqld_multi]
mysqld = /usr/local/GreatSQL-8.0.22/bin/mysqld
log = /data/GreatSQL/mysqld_multi.log
mysqladmin = /usr/local/GreatSQL-8.0.22/bin/mysqladmin
user=root
[mysqld3306]
datadir=/data/GreatSQL/mgr01
socket=/data/GreatSQL/mgr01/mysql.sock
port=3306
server_id=3306
log-error=/data/GreatSQL/mgr01/error.log
#指定本节点的IP+端口
loose-group_replication_local_address= "127.0.0.1:33061"
[mysqld3307]
datadir=/data/GreatSQL/mgr02
socket=/data/GreatSQL/mgr02/mysql.sock
port=3307
server_id=3307
log-error=/data/GreatSQL/mgr02/error.log
loose-group_replication_local_address= "127.0.0.1:33071"
[mysqld3308]
datadir=/data/GreatSQL/mgr03
socket=/data/GreatSQL/mgr03/mysql.sock
port=3308
server_id=3308
log-error=/data/GreatSQL/mgr03/error.log
loose-group_replication_local_address= "127.0.0.1:33081"
在这份配置文件中,[mysqld] 这部分内容是所有实例都会读取应用的,而在 [mysqld3306] 这部分配置,才是 3306 端口这个实例所独有的。
在构建MGR集群中,要保证集群各节点的 group_replication_group_name 选项值一样才行,否则就是不同的集群了。
另外,如果有防火墙的话,注意要开放各端口间的访问规则,否则无法启动MGR。
3、初始化MySQL实例
先手动创建相应的datadir,并修改目录属主为mysql用户:
[root@greatsql]# mkdir -p /data/GreatSQL/{mgr01,mgr02,mgr03}
[root@greatsql]# chown -R mysql.mysql /data/GreatSQL
执行下面的命令进行MySQL实例初始化,会自动创建InnoDB系统表空间、redo log、undo log的文件:
[root@greatsql]# /usr/local/GreatSQL-8.0.22/bin/mysqld --no-defaults --datadir=/data/GreatSQL/mgr01 --initialize --user=mysql
[System] [MY-013169] [Server] /usr/local/GreatSQL-8.0.22/bin/mysqld (mysqld 8.0.22-13) initializing of server in progress as process 18688
[System] [MY-013576] [InnoDB] InnoDB initialization has started.
[System] [MY-013577] [InnoDB] InnoDB initialization has ended.
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: h<GL%Lr:v66W
可以看到,在输出的日志中打印了root账号的临时密码(最后一行),启动mysqld实例后,首次用这个密码登入,

本文详述了如何在单机环境中利用GreatSQL构建3节点的MGR集群,涵盖新建集群、添加新节点、滚动升级和切换主节点的步骤。通过初始化MySQL实例、配置MGR集群、启动服务、测试数据读写等操作,展示了MGR集群的完整运维流程。此外,还介绍了使用mysqld_multi管理多个实例以及如何利用clone plugin进行数据复制和节点扩展。

1379

被折叠的 条评论
为什么被折叠?



