MySQL MGR 集群新增节点
Posted 总要冲动一次
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL MGR 集群新增节点相关的知识,希望对你有一定的参考价值。
前言
服务器规划现状(CentOS7.x)
IP地址 | 主机名 | 部署角色 |
---|---|---|
192.168.x.101 | mysql01 | mysql |
192.168.x.102 | mysql02 | mysql |
192.168.x.103 | mysql03 | mysql |
192.168.x.104 | proxysql01 | proxysql、keepalived |
192.168.x.105 | proxysql02 | proxysql、keepalived |
新增服务器IP:192.168.x.106 主机名:mysql04 部署角色:mysql
新增后服务器规划(CentOS7.x)
IP地址 | 主机名 | 部署角色 |
---|---|---|
192.168.x.101 | mysql01 | mysql |
192.168.x.102 | mysql02 | mysql |
192.168.x.103 | mysql03 | mysql |
192.168.x.106 | mysql04 | mysql |
192.168.x.104 | proxysql01 | proxysql、keepalived |
192.168.x.105 | proxysql02 | proxysql、keepalived |
将安装包 mysql_cluster_ha_pack.zip 上传至新增服务器,并解压(需要包请私我)。
上传位置 /root/
一、基础配置
1.1 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
1.2 关闭selinux
# 获取selinux状态
getenforce
# 临时关闭
setenforce 0
# 永久关闭需要重启
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux
1.3 修改主机名
# 临时修改
hostnamectl --transient set-hostname xxxx
# 永久修改需要重启 --static可以省略
hostnamectl --static set-hostname xxxx
1.4 修改hosts
vim /etc/hosts
192.168.x.101 mysql01
192.168.x.102 mysql02
192.168.x.103 mysql03
192.168.x.106 mysql04
192.168.x.104 proxysql01
192.168.x.105 proxysql02
一、新增读节点
1.1 安装MySQL
cd /root/mysql_cluster_ha_pack/mysql
mv mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar /root
# 执行 mysql_auto_install.sh 前请确认 /opt/module/mysql 目录不存在
sh mysql_auto_install.sh
# 提示输入 root 用户密码
(Default password: root):xxxxxx
1.2 配置MySQL
新节点确保server id和其他节点不一致
vim /etc/my.cnf
# 追加下面内容
server-id=4
gtid_mode=ON
enforce_gtid_consistency=ON
log-bin=binlog
binlog_checksum=NONE
binlog_format=ROW
transaction_write_set_extraction=XXHASH64
loose-group_replication_recovery_use_ssl=ON
loose-group_replication_group_name="bbbbbbbb-bbbb-cccc-dddd-eeeeeeeeeeee"
loose-group_replication_start_on_boot=OFF
loose-group_replication_local_address="mysql04:24901"
loose-group_replication_group_seeds="mysql01:24901,mysql02:24901,mysql03:24901,mysql04:24901"
loose-group_replication_bootstrap_group=OFF
master_info_repository=TABLE
relay_log_info_repository=TABLE
log_slave_updates=ON
max_connections=2000
其中 group_replication_group_seeds 需要在所有节点增加新加入节点的IP。
# 其他节点执行
sed -i 's#group_replication_group_seeds=\\"mysql01:24901,mysql02:24901,mysql03:24901\\"#group_replication_group_seeds=\\"mysql01:24901,mysql02:24901,mysql03:24901,mysql04:24901\\"#' /etc/my.cnf
# 进入mysql命令行执行
set global group_replication_group_seeds="mysql01:24901,mysql02:24901,mysql03:24901,mysql04:24901"
1.3 初始化MySQl
-
创建用户
-- 主从复制用户 CREATE USER rpl_user@'%' IDENTIFIED BY 'rpl202302'; GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%'; -- Proxysql监控用户 CREATE USER 'monitor'@'%' IDENTIFIED BY "monitor@2023"; CREATE USER 'proxysql'@'%' IDENTIFIED BY "proxysql@2023"; GRANT ALL PRIVILEGES ON *.* TO 'monitor'@'%'; GRANT ALL PRIVILEGES ON *.* TO 'proxysql'@'%'; FLUSH PRIVILEGES;
-
创建视图
USE sys; SOURCE /root/mysql_cluster_ha_pack/proxysql/addition_to_sys.sql
-
安装插件
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
1.4 加入 MGR 集群
-
导出数据
# 在 mysql03 上执行 mysqldump 导出用户数据 mysqldump -uroot -p123456 --single-transaction --master-data=2 -B dbname > /root/dbname.sql # 将数据复制到新节点mysql04上 scp /root/dbname.sql @mysql04:/root
-
导入数据
-- 在 mysql04 上执行导入 RESET MASTER; source /root/dbname.sql
-
加入集群(mysql 命令行)
-- 加入 MGR 集群 CHANGE MASTER TO MASTER_USER="rpl_user", MASTER_PASSWORD="rpl202302" FOR CHANNEL 'group_replication_recovery'; -- 启动组 START GROUP_REPLICATION;
1.5 查询节点
最后检查是否加入成功
-- 所有节点执行
SELECT * FROM performance_schema.replication_group_members;
-- 查询是否为只读节点
SELECT * FROM sys.gr_member_routing_candidate_status;
以上是关于MySQL MGR 集群新增节点的主要内容,如果未能解决你的问题,请参考以下文章