返回顶部
首页 > 资讯 > 数据库 >MGR的搭建部署
  • 460
分享到

MGR的搭建部署

2024-04-02 19:04:59 460人浏览 独家记忆
摘要

1. MGR介绍 Mysql Group Replication(下简称:MGR)是mysql官方推出的一种基于Paxos协议的状态机复制。在MGR出现之前,用户常见的Mysql高可用方式,无论怎么变化架构

1. MGR介绍

Mysql Group Replication(下简称:MGR)是mysql官方推出的一种基于Paxos协议的状态机复制。在MGR出现之前,用户常见的Mysql高可用方式,无论怎么变化架构,本质就是Master-Slave架构。MySQL 5.7版本开始支持无损半同步复制(lossless semi-sync replication),从而进一步提示数据复制的强一致性
 

1.1 MySQL异步复制

master事务的提交不需要经过slave的确认,slave是否接收到master的binlog,master并不care。slave接收到master binlog后先写relay log,最后异步地去执行relay log中的sql应用到自身。由于master的提交不需要确保slave relay log是否被正确接受,当slave接受master binlog失败或者relay log应用失败,master无法感知
MGR的搭建部署
 
 

1.2 MySQL半同步复制

基于传统异步存在的缺陷,mysql在5.5版本推出半同步复制。可以说半同步复制是传统异步复制的改进,在master事务的commit之前,必须确保一个slave收到relay log并且响应给master以后,才能进行事务的commit。但是slave对于relay log的应用仍然是异步进行的,原理如下图所示:
MGR的搭建部署
 
 

1.3 MySQL组复制(MGR)

基于传统异步复制和半同步复制的缺陷——数据的一致性问题无法保证,MySQL官方在5.7.17版本正式推出组复制(MySQL Group Replication,简称MGR)。
 
由若干个节点共同组成一个复制组,一个事务的提交,必须经过组内大多数节点(N / 2 + 1)决议并通过,才能得以提交。如上图所示,由3个节点组成一个复制组,Consensus层为一致性协议层,在事务提交过程中,发生组间通讯,由2个节点决议(certify)通过这个事务,事务才能够最终得以提交并响应。
 
引入组复制,主要是为了解决传统异步复制和半同步复制可能产生数据不一致的问题。组复制依靠分布式一致性协议(Paxos协议的变体),实现了分布式下数据的最终一致性,提供了真正的数据高可用方案(是否真正高可用还有待商榷)。其提供的多写方案,给我们实现多活方案带来了希望。
MGR的搭建部署
 
 

1.4 MySQL组复制的特性和限制

特性优点:

1、高一致性,基于原生复制及paxos协议的组复制技术,并以插件的方式提供,提供一致数据安全保证;
2、高容错性,只要不是大多数节点坏掉就可以继续工作,有自动检测机制,当不同节点产生资源争用冲突时,不会出现错误,按照先到者优先原则进行处理,并且内置了自动化脑裂防护机制;
3、高扩展性,节点的新增和移除都是自动的,新节点加入后,会自动从其他节点上同步状态,直到新节点和其他节点保持一致,如果某节点被移除了,其他节点自动更新组信息,自动维护新的组信息;
4、高灵活性,有单主模式和多主模式,单主模式下,会自动选主,所有更新操作都在主上进行;多主模式下,所有server都可以同时处理更新操作。

