MySQL MGR 集群新增节点

Posted 总要冲动一次

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL MGR 集群新增节点相关的知识,希望对你有一定的参考价值。

前言

服务器规划现状(CentOS7.x)

IP地址主机名部署角色
192.168.x.101mysql01mysql
192.168.x.102mysql02mysql
192.168.x.103mysql03mysql
192.168.x.104proxysql01proxysql、keepalived
192.168.x.105proxysql02proxysql、keepalived

新增服务器IP:192.168.x.106 主机名:mysql04 部署角色:mysql

新增后服务器规划(CentOS7.x)

IP地址主机名部署角色
192.168.x.101mysql01mysql
192.168.x.102mysql02mysql
192.168.x.103mysql03mysql
192.168.x.106mysql04mysql
192.168.x.104proxysql01proxysql、keepalived
192.168.x.105proxysql02proxysql、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 集群新增节点的主要内容,如果未能解决你的问题,请参考以下文章

Mysql MGR 多主模式集群部署

Mysql MGR 多主模式集群部署

Mysql MGR 多主模式集群部署

mysql-MGR高可用集群

MySQL MGR 集群从数据库显示RECOVRING

MySQL手记20 -- MySQL Group Replication(MGR组复制)