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

MySQL集群高可用架构---mysql高可用之组复制 (MGR)

单主模式:

准备环境三台机器配置好MySQL

主机名IP mysql版本
master192.168.1.1218.0.40 Source distribution
rep1192.168.1.1228.0.40 Source distribution
rep2192.168.1.1238.0.40 Source distribution
  • 配置好三台机器的域名解析 
 vim /etc/hosts

配置主机器master:

首先配置好主的配置文件


[mysqld]
log_timestamps=SYSTEM
server_id=121
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
gtid_mode=ON
enforce_gtid_consistency=ON
log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
transaction_write_set_extraction=XXHASH64
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.1.121:33061"
group_replication_group_seeds= "master:33061,rep1:33061,rep2:33061"
group_replication_bootstrap_group=off
group_replication_ip_whitelist="192.168.1.0/24,127.0.0.1/8"
group_replication_recovery_use_ssl=on
  • disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"   #组复制,数据必须存储在 InnoDB 事务存储引擎中
  • transaction_write_set_extraction=XXHASH64  #默认开启,组复制使用此信息在所有组成员上进行冲突检测
  • plugin_load_add='group_replication.so'  #将组复制插件添加到服务器启动时加载的插件列表中
  • group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"  #告诉插件它正在加入或创建的组名为“aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa”
  • group_replication_start_on_boot=off  #插件在服务器启动时不自动启动操作,使用手动启动插件
  • group_replication_local_address= "192.168.168.128:33061"  #与其它主机通信时使用的网络地址和端口
  • group_replication_group_seeds= "s1:33061,s2:33061,s3:33061"  #设置组成员的主机名和端口
  • group_replication_bootstrap_group=off  #指示插件是否启动该组,在首次引导组时在一个服务器上启用
  • group_replication_ip_whitelist="192.168.168.0/24,127.0.0.1/8"  #仅允许白名单内的 IP 加入复制组
  • group_replication_recovery_use_ssl=on #caching_sha2_password插件要求安全传输密码,开启主从之间的连接使用SSL/TLS 

重启MySQL

/etc/init.d/mysqld restart

登录数据库对主进行一下配置:

在主的数据库中使用sql语句添加复制账号并授予权限,从上面也需要设置一样的账号

创建用户并授予权限

SET SQL_LOG_BIN=0;
CREATE USER rp@'%' IDENTIFIED BY '123';
GRANT REPLICATION SLAVE ON *.* TO rp@'%';
GRANT CONNECTION_ADMIN ON *.* TO rp@'%';
GRANT BACKUP_ADMIN ON *.* TO rp@'%';
GRANT GROUP_REPLICATION_STREAM ON *.* TO rp@'%';
FLUSH PRIVILEGES; 刷新权限
SET SQL_LOG_BIN=1;
CHANGE REPLICATION SOURCE TO SOURCE_USER='rp', SOURCE_PASSWORD='123' FOR CHANNEL 'group_replication_recovery';

启动MGR集群---------使用当前服务器(192.168.1.121)作为引导服务器启动一个新的群组复制过程或者恢复一个已经存在的群组

SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION USER='rp',PASSWORD='123';
SET GLOBAL group_replication_bootstrap_group=OFF;

在主上查看组信息

SELECT * FROM performance_schema.replication_group_members;

从的机器配置:

配置MySQL的配置文件

vim /etc/my.cnf

