Mysql 8 MGR集群单主配置图解

声明与简介

本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。本文主要介绍mysql的MGR集群的配置。

MySQL Group Replication(MGR)是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案,以插件形式提供,实现了分布式下数据的最终一致性。其特点如下:

  • 高一致性:基于分布式paxos协议实现组复制,保证数据一致性;
  • 高容错性:自动检测机制,只要不是大多数节点都宕机就可以继续工作,内置防脑裂保护机制;
  • 高扩展性:节点的增加与移除会自动更新组成员信息,新节点加入后,自动从其他节点同步增量数据,直到与其他节点数据一致;
  • 高灵活性:提供单主模式和多主模式,单主模式在主库宕机后能够自动选主,所有写入都在主节点进行,多主模式支持多节点写入

:1 当前MGR集群验证环节在VVMware虚拟机内,真实环境可略过虚拟机复制环节。

2 当前虚拟机内mysql库运行在Centos 8内,版本号是 8.0.23、端口号3306。

3 MGR集群当前验证环境192.168.111.128(host_128)是单主节点,host_129、host_130是从节点。

虚拟机复制

Step 1:先选择一台虚拟机(鼠标点中),然后找到克隆按钮。

Step 2:克隆虚拟机当前状态

Step 3:选择创建完整克隆

Step4:配置虚拟机名字和存储位置

Step 5:耐心等待克隆完毕

Step 6:修改新克隆的虚拟机,修改IP

#修改网卡信息
vi /etc/sysconfig/network-scripts/ifcfg-ens33

Step 7:修改主机名,配置IP与主机名映射。

# 定义IP与主机名映射
vi /etc/hosts

Step 8:重启服务器

#重启虚拟机
reboot now

Step 9:同样的方式操作另外一台虚拟机。

准备环境

  • 准备3台版本一致(一样)的mysql数据库的主机,当前主服务数据库服务的操作系统都是linux。详见虚拟机复制环节。
  • 192.168.111.128(host_128)是单主节点,192.168.111.129(host_129)、192.168.111.130(host_130)是从节点。

配置MGR集群

安装MGR插件

-- 三台主机里都安装group_replication插件,可事先三台都执行该操作。
-- Step 1查看 MGR插件是否安装,如果已安装可忽略如下安装插件环节。
SELECT   PLUGIN_NAME, PLUGIN_STATUS, PLUGIN_TYPE,   PLUGIN_LIBRARY, PLUGIN_LICENSE FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'group%' AND PLUGIN_STATUS='ACTIVE';

-- Step 2 安装MGR插件
install PLUGIN group_replication SONAME 'group_replication.so';

-- Step 3 验证MGR插件状态
SELECT   PLUGIN_NAME, PLUGIN_STATUS, PLUGIN_TYPE,   PLUGIN_LIBRARY, PLUGIN_LICENSE FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'group%' AND PLUGIN_STATUS='ACTIVE';

生成集群组名

-- Way1 :参照官网使用固定的值aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,该值在三个节点都配置成一样。-- Way2:通过uuid生成唯一的id。
select replace(uuid(),"-","") as uuid;

配置单主节点MGR参数

Step  1: 修改mysql配置文件/etc/my.cnf,追加引用外部文件参数

!include /etc/my.cnf.d/ mgr_auth.cnf

Step 2:  /etc/my.cnf.d目录内新建MGR配置文件mgr_auth.cnf

Step 3 mgr_auth.cnf文件内配置如下内容:

[mysqld]

disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"

server_id=1 #其它节点相应修改,不能重复

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="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"

group_replication_start_on_boot=off

group_replication_local_address= "host_128:33091" #修改成节点对应主机名

group_replication_group_seeds= "host_128:33091,host_129:33091,host_130:33091"

group_replication_bootstrap_group=off

:1 这里的step 1外部引用MGR配置文件是为了mysql配置和MGR参数分离,如果不需要可以将MGR参数放置于mysql的配置文件内。

2 这里的group_replication_group_name来源于生成组名环节。

端口加入防火墙信任列表

#MGR集群组复制端口33091加入信任列表
firewall-cmd --add-port=33091/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
#注:如果防火墙关闭,可忽略此步骤。

重启单主mysql

