MySQL 8.0.28 MGR for CentOS Linux 7.6单主模式部署教程

1 环境准备1.1 服务器列表1.2 基础环境准备配置1.2.1 操作系统版本1.2.2 关闭防火墙1.2.3 关闭slinux1.2.3.1 临时关闭selinux1.2.3.2 永久关闭selinux1.2.4 修改 hosts 文件1.2.5 配置内核参数1.2.6 配置文件系统描述符1.2.7 配置PAM2 MySQL 8.0.28二进制安装2.1 环境准备2.1.1 下载MySQL安装包2.1.2 安装MySQL依赖包2.2 安装 MySQL 8.0.282.2.1 本地上传安装包2.2.2 解压安装包2.2.3 拷贝文件到/usr/local/mysql2.2.4 设置环境变量      2.2.5 创建MySQL用户和组      2.2.6 创建相关目录并修改权限    2.2.7 设置配置文件2.2.8 初始化数据(initialize参数的异同) 2.2.8.1 方法一:--initialize 初始化分配管理员一个临时密码2.2.8.1.1 初始化2.2.8.1.2 查看初始化后生成的文件2.2.8.2 方法二:--initialize-insecure 初始化管理员的密码为空2.2.8.2.1 先删除方法一生成的文件2.2.8.2.2 初始化2.2.8.2.3 查看初始化后生成的文件2.2.8.2.4 mysql赋权2.2.9 MySQL服务启动脚本2.3 启动/停止mysql服务    2.3.1 方法一:以脚本方式启动/停止2.3.2 方法二:以sys-v启动/停止2.3.3 方法三:以systemd启动/停止2.3.3.1 设置随系统自动启动2.3.3.2 以systemd启动/停止2.4 查看MySQL服务是否启动2.4.1 方法一:查看端口2.4.2 方法二:查看进程2.4.3 方法三:查看服务状态2.5 登录MySQL3 主节点配置 (Primary)3.1 为组复制配置实例属性3.2 创建复制、克隆用户3.3 检查加载插件3.4 引导启动组复制4 从节点一 (Secondary)4.1 为组复制配置实例属性4.2 创建复制、克隆用户4.3 检查加载插件4.4 启动组复制4.5 确认数据同步情况5 从节点二 (Secondary)5.1 为组复制配置实例属性5.2 创建复制、克隆用户5.3 检查加载插件5.4 启动复制5.5 确认数据同步情况6 错误记录6.1 上传问题6.2 初始化数据问题6.3 查看端口问题6.4 启动报错6.5 MY-0117356.6 MY-0108976.7 MY-0105846.8 MY-011516


1 环境准备

组复制是MySQL Server 8.0提供的内置 MySQL 插件,因此不需要进行额外安装。

三实例的架构是最小规模的 MGR 架构,添加更多实例可提高 Group 的容错能力,一个 Group 中最多可以有 9 个实例。

1.1 服务器列表

1.2 基础环境准备配置

三台服务器均需操作,以节点1为例:

1.2.1 操作系统版本

CentOS Linux release 7.6.1810 (Core)

cat /etc/redhat-release 

1.2.2 关闭防火墙

systemctl stop firewalld.service && systemctl disable firewalld.service

1.2.3 关闭slinux

1.2.3.1 临时关闭selinux

setenforce 0

1.2.3.2 永久关闭selinux

sed -i 's/=enforcing/=disabled/g' /etc/selinux/config

1.2.4 修改 hosts 文件

cat >> /etc/hosts << EOF
10.19.68.151   gjdxdb1
10.19.68.152   gjdxdb2
10.19.68.153   gjdxdb3
EOF

1.2.5 配置内核参数

cat >>/etc/sysctl.conf <
fs.aio-max-nr = 1048576
fs.file-max = 681574400
kernel.shmmax = 13743895347
kernel.shmmni = 4096
kernel.sem = 250 32000 100 200
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
EOF

sysctl -p

1.2.6 配置文件系统描述符

cat >>/etc/security/limits.conf <
mysql soft nproc 65535
mysql hard nproc 65535
mysql soft nofile 65535
mysql hard nofile 65535
EOF

1.2.7 配置PAM

