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

mysql——搭建MGR集群

MySQL的MGR(Group Replication,组复制)是一种基于分布式协议的高可用、高一致性解决方案‌;

分为两种模式:

  • 单主模式:仅一个节点可写,其余为只读节点,避免多写冲突,适合大多数业务场景‌;
  • 多主模式:所有节点均可读写,但需业务层处理潜在冲突,复杂度较高‌;

需要3台主机,构建一主两从或者三个全主;

搭建步骤:(如果中途出现错误可以查看/var/log/mysql/error.log错误日志)

1.安装mysql,至少8.0版本,安装MGR插件;

三台主机分别登录mysql,执行安装MGR命令:

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

(安装完mysql,默认用户名密码在/etc/mysql/debian.cnf中,使用登录并修改自己的root密码)

查看插件命令:

SHOW PLUGINS;

2.配置hosts和主机名;

三台主机分别修改/etc/hosts文件:

sudo vi /etc/hosts,追加:

192.168.1.84 mysqla
192.168.1.85 mysqlb
192.168.1.86 mysqlc

三台主机分别设置自己的主机名:

sudo hostnamectl set-hostname 上面host里自己ip的主机名

例如84的主机:

3.修改mysql配置文件;

三台主机分别编辑mysql配置文件:

sudo vi /etc/mysql/my.cnf

分别添加:

(为了直接开启多主模式,设置了single_primary_mode为OFF、enforce_update_everywhere_checks为ON,默认不设置是单主模式,即mode ON和checks OFF)

(三台主机中,server_id要设置成不同的,local_address要设置成hosts中自己的主机名称,group_seeds是三台主机的,端口不是3306而是同步使用的新的端口,自己指定一个)

(group_name的uuid可以使用linux命令:new_uuid=$(uuidgen);echo $new_uuid; 生成唯一uuid;

[mysqld]
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
default_authentication_plugin=mysql_native_password

transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="76aaeada-726c-47c0-af01-8aca50604f99"
loose-group_replication_start_on_boot=OFF
loose-group_replication_local_address="mysqla:33306"
loose-group_replication_group_seeds="mysqla:33306,mysqlb:33306,mysqlc:33306"
loose-group_replication_bootstrap_group=OFF
group_replication_single_primary_mode=OFF
group_replication_enforce_update_everywhere_checks=ON

例如86主机:

配置好保存退出vi并执行:

sudo systemctl daemon-reload

然后重启mysql服务:

sudo systemctl restart mysql

4.组建MGR;

三台主机分别登陆mysql,创建集群同步用户,执行:

set sql_log_bin=0;
DROP USER IF EXISTS 'rpl_user'@'%';
CREATE USER rpl_user@'%' IDENTIFIED BY '123456abcd';
grant replication slave on *.* to rpl_user@'%';
flush privileges;
set sql_log_bin=1;
RESET MASTER;

然后,随便选其中一个服务当主服务执行:

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

再在剩下两个服务中执行:

CHANGE MASTER TO MASTER_USER="rpl_user", MASTER_PASSWORD="123456abcd" FOR CHANNEL 'group_replication_recovery';
START GROUP_REPLICATION;

到此集群就建好了;

5.查看集群状态;

执行mysql命令:

SELECT * FROM performance_schema.replication_group_members;

(自己的member id查看:SHOW VARIABLES LIKE 'server_uuid';)

(如果自己的uuid跟别的服务重复了,可用root权限删除/var/lib/mysql/auto.cnf文件,重启mysql自动生成一个)

单主多主模式切换:

主要就是修改group_replication_single_primary_mode和group_replication_enforce_update_everywhere_checks配置,配置文件里配置或者直接命令修改;

先三个主机分别执行:

单主到多主:(先mode=OFF)
STOP GROUP_REPLICATION;
set global group_replication_single_primary_mode=OFF;
set global group_replication_enforce_update_everywhere_checks=ON;
多主到单主:(注意先关checks)
STOP GROUP_REPLICATION;
set global group_replication_enforce_update_everywhere_checks=OFF;
set global group_replication_single_primary_mode=ON;


再选一个构建主节点:
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;

其余两个加入从节点:
START GROUP_REPLICATION;

http://www.dtcms.com/a/284416.html

相关文章:

  • CommonJS 功能介绍
  • 基于dcmtk的dicom工具 第二章 图像接受StoreSCP(2)
  • Python Day16
  • Java行为型模式---备忘录模式
  • 从零开始的云计算生活——第三十三天,关山阻隔,ELK日志分析
  • rtp传输推流h265
  • Unity使用GTCRN实现流式语音增强
  • SpringBoot一Web Flux、函数式Web请求的使用、和传统注解@Controller + @RequestMapping的区别
  • 探微“元宇宙”:概念内涵、形态发展与演变机理
  • CSS面试题及详细答案140道之(41-60)
  • Kiro AI IDE上手初体验!亚马逊出品,能否撼动Cursor的王座?
  • Amazon S3成本优化完全指南:从入门到精通
  • 8 几何叠加分析
  • 系统设计时平衡超时时间与多因素认证(MFA)带来的用户体验下降
  • 量子计算的安全与伦理:当技术革命叩击数字时代的潘多拉魔盒
  • sqli-labs靶场通关笔记:第25-26a关 and、or、空格和注释符多重过滤
  • 4G模块 A7680通过MQTT协议连接到腾讯云
  • AI赋能Baklib,重塑企业知识管理与客户支持方式
  • Curr. Res. Food Sci.|福州大学吕旭聪团队:富硒鼠李糖乳杆菌GG重塑肠-肝轴,显著缓解酒精性肝损伤
  • 网络通信之基础知识
  • deep learning(李宏毅)--(六)--loss
  • day19-四剑客与正则-特殊符号正则-awk
  • [yotroy.cool] 记一次 Git 移除某个不该提交的文件
  • iOS WebView 调试与性能优化 跨平台团队高效协作方法解析
  • PyTorch生成式人工智能(18)——循环神经网络详解与实现
  • 可视化图解算法56:岛屿数量
  • Word 中为什么我的图片一拖就乱跑,怎么精确定位?
  • python使用pymysql库
  • modbus 校验
  • 泛型与类型安全深度解析及响应式API实战