#重启单主节点数据库
service mysqld restart

创建同步用户

--单主节点创建该用户并赋予从服务复制权限,从节点在配置其它节点环节会有相同的操作。
SET SQL_LOG_BIN=0;
create user rpl_user@'%' identified by 'Rpl_user123';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;

启动MGR集群主节点

--在单主节点上启动MGR集群引导
SET GLOBAL group_replication_bootstrap_group=ON;--用之前创建的用户rpl_user创建同步规则认证
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Rpl_user123' FOR CHANNEL 'group_replication_recovery';-- 启动MGR
start group_replication;-- 查看MGR集群状态
SELECT * FROM performance_schema.replication_group_members;--在主库上关闭MGR集群引导
SET GLOBAL group_replication_bootstrap_group=OFF;

配置其它从节点

#Step 1:scp分发mysql配置文件到129和130主机上去
scp -r /etc/my.cnf root@host_129:/etc/
scp -r /etc/my.cnf root@host_130:/etc/

#Step 2:分发MGR配置文件到129和130主机上去
scp -r /etc/my.cnf.d/mgr_auth.cnf root@host_129:/etc/my.cnf.d/
scp -r /etc/my.cnf.d/mgr_auth.cnf root@host_130:/etc/my.cnf.d/

#Step3: 分别修改129、130 里的MGR配置文件。
#host_129内mgr_auth.cnf文件里修改部分的参数有:
server-id = 2
group_replication_local_address= "host_129:33091"#host_130内mgr_auth.cnf文件里修改部分的参数有:
server-id = 3
group_replication_local_address= "host_130:33091"

启动MGR集群从节点

-- 将节点host_129里接入组。
-- Step 1:重复创建同步用户环节在从节点里创建用户并赋权。-- Step 2:添加用户认证
CHANGE REPLICATION SOURCE TO SOURCE_USER='rpl_user', SOURCE_PASSWORD='Rpl_user123' FOR CHANNEL 'group_replication_recovery';-- 注: mysql 8.0.23之前版本用以下命令:
/*
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD=' Rpl_user123' FOR CHANNEL 'group_replication_recovery';
*/-- Step 3:开始group_replication组复制,使得当前节点接入组。
START GROUP_REPLICATION;-- Step 4:当前节点上查看MGR集群 成员与状态
SELECT * FROM performance_schema.replication_group_members;

以上同样的操作应用于host130,最终集群的状态都在线且一个是Primary,另外两个是SECONDARY。至此MGR单主模式搭建完毕。

验证

从节点数据库修改

从库里插入数据时报错,符合单主模式的特点(即仅主节点可写,从节点不可写)。

ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statement

延展阅读

查看插件系统路径

-- SQL命令查看插件的系统路径
show variables like 'plugin%';

查看MGR插件位置

#查看MGR插件系统路径
ll /usr/lib64/mysql/plugin/ | grep group*

查看plugin命令帮助手册

-- 查看SQL命令的使用说明
? show plugins;

注:show plugins命令官方详细介绍。

重新初始化数据库

