MySQ-8.42 MGR 组复制部署及详解

目录

[1 MGR要求](#1 MGR要求)

[2 操作系统信息和软件版本](#2 操作系统信息和软件版本)

[3 集群架构图](#3 集群架构图)

[4 MySQL MGR 主库部署步骤](#4 MySQL MGR 主库部署步骤)


1 MGR要求

InnoDB 存储引擎

表上必须存在主键或唯一非空索引

MGR可允许的最大节点9个

2 操作系统信息和软件版本

root@u24-mysql-mgr-42:~# cat /etc/issue

Ubuntu 24.04.2 LTS \n \l

mysql-8.0.42-linux-glibc2.28-x86_64.tar.xz

3 集群架构图

192.168.254.40 u24-mysql-mgr-40 #主库

192.168.254.41 u24-mysql-mgr-40 #从库

192.168.254.42 u24-mysql-mgr-40 #从库

4 MySQL MGR 主库部署步骤

4.1 安装MySQL-8.0.42,采用二进制包方式安装

apt-get install libaio1 -y

tar -xf mysql-8.0.42-linux-glibc2.28-x86_64.tar.xz -C /usr/local/

cd /usr/local/

mv mysql-8.0.42-linux-glibc2.28-x86_64/ mysql-8.0.42

groupadd mysql

useradd -g mysql -s /sbin/nologin mysql

#my.cnf 配置文件

root@u24-mysql-mgr-40:~# cat /etc/my.cnf

client

socket = /mysql/data/mysql.sock

mysqld

basedir = /usr/local/mysql-8.0.42

datadir = /mysql/data

user = mysql

port = 3306

socket = /mysql/data/mysql.sock

log_error = /mysql/data/mysqld.err

log_timestamps = system

log-bin = mysql-bin

server-id = 1

#systemd 配置文件

root@u24-mysql-mgr-40:~# cat /lib/systemd/system/mysql.service

Unit

Description=MySQL server

Documentation=man:mysql(8)

After=network.target

Service

User=mysql

Group=mysql

Type=forking

PIDFile=/mysql/data/mysqld.pid

TimeoutSec=0

ExecStart=/usr/local/mysql-8.0.42/bin/mysqld --defaults-file=/etc/my.cnf --pid-file=/mysql/data/mysqld.pid --daemonize $MYSQLD_OTPS

EnvironmentFile=-/etc/sysconfig/mysql

LimitNOFILE=65535

Restart=on-failure

RestartPreventExitStatus=1

PrivateTmp=False

Install

WantedBy=multi-user.target

Alias=mysqld.service

#将MySQL已经初始化数据文件拷贝到/mysql/data 目录下

rsync -r /mysql 192.168.254.40:/

rsync -r /mysql 192.168.254.41:/

rsync -r /mysql 192.168.254.42:/

授权

chown -R mysql:mysql /mysql/

#修改uuid,保证每台服务器唯一值

root@u24-mysql-mgr-40:/mysql/data# vi auto.cnf

auto

server-uuid=4ab24c26-3a42-11f0-95cf-000c29228481

#启动MySQL服务

systemctl start mysql

systemctl enable mysql

4.2 安装MGR 主库步骤

#修改my.cnf

root@u24-mysql-mgr-40:~# vi /etc/my.cnf

client

socket = /mysql/data/mysql.sock

mysqld

basedir = /usr/local/mysql-8.0.42

datadir = /mysql/data

user = mysql

port = 3306

socket = /mysql/data/mysql.sock

log_error = /mysql/data/mysqld.err

log_timestamps = system

#MGR

disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"

gtid_mode=ON

enforce_gtid_consistency=ON

log-bin = mysql-bin

server-id = 1

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= "192.168.254.40:33061"

group_replication_group_seeds= "192.168.254.40:33061,192.168.254.41:33061,192.168.254.42:33061"

group_replication_bootstrap_group=off

#创建用户和授权

mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'password';

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> CHANGE REPLICATION SOURCE TO SOURCE_USER='rpl_user', SOURCE_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';

mysql> SET GLOBAL group_replication_bootstrap_group=ON;

mysql> START GROUP_REPLICATION;

mysql> SET GLOBAL group_replication_bootstrap_group=OFF;

#检查该组是否已创建

mysql> SELECT * FROM performance_schema.replication_group_members;

+---------------------------+--------------------------------------+------------------+-------------+--------------+-------------+----------------+----------------------------+

| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |

+---------------------------+--------------------------------------+------------------+-------------+--------------+-------------+----------------+----------------------------+

| group_replication_applier | 4ab24c26-3a42-11f0-95cf-000c29228481 | u24-mysql-mgr-40 | 3306 | ONLINE | PRIMARY | 8.0.42 | XCom |

+---------------------------+--------------------------------------+------------------+-------------+--------------+-------------+----------------+----------------------------+

1 row in set (0.01 sec)

4.3 安装MGR 从库库步骤:

#修改my.cnf

root@u24-mysql-mgr-41:~# cat /etc/my.cnf

client

socket = /mysql/data/mysql.sock

mysqld

basedir = /usr/local/mysql-8.0.42

datadir = /mysql/data

user = mysql

port = 3306

socket = /mysql/data/mysql.sock

log_error = /mysql/data/mysqld.err

log_timestamps = system

#MGR

disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"

gtid_mode=ON

enforce_gtid_consistency=ON

log-bin = mysql-bin

server-id = 2

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= "192.168.254.41:33061"

group_replication_group_seeds= "192.168.254.40:33061,192.168.254.41:33061,192.168.254.42:33061"

group_replication_bootstrap_group=off

#重启

root@u24-mysql-mgr-41:~# systemctl daemon-reload

root@u24-mysql-mgr-41:~# systemctl restart mysql

#创建用户和授权

mysql -uroot -p

SET SQL_LOG_BIN=0;

CREATE USER rpl_user@'%' IDENTIFIED BY 'password';

GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';

GRANT CONNECTION_ADMIN ON *.* TO rpl_user@'%';

GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';

GRANT GROUP_REPLICATION_STREAM ON *.* TO rpl_user@'%';

FLUSH PRIVILEGES;

SET SQL_LOG_BIN=1;

CHANGE REPLICATION SOURCE TO SOURCE_USER='rpl_user', SOURCE_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';

START GROUP_REPLICATION;

mysql> SELECT * FROM performance_schema.replication_group_members;

+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+

| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |

+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+

| group_replication_applier | 4ab24c26-3a42-11f0-95cf-000c29228481 | u24-mysql-mgr-40 | 3306 | ONLINE | PRIMARY | 8.0.42 | XCom |

| group_replication_applier | ac39f1e6-6dfa-11e6-a69d-00212844f856 | u24-mysql-mgr-41| 3306 | ONLINE | SECONDARY | 8.0.42 | XCom |

+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+

相关推荐
剩下了什么13 小时前
MySQL JSON_SET() 函数
数据库·mysql·json
山峰哥13 小时前
数据库工程与SQL调优——从索引策略到查询优化的深度实践
数据库·sql·性能优化·编辑器
较劲男子汉13 小时前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann
java搬砖工-苤-初心不变13 小时前
MySQL 主从复制配置完全指南:从原理到实践
数据库·mysql
WangYaolove131415 小时前
基于python的在线水果销售系统(源码+文档)
python·mysql·django·毕业设计·源码
山岚的运维笔记15 小时前
SQL Server笔记 -- 第18章:Views
数据库·笔记·sql·microsoft·sqlserver
roman_日积跬步-终至千里16 小时前
【LangGraph4j】LangGraph4j 核心概念与图编排原理
java·服务器·数据库
汇智信科16 小时前
打破信息孤岛,重构企业效率:汇智信科企业信息系统一体化运营平台
数据库·重构
野犬寒鸦16 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
霖霖总总16 小时前
[小技巧66]当自增主键耗尽:MySQL 主键溢出问题深度解析与雪花算法替代方案
mysql·算法