利用GreatSQL部署部署MGR集群,并完成添加新节点 、滚动升级、切主(超详细) ... ...

一文快速掌握MGR集群的部署和运维。

本文详细介绍如何在单机环境下,利用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

三个实例按下面规划分配:


实例 端口 datadir
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.22log_timestamps=SYSTEMuser = mysqllog_error_verbosity = 3log-bin=binlogbinlog-format=rowlog_slave_updates=ONbinlog_checksum=CRC32master-info-repository=TABLErelay-log-info-repository=TABLEgtid-mode=onenforce-gtid-consistency=truebinlog_transaction_dependency_tracking=writesettransaction_write_set_extraction=XXHASH64slave_parallel_type = LOGICAL_CLOCKslave_parallel_workers=128 #可以设置为逻辑CPU数量的2-4倍sql_require_primary_key=1slave_preserve_commit_order=1slave_checkpoint_period=2#mgrloose-plugin_load_add='mysql_clone.so'loose-plugin_load_add='group_replication.so'#所有节点的group_replication_group_name值必须相同#这是一个标准的UUID格式,可以手动指定,也可以用随机生成的UUIDloose-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/mysqldlog = /data/GreatSQL/mysqld_multi.logmysqladmin = /usr/local/GreatSQL-8.0.22/bin/mysqladminuser=root[mysqld3306]datadir=/data/GreatSQL/mgr01socket=/data/GreatSQL/mgr01/mysql.sockport=3306server_id=3306log-error=/data/GreatSQL/mgr01/error.log#指定本节点的IP+端口loose-group_replication_local_address= "127.0.0.1:33061"[mysqld3307]datadir=/data/GreatSQL/mgr02socket=/data/GreatSQL/mgr02/mysql.sockport=3307server_id=3307log-error=/data/GreatSQL/mgr02/error.logloose-group_replication_local_address= "127.0.0.1:33071"[mysqld3308]datadir=/data/GreatSQL/mgr03socket=/data/GreatSQL/mgr03/mysql.sockport=3308server_id=3308log-error=/data/GreatSQL/mgr03/error.logloose-group_replication_local_address= "127.0.0.1:33081"