#Step 1初始化数据库
#赋予数据目录访问权限给mysql用户
chown -R mysql:mysql /data/mysql/
# 删除数据目录下文件
rm -rf /data/mysql/*
#初始化数据库
mysqld --initialize --user=mysql --basedir=/usr/ --datadir=/data/mysql/
# 找到生成的临时密码
grep 'temporary password'  /var/log/mysqld.log

:1 初始化数据库操作仅限于实验或者新环境。

2 初始化mysql时配置参数不能有错误。

# Step 2 启动服务修改数据库密码
# 启动mysql服务
service mysqld start
# 以初始密码登入数据库
mysql -uroot -p'czkik+j)y84A'
# 修改新的数据库密码(Mysql里操作)
alter user root@localhost identified by 'root1234';

Mysql 8 group replication组复制集群单主配置图解相关推荐

  1. Mysql8 group replication组复制集群单主多主模式切换

    Mysql8 MGR集群操作图解 声明与简介 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理.本文主要介绍mysql的MGR集群的操作. My ...

  2. MySQL高可用框架--组复制(group replication)搭建测试

    一.框架搭建       1.首先备份主库数据,有两种方法,冷备份和热备份.冷备份需要先停止master服务,sudo/etc/init.d/mysql stop,然后通过cp或者scp等命令将数据文 ...

  3. mysql数据库集群 主主复制 原理_MySql搭建集群 之 主主复制(双主代从)MYSQL数据库...

    作者:VEPHP   时间 2017-09-27 <MySql搭建集群 之 主主复制(双主代从)MYSQL数据库>要点: 本文介绍了MySql搭建集群 之 主主复制(双主代从)MYSQL数 ...

  4. mysql双节点安装_快速安装及配置MySQL Replication双主节点集群--及改变数据保存目录...

    192.168.1.101  master/slave 192.168.1.102  slave 192.168.1.103  slave 操作系统均为centos6.5 原理图: 1. 分别安装my ...

  5. MySQL NDB Cluste-分布式数据库集群搭建

    1 概述 1.1 分布式数据库集群 Mysql cluster是适用于分布式计算环境的高可用.高冗余版本的mysql,其技术在分布式系统中为mysql数据提供了冗余特性,增强了安全性,使得单个mysq ...

  6. Mysql 集群双主双从安装使用详细讲解

    文章目录 下载Mysql 安装单机Mysql 配置Mysql集群 双Master配置 master1配置 master2配置 配置说明 双Slave配置 Slave1配置 Slave2配置 双 Mas ...

  7. MyCAT+MySQL 搭建高可用企业级数据库集群

    第1章 课程介绍 课程介绍 1-1 MyCAT导学 试看 1-2 课程介绍 第2章 MyCAT入门 这一章中,我们将回顾了垂直切分,水平切分,分库分表等基础概念,然后快速回如何安装和启动MyCAT的, ...

  8. 炫“库”行动-人大金仓有奖征文-KingbaseES V8R6 手工创建主备流复制集群案例

    [本文正在参与炫"库"行动-人大金仓有奖征文] CSDNhttps://marketing.csdn.net/p/98bd30353e7cb998b6070a89e8b91edb ...

  9. Mysql集群--双主模式

    MySQL主从模式,一主多从.读写分离等.但是单主如果发生单点故障,从库切换成主库还需要作改动.因此,如果是双主或者多主,就会增加MySQL入口,提升了主库的可用性. 因此随着业务的发展,数据库架构可 ...

最新文章

  1. android 手势放缩_AIR Android:放大与缩小手势
  2. osc上一位哥们的 php编译参数
  3. window7 telnet localhost 5554
  4. Jquery----实现抽奖效果(根据姓名抽奖)
  5. plsql表设置主键_对复制实施主键约束
  6. 95-134-114-源码-维表-Hbase维表关联:LRU策略
  7. MyBatis_Study_004(动态代理)
  8. 如果出现这些,你就必须跳槽了
  9. matlab表示大于等于,matlab不等于怎么表示
  10. sklearn神经网络/BP神经网络实现葡萄酒分类问题
  11. vivo手机系统android9,vivo终于推送Android9.0,这几款机型你有吗?V粉们已经迫不及...
  12. 送人玫瑰,手有余香----七夕情人节的电子玫瑰
  13. 5福最多多少钱_2018支付宝集5福攻略介绍 一天内集齐不是没可能
  14. [基础]-requests模块使用详解
  15. Arduino、BeagleBoneBlack、树莓派、Debian Linux 学习手记
  16. 使用 Python 在 2 秒内评估国际象棋位置
  17. Podman容器之签名分发与网络
  18. 短信生成器部分思路----Android
  19. 俄罗斯商标注册步骤是
  20. 夸计算机老师的成语,赞美老师的词语和句子 把诚挚的祝愿献给老师

热门文章

  1. ArrayList 与 LinkedList 底层实现
  2. wxWidgets:wxStaticBox类用法
  3. boost::set_union相关的测试程序
  4. boost::equal_range相关的测试程序
  5. boost::insert相关的测试程序
  6. GDCM:gdcm::File的测试程序
  7. boost::core::bit_cast的测试程序
  8. Boost:bimap双图修改的测试程序
  9. Boost:宏BOOST_TEST_CSTR_EQ的使用实例
  10. Boost:使用accumulator_set <>和std :: for_each()计算一些有用的统计信息