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

【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.xdnf.cn/news/17192.html

相关文章:

  • 【C++】unordered系列容器使用及封装
  • WebStorm转VSCode:高效迁移指南
  • QML开发:QML中的基本元素
  • 项目设计模式草稿纸
  • Docker概述
  • chromedp 笔记
  • Prometheus监控学习-安装
  • LeetCode 112. 路径总和解题思路详解(BFS算法深入理解)
  • pipeline方法关系抽取--课堂笔记
  • SpringBoot AI心理学训练实战
  • 《计算机“十万个为什么”》之 面向对象 vs 面向过程:编程世界的积木与流水线
  • FastAPI快速入门P2:与SpringBoot比较
  • Google AI 发布 MLE-STAR:一款能够自动执行各种 AI 任务的先进机器学习工程代理
  • 使标签垂直水平居中的多种方法
  • C#案例实战
  • 利用Coze平台生成测试用例
  • 基于vscode连接服务器实现远程开发
  • HTML总结全览
  • Go 单元测试:如何只运行某个测试函数(精确控制)
  • 【前端】网站favicon图标制作
  • Kubernetes 已弃用 `apps/v1beta1` 版本的 StatefulSet
  • @【JCIDS】【需求论证】联合能力集成与开发系统知识图谱
  • [数组]977.有序数组的平方;209.长度最小的子数组
  • 跨越系统孤岛:4A架构如何实现企业级一体化协同
  • 深度解析 TCP 三次握手与四次挥手:从原理到 HTTP/HTTPS 的应用
  • 【AI论文】iLRM:一种迭代式大型3D重建模型
  • Vue3视频播放组件自定义封装、控制是否自动播放、全屏小屏控制、loading加载、静音播放等样式完全自定义控制,代码复制即用
  • JAVA学习笔记 自增与自减的使用-006
  • uniapp转app时,cover-view的坑
  • Chisel芯片开发入门系列 -- 18. CPU芯片开发和解释8(流水线架构的代码级理解)