cat >>/etc/pam.d/login <
session   required     /lib/security/pam_limits.so
session   required     pam_limits.so
EOF

2 MySQL 8.0.28二进制安装

2.1 环境准备

2.1.1 下载MySQL安装包

官网下载地址:https://downloads.mysql.com/archives/community/

mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz

2.1.2 安装MySQL依赖包

yum -y install libaio

2.2 安装 MySQL 8.0.28

2.2.1 本地上传安装包

上传至/usr/src目录下:

cd /usr/src
ll

2.2.2 解压安装包

tar xf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
ll

2.2.3 拷贝文件到/usr/local/mysql

mv mysql-8.0.28-linux-glibc2.12-x86_64 /usr/local/mysql
cd /usr/local/mysql
ll

2.2.4 设置环境变量      

在/etc/profile文件的最后一行添加:export PATH=/usr/local/mysql/bin:$PATH,并使用source命令使得文件生效:

echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
tail /etc/profile
source /etc/profile
mysql -V

2.2.5 创建MySQL用户和组      

groupadd mysql
useradd -r -g mysql -s /bin/false mysql
id mysql

2.2.6 创建相关目录并修改权限    

mkdir -p /data/mysql/data
mkdir -p /data/mysql/logs
mkdir -p /data/mysql/mysqld
chown -R mysql:mysql /data/mysql

2.2.7 设置配置文件

cat >>/etc/my.cnf <[client]
default-character-set = GBK
socket=/data/mysql/mysqld/mysql.sock
[mysqld]
port=3306
user=mysql
datadir=/data/mysql/data
basedir=/usr/local/mysql
socket=/data/mysql/mysqld/mysql.sock
character-set-server=GBK
bind-address=0.0.0.0
log-error=/data/mysql/logs/gjdxdb1err.log
pid-file=/data/mysql/mysqld/mysqld.pid
slow_query_log = ON
slow_query_log_file=/data/mysql/logs/gjdxdb1slow.log
innodb_buffer_pool_size = 8G
max_connect_errors = 1000
max_connections = 2048
max_allowed_packet = 1G
wait_timeout = 3600
interactive_timeout = 3600
innodb_log_file_size=1G
innodb_log_buffer_size = 32M
innodb_lock_wait_timeout = 50
innodb_io_capacity = 1000
innodb_io_capacity_max = 2000
innodb_flush_method = O_DIRECT
sort_buffer_size = 4M
join_buffer_size = 2M
open_files_limit = 65535
tmp_table_size = 64M
max_heap_table_size = 500M
thread_cache_size = 1024
thread_stack = 256K
long_query_time = 2
binlog_cache_size = 2M
binlog_expire_logs_seconds = 604800
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:50G
#
# Disable other storage engines
#
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"

#
# Replication configuration parameters
#
server_id=151
gtid_mode=ON
enforce_gtid_consistency=ON
log_bin=binlog
log_replica_updates=ON
binlog_checksum=NONE # Not needed from 8.0.21
binlog_format=ROW
EOF

注意:其它节点请修改log-error、slow_query_log_file、server_id配置。

2.2.8 初始化数据(initialize参数的异同)

2.2.8.1 方法一:--initialize 初始化分配管理员一个临时密码

2.2.8.1.1 初始化
mysqld --defaults-file=/etc/my.cnf --initialize
tail -n 20 /data/mysql/logs/gjdxdb1err.log

其中一行临时密码信息如下:2022-11-04T15:04:53.482770Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: :fkigCGN;4fs

临时密码:fkigCGN;4fs

2.2.8.1.2 查看初始化后生成的文件
ll /data/mysql/data

2.2.8.2 方法二:--initialize-insecure 初始化管理员的密码为空

