当前位置: 首页 > news >正文

【Linux】重生之从零开始学习运维之主从MGR高可用

MGR集群部署

12、15、18主机环境准备

ssh免密码登录

\rm -rf .ssh/*
ssh-keygen
ssh-copy-id 127.1
scp -r .ssh 10.0.0.12:/root/
ssh root@10.0.0.12

还原基础环境

systemctl stop mysqld
\rm -rf /var/lib/mysql/*
id mysql

vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid

初始化mysql

mysqld --initialize-insecure --user=mysql --basedir=/usr --datadir=/var/lib/mysql
systemctl start mysqld

设定用户认证策略

mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';"

配置文件环境

12主机

生成uuid
uuidgen

定制配置文件
cat >> /etc/my.cnf.d/mysql-server.cnf <<- eof
# 为了版本兼容性,更改默认的用户认证插件
default_authentication_plugin=mysql_native_password
# 设置MySQL插件目录:MGR基于插件,必须设置插件路径
plugin_dir=/usr/lib64/mysql/plugin
# 复制框架
server_id=12
# 开启binlog的GTID模式(MGR强制要求)
gtid_mode=ON
# 开启后MySQL只允许能够保障事务安全,并且能够被日志记录的SQL语句被执行
enforce_gtid_consistency=ON
# 关闭binlog校验(MGR强制要求)
binlog_checksum=NONE
log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE# 组复制设置
# server必须为每个事务收集写集合,并使用XXHASH64哈希算法将其编码为散列
transaction_write_set_extraction=XXHASH64
# 启用组复制模块
plugin_load_add='group_replication.so'
# 告知插件加入或创建组命名,UUID
group_replication_group_name="14b78170-6fff-43a9-bf74-ea40051ac164"
# server启动时不自启组复制,为了避免每次启动自动引导具有相同名称的第二个组,所以设置为OFF。
group_replication_start_on_boot=off
# 告诉插件使用IP地址,端口33061用于接收组中其他成员转入连接
# 注意:此处可以使用ip地址,也可以使用主机名方式
group_replication_local_address="10.0.0.12:33061"
# 启动组server,种子server,加入组应该连接这些的ip和端口;其他server要加入组得由组成员同意
# 注意:此处可以使用ip地址,也可以使用主机名方式
group_replication_group_seeds="10.0.0.12:33061,10.0.0.15:33061,10.0.0.18:33061"
# 配置此服务器为引导组,这个选项必须仅在一台服务器上设置,
# 并且仅当第一次启动组或者重新启动整个组时。成功引导组启动后,将此选项设置为关闭。
group_replication_bootstrap_group=off
# 指定当前节点向集群其他成员报告的自身的主机名或 IP 地址,用于成员间通信和连接
# 这是保证集群成员间正确通信的基础配置。
report_host=10.0.0.12
report_port=3306
eof

启动服务
systemctl restart mysqld
ss -tunlp | grep mys

 15主机

定制配置文件
cat >> /etc/my.cnf.d/mysql-server.cnf <<- eof
# 为了版本兼容性,更改默认的用户认证插件
default_authentication_plugin=mysql_native_password
plugin_dir=/usr/lib64/mysql/plugin
# 复制框架
server_id=15
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE# 组复制设置
transaction_write_set_extraction=XXHASH64
plugin_load_add='group_replication.so'
group_replication_group_name="14b78170-6fff-43a9-bf74-ea40051ac164"
group_replication_start_on_boot=off
group_replication_local_address="10.0.0.15:33061"
group_replication_group_seeds="10.0.0.12:33061,10.0.0.15:33061,10.0.0.18:33061"
group_replication_bootstrap_group=off
report_host=10.0.0.15
report_port=3306
eof

启动服务

18主机

定制配置文件
cat >> /etc/my.cnf.d/mysql-server.cnf <<- eof
# 为了版本兼容性,更改默认的用户认证插件
default_authentication_plugin=mysql_native_password
plugin_dir=/usr/lib64/mysql/plugin 
# 复制框架
server_id=18
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE# 组复制设置
transaction_write_set_extraction=XXHASH64
plugin_load_add='group_replication.so'
group_replication_group_name="14b78170-6fff-43a9-bf74-ea40051ac164"
group_replication_start_on_boot=off
group_replication_local_address="10.0.0.18:33061"
group_replication_group_seeds="10.0.0.12:33061,10.0.0.15:33061,10.0.0.18:33061"
group_replication_bootstrap_group=off
report_host=10.0.0.18
report_port=3306
eof

启动服务

集群认证配置

12主机设定脚本

cat > cluster_auth_init.sql <<-eof
# 如下操作不记录二进制日志
SET SQL_LOG_BIN=0;
# 创建rpl_user账户,此账户用于实现主从数据同步
CREATE USER rpl_user@'%' IDENTIFIED BY '123456';
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@'%';
# 创建一个远程连接用户,便于图形化管理工具使用
create user 'remote'@'%' identified with mysql_native_password by '123456';
grant all privileges on *.* to remote@'%';
FLUSH PRIVILEGES;
# 恢复二进制日志功能并且重置二进制日志
SET SQL_LOG_BIN=1;
RESET MASTER;
eof

执行脚本
mysql -uroot -p'123456' < cluster_auth_init.sql

15主机设定脚本

cat > cluster_auth_init.sql <<-eof
SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY '123456';
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@'%';
create user 'remote'@'%' identified with mysql_native_password by '123456';
grant all privileges on *.* to remote@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
RESET MASTER;
eof

执行脚本
mysql -uroot -p'123456' < cluster_auth_init.sql

18主机设定脚本

cat > cluster_auth_init.sql <<-eof
> SET SQL_LOG_BIN=0;
> CREATE USER rpl_user@'%' IDENTIFIED BY '123456';
> 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@'%';
> create user'remote'@'%' identified with mysql_native_password by '123456';
> grant all privileges on *.* to remote@'%';
> FLUSH PRIVILEGES;
> SET SQL_LOG_BIN=1;
> RESET MASTER;
> eof

执行脚本
mysql -uroot -p'123456' < cluster_auth_init.sql

查看集群插件

12主机

mysql -uroot -p'123456' -e "show plugins;"

15主机

mysql -uroot -p'123456' -e "show plugins;"

18主机

mysql -uroot -p'123456' -e "show plugins;"

启动集群环境

SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION USER='rpl_user', PASSWORD='123456';
SET GLOBAL group_replication_bootstrap_group=OFF;

http://www.lryc.cn/news/612134.html

相关文章:

  • 无人机航拍数据集|第6期 无人机垃圾目标检测YOLO数据集772张yolov11/yolov8/yolov5可训练
  • 【python】OpenCV—Defect Detection
  • AI浪潮下,FPGA如何实现自我重塑与行业变革
  • 深度模拟用户行为:用Playwright爬取B站弹幕与评论数据
  • 2025年高防IP隐身术:四层架构拆解源站IP“消失之谜”
  • 微算法科技(NASDAQ:MLGO)利用鸽群分散算法,提高区块链交易匹配算法效能
  • Kafka ISR机制和Raft区别:副本数优化的秘密
  • 智能提示词引擎的革新与应用:PromptPilot使用全解析
  • 北京JAVA基础面试30天打卡03
  • PDF注释的加载和保存的实现
  • Go语言数据类型深度解析:位、字节与进制
  • Git 乱码文件处理全流程指南:从识别到彻底清除
  • NodeJs学习日志(1):windows安装使用node.js 安装express,suquelize,sqlite,nodemon
  • 将英文PDF文件完整地翻译成中文的4类方式
  • jspdf或react-to-pdf等pdf报错解决办法
  • 使用阿里云服务器部署dify实战
  • Linux_详解进程信号
  • Python在大数据时代的角色与挑战:连接数据与智能的关键引擎
  • 大数据之HBase
  • 数字驾驶舱是什么意思?如何搭建驾驶舱
  • Hive【应用 04】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
  • 技术博客:从HTML提取到PDF生成的完整解决方案
  • 周志华院士西瓜书实战(二)MLP+SVM+贝叶斯分类器+决策树+集成学习
  • 19day-人工智能-机器学习-分类算法-决策树
  • 在LLM小型化趋势下,AI Infra需要做出哪些相应调整?
  • TrustZone技术详解————这篇是AI写的包括图
  • [滑动窗口]904. 水果成篮
  • Vue Router 路由的创建和基本使用(超详细)
  • BM89 合并区间
  • Diamond基础1:认识Lattice器件