Mysql 组复制(MGR)部署

1. 还原 MySQL 所有节点
复制代码
# 手动方式还原所有节点数据
[root@mysql-node1 ~]# /etc/init.d/mysqld stop
[root@mysql-node1 ~]# rm -rf /data/mysql/*

# 配置 MySQL 基础参数 (my.cnf)
[root@mysql-node1 ~]# cat > /etc/my.cnf <<EOF
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
server-id=10   #不同主机id不同
log-bin=mysql-bin
gtid_mode=ON
enforce-gtid-consistency=ON
default_authentication_plugin=mysql_native_password
log_slave_updates=ON
binlog_format=ROW
binlog_checksum=NONE
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
EOF

# 初始化 MySQL 数据
[root@mysql-node1 ~]# mysqld --user=mysql --initialize
2. 部署组复制
复制代码
# 设置所有 MySQL 节点的 hosts 解析
[root@mysql-node1 ~]# cat > /etc/hosts <<EOF
172.25.254.10      mysql-node1
172.25.254.20      mysql-node2
172.25.254.30      mysql-node3
EOF

# 追加组复制插件及参数配置到 my.cnf
[root@mysql-node1 ~]# cat >> /etc/my.cnf <<EOF
plugin_load_add='group_replication.so'
group_replication_group_name= "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa "
group_replication_start_on_boot=off
group_replication_local_address= "172.25.254.10:33061 "
group_replication_group_seeds= "172.25.254.10:33061,172.25.254.20:33061,172.25.254.30:33061 "
group_replication_bootstrap_group=off
group_replication_single_primary_mode=OFF
EOF
# 注意:其他两台主机需修改 local_address 为各自 IP

# 启动 MySQL 服务
[root@mysql-node1 ~]# /etc/init.d/mysqld start
3. 配置组复制(首台主机 Bootstrap)
复制代码
# 登录 MySQL 配置复制用户和权限
[root@mysql-node1 ~]# mysql -uroot -p'初始密码'
mysql> alter user root@localhost identified by 'lee';
mysql> SET SQL_LOG_BIN=0;
mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'lee';
mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
mysql> GRANT CONNECTION_ADMIN ON *.* TO rpl_user@'%';
mysql> GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
mysql> GRANT GROUP_REPLICATION_STREAM ON *.* TO rpl_user@'%';
mysql> FLUSH PRIVILEGES;
mysql> SET SQL_LOG_BIN=1;

# 配置复制通道并启动组复制
mysql> CHANGE REPLICATION SOURCE TO SOURCE_USER='rpl_user', SOURCE_PASSWORD='lee' FOR CHANNEL 'group_replication_recovery';
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION USER='rpl_user', PASSWORD='lee';
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;

# 查看组成员状态
mysql> SELECT * FROM performance_schema.replication_group_members;
4. 配置组复制(其余主机加入)
复制代码
# 在 node2 和 node3 上执行类似用户配置命令
# ... (用户创建与授权步骤同上) ...

# 启动组复制加入集群
mysql> CHANGE REPLICATION SOURCE TO SOURCE_USER='rpl_user',SOURCE_PASSWORD='lee' FOR CHANNEL 'group_replication_recovery';
# 若报错需先重置 master
mysql> reset master;
mysql> START GROUP_REPLICATION USER='rpl_user', PASSWORD='lee';

# 验证所有节点 ONLINE
mysql> SELECT * FROM performance_schema.replication_group_members;
5. 测试数据同步
复制代码
# 在 node1 创建数据库和表
mysql> create database timinglee;
mysql> create table timinglee.userlist (username VARCHAR(10) PRIMARY KEY NOT NULL, password VARCHAR(50) NOT NULL);
mysql> INSERT INTO timinglee.userlist VALUES ('user1','111');

# 在 node2 和 node3 查询并插入数据,验证多主读写同步
mysql> select * from timinglee.userlist;
mysql> insert into timinglee.userlist values ('user2','222');
相关推荐
qq_2837200518 分钟前
Python3 模块精讲:pymysql(第三方)- 连接 MySQL
mysql·adb·pymysql
y = xⁿ1 小时前
MySQL八股知识合集
android·mysql·adb
一只小白菜2 小时前
macOS MySQL 简易操作手册(基于 zsh + MySQL 8.0.24)
adb
小米渣的逆袭4 小时前
Android ADB 完全使用指南
android·adb
小肝一下7 小时前
3. 数据类型
android·数据库·mysql·adb
大连好光景1 天前
ADB复杂命令拆解
测试工具·adb·android-studio
小菜同学爱学习2 天前
兜底保障!MySQL运维实战与常见问题排查全解析
运维·mysql·adb
嵌入式×边缘AI:打怪升级日志2 天前
100ASK_T113-Pro开发板上手体验:硬件介绍、系统烧录、串口与 ADB 调试
adb
运维全栈笔记2 天前
K8S部署MySQL主从复制实现高可用数据库
mysql·adb·云原生·容器·系统架构·kubernetes·kubelet
九皇叔叔3 天前
MySQL 8.x Binlog 核心实操:查看、切换、清理
android·mysql·adb·binlog