当前位置: 首页 > 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.xdnf.cn/news/1137259.html

相关文章:

  • 分布式分片策略中,分片数量的评估与选择
  • 基于单片机公交车报站系统/报站器
  • Jenkins Git Parameter 分支不显示前缀origin/或repo/
  • 2024年ASOC SCI2区TOP,基于干扰模型的灰狼优化算法IIE-GWO+复杂丘陵地形农业无人机轨迹规划,深度解析+性能实测
  • 医院各类不良事件上报,PHP+vscode+vue2+element+laravel8+mysql5.7不良事件管理系统源代码,成品源码,不良事件管理系统
  • 板凳-------Mysql cookbook学习 (十一--------12)
  • Python22 —— 标准库(random库)
  • Linux的Ext系列文件系统
  • 【JVM】深入理解 JVM 类加载器
  • 【推荐100个unity插件】使用C#或者unity实现爬虫爬取静态网页数据——Html Agility Pack (HAP)库和XPath 语法的使用
  • Java学习--JVM(2)
  • 学习C++、QT---27(QT中实现记事本项目实现行列显示、优化保存文件的功能的讲解)
  • 【Linux手册】缓冲区:深入浅出,从核心概念到实现逻辑
  • 数据结构:集合操作(Set Operations): 并集(Union)、交集(Intersection)、 差集(Difference)
  • 【37】MFC入门到精通——MFC中 CString 数字字符串 转 WORD ( CString, WORD/int 互转)
  • 编译原理第六到七章(知识点学习/期末复习/笔试/面试)
  • 【真·CPU训模型!】单颗i7家用本,4天0成本跑通中文小模型训练!Xiaothink-T6-mini-Preview 技术预览版开源发布!
  • 数据投毒技术之标签翻转
  • 题解:CF1829H Don‘t Blame Me
  • React Native 基础tabBar和自定义tabBar - bottom-tabs
  • 【开源软件推荐】 SmartSub,一个可以快速识别视频/音频字幕的工具
  • JavaScript进阶篇——第八章 原型链、深浅拷贝与原型继承全解析
  • 性能优化实践:Modbus 在高并发场景下的吞吐量提升(二)
  • 【Linux】第一个小程序—进度条
  • 自动化技术在造纸行业的应用:EtherCAT转PROFIBUS DP解决方案
  • 【中等】题解力扣22:括号生成
  • MyUI1.0全新现代化 Vue.js 组件库框架上线
  • HCIE - 云计算拿下后的职业选择如何规划?
  • 摩尔投票法:高效寻找数组中的多数元素
  • 基于在线地图的路径规划测评对比-综合对比城区、农村及城乡结合处的导航