技术干货 | MGR新手超全入门指南 GreatSQL部署MGR集群及运维知识全get!

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

**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实例后,首次用这个密码登入,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值