限制:(具体可参考官方文档说明:https://dev.mysql.com/doc/refman/5.7/en/group-replication-requirements-and-limitations.html

1、仅支持InnoDB表,并且每张表一定要有一个主键,用于做write set的冲突检测;
2、必须打开GTID特性,二进制日志格式必须设置为ROW,用于选主与write set
3、COMMIT可能会导致失败,类似于快照事务隔离级别的失败场景
4、目前一个MGR集群最多支持9个节点
5、不支持外键于save point特性,无法做全局间的约束检测与部分事务回滚
6、二进制日志不支持binlog event checksum

 
 

2. MGR搭建

搭建参照的官方文档:
官方文档:Https://dev.mysql.com/doc/refman/5.7/en/group-replication.html
单主节点搭建地址:https://dev.mysql.com/doc/refman/5.7/en/group-replication-deploying-in-single-primary-mode.html
多主节点搭建基本和单主步骤一样,只需要配置文件my.cnf额外添加,本文以下示例为单主节点搭建,多主节点搭建亦相差无几

loose-group_replication_single_primary_mode=FALSE
loose-group_replication_enforce_update_everywhere_checks= TRUE

 
 

2.1 机器分布

主机ip 安装服务 权重
192.168.142.48 mySQL Server 5.7.18 50
192.168.142.49 mysql server 5.7.18 40
192.168.142.50 mysql server 5.7.18 30

权重:新主选举时的优先级参照,越大,优先级越高
 
 

2.2 创建hostname和ip的映射

在三台数据库服务器上都设置:

192.168.142.48      dbtest1
192.168.142.49      dbtest2
192.168.142.50      dbtest3

 
 

2.3 需要额外说明的是配置文件my.cnf额外配置

配置文件介绍参照官方文档:https://dev.mysql.com/doc/refman/5.7/en/group-replication-configuring-instances.html

# Replication Framework
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
log_bin=binlog
binlog_fORMat=ROW
log_slave_updates=ON
binlog_checksum=NONE
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "192.168.142.48:33061"
loose-group_replication_group_seeds= "192.168.142.48:33061,192.168.142.49:33061,192.168.142.50:33061"
loose-group_replication_bootstrap_group=off
loose-group_replication_member_weight=50

 
 

2.4 创建数据库实例

手动搭建或者自动化脚本分别在三台主机上配置mysql实例,这里可参考MySQL单实例搭建的方法,不在赘述
 
 

2.5 第一个节点配置

1、设置复制账号权限

SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY 'passWord';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;

2、指定恢复渠道channel

CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';

3、安装插件plugin和查看

INSTALL PLUGIN group_replication SONAME 'group_replication.so';
show plugins;

4、开启组复制

# 设置group_replication_bootstrap_group为ON是为了标示以后加入集群的服务器以这台服务器为基准,以后加入的就不需要设置
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;

5、查看mgr的状态

# 查询表performance_schema.replication_group_members
select * from performance_schema.replication_group_members;

MGR的搭建部署

 

2.6 第二个节点配置和第三个节点配置

1、设置复制账号权限

SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;

2、指定恢复渠道channel

CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';

3、安装插件plugin和查看

INSTALL PLUGIN group_replication SONAME 'group_replication.so';
show plugins;

4、开启组复制

# 这里不再需要开启group_replication_bootstrap_group,由于复制组已经被创建了,只需要将第二个节点添加进去即可
START GROUP_REPLICATION;

5、查看mgr的状态

# 查询表performance_schema.replication_group_members
select * from performance_schema.replication_group_members;

MGR的搭建部署

 
 

3. 观察相关状态和切换

1、切换

STOP GROUP_REPLICATION;会根据权重重新选择新的主master
START GROUP_REPLICATION;新加入后作为从服务器slave

 
2、相关状态查看

1、当前组成员列表
select * from performance_schema.replication_group_members;
2、当前节点详细日志应用信息
select * from performance_schema.replication_group_member_stats;
3、当前复制渠道连接信息
select * from performance_schema.replication_connection_status;
4、当前复制渠道应用信息
select * from performance_schema.replication_applier_status;
5、当前主master
select a.variable_value,b.member_host,b.member_port,member_state from performance_schema.global_status a ,performance_schema.replication_group_members b where a.variable_value=b.member_id and variable_name= 'group_replication_primary_member';

 
 
 

4. MGR动态新增和删除节点

4.1 动态新增节点配置

例如原有192.168.142.48,192.168.142.49,192.168.142.50组成MGR的基础上动态新增节点192.168.142.51
 
1、创建hostname和ip的映射
在四台数据库服务器上都设置:

192.168.142.48      dbtest1
192.168.142.49      dbtest2
192.168.142.50      dbtest3
192.168.142.51      dbtest4

2、192.168.142.51的my.cnf配置文件和上面my.cnf保持一致,额外修改的如下

loose-group_replication_local_address= "192.168.142.51:33061"
loose-group_replication_group_seeds= "192.168.142.48:33061,192.168.142.49:33061,192.168.142.50:33061,192.168.142.51:33061"

3、创建数据库实例
手动搭建或者自动化脚本分别在三台主机上配置mysql实例,这里可参考MySQL单实例搭建的方法,不在赘述

4、设置复制账号权限

SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;

5、指定恢复渠道channel

CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';

6、安装插件plugin和查看

INSTALL PLUGIN group_replication SONAME 'group_replication.so';
show plugins;

7、集群中已存在的节点配置修改group_replication_group_seeds的值

1、分别在192.168.142.48,192.168.142.49,192.168.142.50对应节点服务器配置参数
set global  group_replication_group_seeds="192.168.142.48:33061,192.168.142.49:33061,192.168.142.50:33061,192.168.142.51:33061";

2、将对应参数值写入配置文件my.cnf持久化

8、开启组复制

# 这里不再需要开启group_replication_bootstrap_group,由于复制组已经被创建了,只需要将新增节点添加进去即可
START GROUP_REPLICATION;

9、查看mgr的状态

# 查询表performance_schema.replication_group_members
select * from performance_schema.replication_group_members;

 
 

4.2 动态删除节点配置

例如原有192.168.142.48,192.168.142.49,192.168.142.50,192.168.142.51组成MGR的基础上动态删除节点192.168.142.51

1、停止192.168.142.51上组复制

STOP GROUP_REPLICATION;
slave关闭后就被移除了组成员

2、集群中剩余的节点配置修改group_replication_group_seeds的值

1、分别在192.168.142.48,192.168.142.49,192.168.142.50对应节点服务器配置参数
set global  group_replication_group_seeds="192.168.142.48:33061,192.168.142.49:33061,192.168.142.50:33061";

2、将对应参数值写入配置文件my.cnf持久化

3、彻底清理192.168.142.51节点相关组信息,配置修改group_replication_group_seeds和group_replication_local_address的值

1、在192.168.142.51对应节点服务器配置参数
set global  group_replication_group_seeds="";
set global group_replication_local_address="";

2、将对应参数值写入配置文件my.cnf持久化(添加注释)

4、删除插件plugin、复制账号权限

您可能感兴趣的文档:

--结束END--

本文标题: MGR的搭建部署

本文链接: https://lsjlt.com/news/52647.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MGR的搭建部署
    1. MGR介绍 MySQL Group Replication(下简称:MGR)是MySQL官方推出的一种基于Paxos协议的状态机复制。在MGR出现之前,用户常见的MySQL高可用方式,无论怎么变化架构...
    99+
    2024-04-02
  • 说MGR - 搭建单主三成员MGR
    ☞ 搭建单主三成员MGR ...
    99+
    2024-04-02
  • hadoop搭建、mysql、hive部署
    写在前面:本篇文章基于linux系统Centos7环境下进行搭建、操作仅作为学习参考借鉴,欢迎大家交流学习! 一、 HDFS安装搭建 1 关闭虚拟机防火墙 在之后的学习、操作中,经常会遇到在宿主机中通...
    99+
    2023-10-27
    hadoop hive mysql
  • LAMP环境的搭建与部署
    一.搭建LAMP环境--->部署WEB程序 1.LAMP环境作用 既然搭建lamp环境就要清楚什么是lamp,下面我这里简单的介绍一下 L:Linux操作系统,提供了项目部署时所需要的操作系统环境 A:Apache服务器:WEB应用程序的服...
    99+
    2023-09-17
    linux php apache 数据库架构
  • MySQL MGR集群搭建的步骤
    本篇内容介绍了“MySQL MGR集群搭建的步骤”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.背景My...
    99+
    2024-04-02
  • 怎么在k8s上部署mysql 8.0 MGR
    本篇内容介绍了“怎么在k8s上部署mysql 8.0 MGR”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • Redis Cluster集群部署搭建
    在Oracle的路上走了许多年,换换感觉,尝试一下新的知识,也是一个不错的感觉。Redis,一个超轻量化的内存数据库,只做一小块数据库功能实现,却非常优秀的一个产品。今天,就分享一下安装Redis集群的过程...
    99+
    2024-04-02
  • MySQL8.0的MGR多主搭建与测试
    环境: 虚拟机VMware, OS:CentOS Linux release 7.3.1611 (Core) 按照下述的单机Mysql8.0的安装方式进行安装完之后,将该机复制两台,分别修改I...
    99+
    2024-04-02
  • Dokuwiki知识库部署及搭建
    一、Dokuwiki简介 DokuWiki是一个开源wiki引擎程序,运行于PHP环境下,简单易用且高度通用,不需要数据库,它因自身简单易读的语法受到用户的喜爱。 dokuwiki可以用作企业知识库、私人笔记本、软件手册、项目工作区、...
    99+
    2023-08-31
    运维
  • Seata 环境搭建部署过程
    目录前提准备1.下载2.建表3.配置 nacos3.1 上传配置至Nacos配置中心4.修改 appplication.yml4.1 seata.store4.2 seata.con...
    99+
    2022-11-13
    Seata 环境搭建 Seata搭建 Seata部署
  • MySQL 搭建MHA架构部署的步骤
    MAH 一:MAH架构介绍 MHA (Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本人youshimaton开发,是一套优秀的作为MySQL高可用...
    99+
    2022-05-20
    MySQL MHA架构部署 MySQL部署MHA架构
  • centos7.3搭建LNMP并部署wordpress站点
    centos7.3搭建LNMP并部署wordpress站点一、拓扑图    二、准备工作:    1.三台独立主机(虚拟机)  ...
    99+
    2024-04-02
  • Docker如何搭建部署Node项目
    这篇文章给大家分享的是有关Docker如何搭建部署Node项目的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是DockerDocker 是比虚拟机还要轻量级的虚拟化技术,它虚拟化的实体就叫做容器。容器本身就是...
    99+
    2023-06-20
  • CDH环境怎么搭建及部署
    本文小编为大家详细介绍“CDH环境怎么搭建及部署”,内容详细,步骤清晰,细节处理妥当,希望这篇“CDH环境怎么搭建及部署”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、概述Cloudera版本(Cloudera...
    99+
    2023-06-27
  • centos怎么搭建部署docker环境
    这篇文章主要介绍“centos怎么搭建部署docker环境”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“centos怎么搭建部署docker环境”文章能帮助大家解决问题。1、Docker的存在解决的...
    99+
    2023-07-02
  • MGR集群搭建及配置过程
      MGR全称MySQL Group Replication(Mysql组复制),是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案。MGR提供了高可用、高扩...
    99+
    2024-04-02
  • 部署Nacos的源码环境搭建过程
    目录正文启动类设置单机启动启动输出查看控制台正文 最近在学习nacos,通过调式源码查看服务注册和发现流程和原理,本地部署naos源码需要一定的步骤,本文主要做nacos源码部署。 ...
    99+
    2023-02-09
    Nacos源码部署环境搭建 Nacos源码部署
  • docker搭建jenkins+maven代码构建部署平台
    目录Docker基本概念 Docker安装过程(Centos6.9)升级内核 安装docker-io 基于Docker的jenkins安装拉取应用运行容器跟踪应用log...
    99+
    2024-04-02
  • asp.net主机搭建怎么部署项目
    部署ASP.NET项目的步骤如下:1. 编译项目:打开Visual Studio,选择“生成”菜单,点击“生成解决方案”或“生成项目...
    99+
    2023-06-17
    asp.net主机 主机
  • Laravel 环境搭建以及网站部署
             尽管干开发5年+,但奈何linux命令不常用所以写播客会luoluosuosuo,见谅见谅哈! sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具 --摘...
    99+
    2023-09-14
    laravel ubuntu nginx mysql php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作