[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log_timestamps=SYSTEM
server_id=122
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
gtid_mode=ON
enforce_gtid_consistency=ON
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.1.122:33061"
group_replication_group_seeds="master:33061,rep1:33061,rep2:33061"
group_replication_ip_whitelist="192.168.1.0/24,127.0.0.1/8"
group_replication_bootstrap_group=off
group_replication_recovery_use_ssl=on

重启数据库:

/etc/init.d/mysqld restart

登录数据库对从进行以下配置(192.168.1.122,192.168.1.123):

创建用户并授予权限:

SET SQL_LOG_BIN=0;
CREATE USER rp@'%' IDENTIFIED BY '123';
GRANT REPLICATION SLAVE ON *.* TO rp@'%';
GRANT CONNECTION_ADMIN ON *.* TO rp@'%';
GRANT BACKUP_ADMIN ON *.* TO rp@'%';
GRANT GROUP_REPLICATION_STREAM ON *.* TO rp@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE REPLICATION SOURCE TO SOURCE_USER='rp', SOURCE_PASSWORD='123' FOR CHANNEL 'group_replication_recovery';

开启组复制

START GROUP_REPLICATION USER='rp', PASSWORD='123';

查看组的信息

 SELECT * FROM performance_schema.replication_group_members;

测试:

  当master宕机后会在从中寻找新的主

测试三台机器对数据库增删改查的情况

在master中创新一个新的数据库

从库中也相应的同步了新的数据库

在从中测试尝试创建库表----从库只能读取不能创建库表,也不能插入数据

测试当主机宕机后的情况

#停掉主机的组复制
stop group_replication;

从的组信息--rep1成为新的主机----这时rep1可以对数据库进行数据的插入:

当讲原来的master开启组复制后的情况----master不能恢复主的身份:


多主模式:

配置三台机器的/etc/my.cnf文件增加两条配置:


#关闭单master模式
loose-group_replication_single_primary_mode=off
#多主一致性检查
loose-group_replication_enforce_update_everywhere_checks=ON

在其中一台主机里面执行以下mysql命令

SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;

查看组的成员

在剩下两台机器中配置:

start group_replication;

测试:

增删改查情况

master创建库

rep1创建库表

rep2增加表的id字段的主键并增加数据


文章转载自:

http://pZI9i9C3.fhghy.cn
http://YAZV0U7o.fhghy.cn
http://b2scIjO4.fhghy.cn
http://LU0igKhV.fhghy.cn
http://WfitFMZy.fhghy.cn
http://PQMaRhhQ.fhghy.cn
http://JeVpOln9.fhghy.cn
http://95suasqy.fhghy.cn
http://kwaY4z4o.fhghy.cn
http://40pjiJBa.fhghy.cn
http://sSaJiERJ.fhghy.cn
http://6CxUFt6b.fhghy.cn
http://YVhbFMxz.fhghy.cn
http://dQ9KIdE8.fhghy.cn
http://mcy12mWu.fhghy.cn
http://wN319Qh5.fhghy.cn
http://dg1i9We0.fhghy.cn
http://jbwQAKDW.fhghy.cn
http://nHGoj17a.fhghy.cn
http://wJgWcEnS.fhghy.cn
http://S6gjXIVr.fhghy.cn
http://pwgYujhi.fhghy.cn
http://uTbY1oZn.fhghy.cn
http://dHa9o43s.fhghy.cn
http://s7O31npB.fhghy.cn
http://uAlEbo4z.fhghy.cn
http://TQWkbKTz.fhghy.cn
http://8Ry6paKE.fhghy.cn
http://NEmZEZWj.fhghy.cn
http://qB4QCt03.fhghy.cn
http://www.dtcms.com/a/367884.html

相关文章:

  • nginx采用反向代理的时候使用变量的坑
  • Kali搭建sqli-labs靶场
  • 【硬件笔记】负载是如何烧MOS的?
  • 从 Prompt 到 Context:LLM OS 时代的核心工程范式演进
  • 设计模式从入门到精通之(六)策略模式
  • 【译】GitHub Copilot for Azure(预览版)已经在 Visual Studio 2022 中推出
  • langchain 提示模版 PromptTemplate
  • Ubuntu开发笔记:1.常见操作指令
  • DDD+WebAPI实战
  • 狗都能看懂的HunYuan3D 1.0详解
  • CodeQL(Mac)安装与测试(Visual Studio)简明指南
  • Next.js 介绍:为什么选择它来构建你的下一个 Web 应用?
  • $attrs学习
  • 无定位更安全:5G 高清视频终端的保密场景适配之道
  • GitHub 热榜项目 - 日榜(2025-09-05)
  • 一文看懂什么是GaN HEMT以及其工艺流程(氮化镓高电子迁移率晶体管)
  • 【AI编程工具】快速搭建图书管理系统
  • 安卓学习 之 EditText 控件
  • 2025职教技能大赛汽车制造与维修赛道速递-产教融合实战亮剑​
  • java面试中经常会问到的zookeeper问题有哪些(基础版)
  • 光伏项目无人机踏勘--如何使用无人机自动航线规划APP
  • jenkins加docker 部署项目
  • linux离线安装elasticsearch8.19.3
  • Jenkins环境搭建与使⽤
  • Jenkins 监控方案:Prometheus + Grafana 实践
  • 【论文阅读】Security of Language Models for Code: A Systematic Literature Review
  • 神经网络算法各种层的原理(基于Keras)--输入层,全连接层,卷积层,池化层,嵌入层,长短期记忆网络层等
  • Github | MoneyPrinterTurbo:自动化视频内容生成系统
  • JUnit入门:Java单元测试全解析
  • 如何下载B站视频,去水印,翻译字幕