2.2.8.2.1 先删除方法一生成的文件
rm -rf /data/mysql/data/*
rm -rf /data/mysql/logs/*
ll /data/mysql/data
ll /data/mysql/logs

2.2.8.2.2 初始化
mysqld --defaults-file=/etc/my.cnf --initialize-insecure
tail -n 20 /data/mysql/logs/gjdxdb1err.log

其中一行 临时密码信息如下:

2022-11-04T15:09:46.205665Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.

管理员的密码为空

2.2.8.2.3 查看初始化后生成的文件
ll /data/mysql/data

2.2.8.2.4 mysql赋权
chown -R mysql.mysql /usr/local/mysql
chown -R mysql.mysql /data/mysql

2.2.9 MySQL服务启动脚本

MySQL服务启动脚本为mysql.server,路径:/usr/local/mysql/support-files/mysql.server

cd /usr/local/mysql/support-files
ll

可以将其拷贝到存放系统服务的管理(启动与停止)脚本/etc/init.d目录下:

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

2.3 启动/停止mysql服务    

2.3.1 方法一:以脚本方式启动/停止

./mysql.server start
./mysql.server stop

或者

sh mysqld.server start
sh mysqld.server stop

2.3.2 方法二:以sys-v启动/停止

service mysqld start
service mysqld stop

2.3.3 方法三:以systemd启动/停止

前提:先将启动脚本拷贝到/etc/init.d目录下,然后通过以下命令:

2.3.3.1 设置随系统自动启动

systemctl enable mysqld

2.3.3.2 以systemd启动/停止

systemctl start mysqld
systemctl stop mysqld

2.4 查看MySQL服务是否启动

启动MySQL

systemctl start mysqld

2.4.1 方法一:查看端口

netstat -tulnp | grep 3306

2.4.2 方法二:查看进程

ps -ef | grep mysql

2.4.3 方法三:查看服务状态

systemctl status mysqld

2.5 登录MySQL

因为前面最后是用--initialize-insecure参数初始化数据,管理员密码为空,登陆时在命令行敲入 mysql 然后回车即可登录

mysql


3 主节点配置 (Primary)

3.1 为组复制配置实例属性

以下操作请在 gjdxdb1 中执行

cp /etc/my.cnf{,.bak}

cat >>/etc/my.cnf << EOF
#
# Group Replication configuration
#
loose-group_replication_group_name="47e36f91-a232-47fc-b5a1-37e5e4b8968a"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "gjdxdb1:33061"
loose-group_replication_group_seeds= "gjdxdb1:33061,gjdxdb2:33061,gjdxdb3:33061"
loose-group_replication_bootstrap_group=off
EOF

  • plugin-load-add:实例启动时会将组复制插件加载到插件列表中;

  • group_replication_group_name:在操作系统上使用 uuidgen 命令生成或者数据库中使用 SELECT UUID() 命令生成

  • group_replication_start_on_boot:决定插件在服务启动时是否自启;

  • group_replication_local_address:内部通讯端口,推荐使用 33061;

  • group_replication_bootstrap_group:在首个实例联机后,需要设置为 off。如果多次引导组则人为触发脑裂,产生两个具有相同名称的不同组。

重启 gjdxdb1 的 MySQL 数据库

systemctl restart mysqld
tail -15 /data/mysql/logs/gjdxdb1err.log

3.2 创建复制、克隆用户

mysql -uroot -p

SET sql_log_bin=0;

CREATE USER repl_user@'%' IDENTIFIED WITH mysql_native_password BY 'ReplUser!2022';
GRANT REPLICATION SLAVE,REPLICATION CLIENT,BACKUP_ADMIN ON *.* TO repl_user@'%';
INSTALL PLUGIN group_replication SONAME 'group_replication.so';

CREATE USER clone_user@'%' IDENTIFIED WITH mysql_native_password BY 'CloneUser!2022';
GRANT REPLICATION SLAVE,REPLICATION CLIENT,BACKUP_ADMIN ON *.* TO clone_user@'%';
INSTALL PLUGIN clone SONAME 'mysql_clone.so';

ALTER USER repl_user@'%' IDENTIFIED BY 'ReplUser!2022' PASSWORD EXPIRE NEVER;
ALTER USER clone_user@'%' IDENTIFIED BY 'CloneUser!2022' PASSWORD EXPIRE NEVER;

FLUSH PRIVILEGES;

SHOW GLOBAL VARIABLES like "server_id";
SET sql_log_bin=1;
SHOW GLOBAL VARIABLES like "%gtid_mode%";
CHANGE MASTER TO MASTER_USER='repl_user',MASTER_PASSWORD='ReplUser!2022' FOR CHANNEL 'group_replication_recovery';

3.3 检查加载插件

插件安装后,需检查插件是否已成功安装,请执行命令并检查输出。

SHOW PLUGINS;

3.4 引导启动组复制

首次启动组的过程称为引导。您可以使用group_replication_bootstrap_group系统变量来引导组。引导只能由单个服务器完成,该服务器启动组并且只能执行一次。这就是group_replication_bootstrap_group选项的值未存储在实例的选项文件中的原因。如果它保存在选项文件中,则在重新启动服务器时,服务器会自动引导具有相同名称的第二个组。这将导致两个具有相同名称的不同组。若正确地引导组,请连接到 gjdxdb1 执行如下语句:

--引导启动组复制
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;

--确认成员信息
SELECT * FROM performance_schema.replication_group_members;

为了验证后续其他节点入组情况,下面将创建一个表并向其中添加一些数据进行验证。

CREATE DATABASE test;
USE test;
CREATE TABLE tb1 (col1 INT PRIMARY KEY, ccol2 TEXT NOT NULL);
INSERT INTO tb1 VALUES (1, 'Superman');

检查表的内容和二进制日志信息。

SELECT * FROM tb1;
SHOW BINLOG EVENTS;

此时,组中有一个成员 gjdxdb1,也包括一些测试数据。下面继续添加其他实例扩展组。


4 从节点一 (Secondary)

在 gjdxdb2 中,首先修改 MySQL 配置文件,该配置类似于用于服务器 gjdxdb1 的配置,但 server_idgroup_replication_local_address 除外。

4.1 为组复制配置实例属性

cp /etc/my.cnf{,.bak}

cat >>/etc/my.cnf << EOF
#
# Group Replication configuration
#
loose-group_replication_group_name="47e36f91-a232-47fc-b5a1-37e5e4b8968a"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "gjdxdb2:33061"
loose-group_replication_group_seeds= "gjdxdb1:33061,gjdxdb2:33061,gjdxdb3:33061"
loose-group_replication_bootstrap_group=off
EOF

与服务器 gjdxdb1 的配置过程类似,在配置文件就位后可以启动服务器。

systemctl restart mysqld
tail -10 /data/mysql/logs/gjdxdb2err.log

4.2 创建复制、克隆用户

然后按如下所示配置进行配置,这些命令与设置服务器 gjdxdb1 时使用的命令相同,因为用户是在组内共享。

mysql -uroot -p

SET sql_log_bin=0;

CREATE USER repl_user@'%' IDENTIFIED WITH mysql_native_password BY 'ReplUser!2022';
GRANT REPLICATION SLAVE,REPLICATION CLIENT,BACKUP_ADMIN ON *.* TO repl_user@'%';
INSTALL PLUGIN group_replication SONAME 'group_replication.so';

CREATE USER clone_user@'%' IDENTIFIED WITH mysql_native_password BY 'CloneUser!2022';
GRANT REPLICATION SLAVE,REPLICATION CLIENT,BACKUP_ADMIN ON *.* TO clone_user@'%';
INSTALL PLUGIN clone SONAME 'mysql_clone.so';

ALTER USER repl_user@'%' IDENTIFIED BY 'ReplUser!2022' PASSWORD EXPIRE NEVER;
ALTER USER clone_user@'%' IDENTIFIED BY 'CloneUser!2022' PASSWORD EXPIRE NEVER;

FLUSH PRIVILEGES;

SHOW GLOBAL VARIABLES like "server_id";
SET sql_log_bin=1;
SHOW GLOBAL VARIABLES like "%gtid_mode%";
CHANGE MASTER TO MASTER_USER='repl_user',MASTER_PASSWORD='ReplUser!2022' FOR CHANNEL 'group_replication_recovery';

4.3 检查加载插件

插件安装后,需检查插件是否已成功安装,请执行命令并检查输出。

SHOW PLUGINS;

4.4 启动组复制

gjdxdb2 启动加入组中。

START GROUP_REPLICATION;
SELECT * FROM performance_schema.replication_group_members;

4.5 确认数据同步情况

SHOW DATABASES LIKE 'test';
SELECT * FROM test.tb1;
SHOW BINLOG EVENTS;


5 从节点二 (Secondary)

向组添加其他实例与添加第 2 台服务器的步骤顺序基本相同,只是必须更改配置。总结所需的命令如下。

5.1 为组复制配置实例属性

cp /etc/my.cnf{,.bak}

cat >>/etc/my.cnf << EOF
#
# Group Replication configuration
#
loose-group_replication_group_name="47e36f91-a232-47fc-b5a1-37e5e4b8968a"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "gjdxdb3:33061"
loose-group_replication_group_seeds= "gjdxdb1:33061,gjdxdb2:33061,gjdxdb3:33061"
loose-group_replication_bootstrap_group=off
EOF

与服务器 gjdxdb1 的配置过程类似,在配置文件就位后可以启动服务器。

systemctl restart mysqld
tail -15 /data/mysql/logs/gjdxdb3err.log

5.2 创建复制、克隆用户

mysql -uroot -p

SET sql_log_bin=0;

CREATE USER repl_user@'%' IDENTIFIED WITH mysql_native_password BY 'ReplUser!2022';
GRANT REPLICATION SLAVE,REPLICATION CLIENT,BACKUP_ADMIN ON *.* TO repl_user@'%';
INSTALL PLUGIN group_replication SONAME 'group_replication.so';

CREATE USER clone_user@'%' IDENTIFIED WITH mysql_native_password BY 'CloneUser!2022';
GRANT REPLICATION SLAVE,REPLICATION CLIENT,BACKUP_ADMIN ON *.* TO clone_user@'%';
INSTALL PLUGIN clone SONAME 'mysql_clone.so';

ALTER USER repl_user@'%' IDENTIFIED BY 'ReplUser!2022' PASSWORD EXPIRE NEVER;
ALTER USER clone_user@'%' IDENTIFIED BY 'CloneUser!2022' PASSWORD EXPIRE NEVER;

FLUSH PRIVILEGES;

SHOW GLOBAL VARIABLES like "server_id";
SET sql_log_bin=1;
SHOW GLOBAL VARIABLES like "%gtid_mode%";
CHANGE MASTER TO MASTER_USER='repl_user',MASTER_PASSWORD='ReplUser!2022' FOR CHANNEL 'group_replication_recovery';

5.3 检查加载插件

插件安装后,需检查插件是否已成功安装,请执行命令并检查输出。

SHOW PLUGINS;

5.4 启动复制

START GROUP_REPLICATION;
SELECT * FROM performance_schema.replication_group_members;

此时,服务器 gjdxdb3 已引导并运行,再次确认数据同步情况。

5.5 确认数据同步情况

SHOW DATABASES LIKE 'test';
SELECT * FROM test.tb1;
SHOW BINLOG EVENTS;


6 错误记录

6.1 上传问题

报错信息:

rz
-bash: /bin/rz: 没有那个文件或目录

报错原因:因为没有安装 lrzsz解决办法:yum -y install lrzsz

yum -y install lrzsz

6.2 初始化数据问题

报错信息:

mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/bakdata/mysql/data
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

报错原因:Linux系统中缺少libaio-devel 软件包解决方法:安装软件包即可

yum -y install libaio-devel

6.3 查看端口问题

报错信息:

netstat -tulnp
-bash: netstat: command not found

报错原因:Linux系统中缺少net-tools软件包

解决方法:

netstat命令不可用,安装net-tools解决:

yum -y install net-tools

6.4 启动报错

报错信息:

Starting MySQL.The server quit without updating PID file (/data/mysql/mysqld/gjdxdb1.pid).

解决办法:

1、目录权限问题对mysql的安装目录和数据目录分别进行授权

chown -R mysql.mysql /usr/local/mysql
chown -R mysql.mysql /data/mysql
service mysqld start

2、可能进程里已经存在mysql进程

解决方法:

用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!

3、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。

4、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。

解决方法:请在[mysqld]下设置这一行:datadir = /data/mysql/data

5、可能是/data/mysql/mysqld/mysql.pid文件没有写的权限

解决方法 :

给予权限,执行 “chown -R mysql:mysql /usr/local/mysql” “chmod -R 755 /usr/local/mysql” 然后重新启动mysqld!

6、selinux惹的祸,如果是centos系统,默认会开启selinux解决方法:

关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试

7、删除mysql库文件/data/mysql/data中的“ib_*”文件,注意:** 执行该操作之前一定要对数据库进行备份,因为ibdata1存放的是所有数据文件,如果不小心删了库,那就惨了!!!(传说中的从删库到跑路。。。),然后重启mysql。

8、查看日志有如下错误提示:Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed。解决办法:

rm -rf ib_logfile*

然后启动mysql,问题解决!

9、看日志有这样的字样“initialize buffer pool,size=128.0M”,“cannot allocate memory for the pool”,大概意思是说无法分配足够的内存供pool使用。此时想到mysql配置文件中有相关的配置,于是更改如下参数:innodb_buffer_pool_size = 128#配置文件中该值默认为128M将这个值调小,再次启动mysql服务,问题解决!

10、系统上缺少mysql的依赖文件

yum -y install libaio 
yum -y install numactl

6.5 MY-011735

报错信息:

在第 2 个实例上执行“START GROUP_REPLICATION;”命令后,报出 IP 地址不匹配的信息。

前台错误信息:

ERROR 3096 (HY000): The START GROUP_REPLICATION command failed as there was an error when initializing the group communication layer.

log 错误信息:

[ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] There is no local IP address matching the one configured for the local node (gjdxdb2:33061).'

解决方法:

检查 /etc/hosts 或 IP 地址信息填写是否正确,修改正确后可正常执行。

6.6 MY-010897

报错信息:

在第 2 个实例上执行“START GROUP_REPLICATION;”命令后,日志报出密码认证相关错误信息。

[Warning] [MY-010897] [Repl] Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information.

解决方法:

本文档所使用 MySQL 版本为 8.0.28,因此语法需参考下方写法。

Or if you are providing user credentials for distributed recovery on the START GROUP_REPLICATION statement (which you can from MySQL 8.0.28):

mysql> START GROUP_REPLICATION;

6.7 MY-010584

报错信息:

[ERROR] [MY-010584] [Repl] Slave I/O for channel 'group_replication_recovery': error connecting to master 'repl@gjdxdb1:3306' - retry-time: 60 retries: 1 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. Error_code: MY-002061

解决方法:

1、修改 user 属性(MySQL 安装后)

ALTER USER repl_user@'%' IDENTIFIED WITH mysql_native_password BY 'Repl!2022';
select user,host,plugin from mysql.user;

2、创建 repl 用户时直接加上属性参数(MySQL 安装后)

CREATE USER repl_user@'%' IDENTIFIED WITH mysql_native_password BY 'Repl!2022';

3、MySQL 安装前在配置文件中加上对应的参数(MySQL 安装前)

--/etc/my.cnf

#
# Authentication
#
default_authentication_plugin=mysql_native_password

6.8 MY-011516

报错信息:

第 3 个实例启动组复制失败,后台提示 server_uuid 有冲突。

-- 前台
mysql> START GROUP_REPLICATION USER='repl', PASSWORD='Repl!2022';
ERROR 3092 (HY000): The server is not configured properly to be an active member of the group. Please see more details on error log.

-- 日志
[ERROR] [MY-011516] [Repl] Plugin group_replication reported: 'There is already a member with server_uuid c2e82b68-8737-11ec-bb84-0800278bd58e. The member will now exit the group.'

由于第 3 个虚机是以镜像方式拷贝来的,因此 server_uuid 信息一致,需处理。

解决方法:

在$datadir 路径中删除或重命名 auto.cnf 文件,重启数据库后会自动生成新的文件,此时 server_uuid 冲突的问题就不会出现了。

cd /data/mysql/data
mv auto.cnf auto.cnf.bak
systemctl restart mysqld

上图为再次执行“START GROUP_REPLICATION …”之后日志的输出,已无异常信息。


有什么吐槽或反馈意见,直接告诉我!

我会解决您说的问题哦!

温馨提示:如出现二维码失效也可直接添加微信号:ysc13803862469

请使用浏览器的分享功能分享到微信等