MySQL 8.0.15配置MGR单主多从的方法

一、简介

MySQL Group Replication(简称MGR)字面意思是mysql组复制的意思,但其实他是一个高可用的集群架构,暂时只支持mysql5.7和mysql8.0版本.

是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案,提供了高可用、高扩展、高可靠的MySQL集群服务.

也是mysql官方基于组复制概念并充分参考MariaDB Galera Cluster和Percona XtraDB Cluster结合而来的新的高可用集群架构.

MySQL Group Replication是建立在基于Paxos的XCom之上的,正因为有了XCom基础设施,保证数据库状态机在节点间的事务一致性,才能在理论和实践中保证数据库系统在不同节点间的事务一致性。

由一般主从复制概念扩展,多个节点共同组成一个数据库集群,事务的提交必须经过半数以上节点同意方可提交,在集群中每个节点上都维护一个数据库状态机,保证节点间事务的一致性。

优点:

高一致性,基于原生复制及paxos协议的组复制技术.

高容错性,有自动检测机制,当出现宕机后,会自动剔除问题节点,其他节点可以正常使用(类似zk集群),当不同节点产生资源争用冲突时,会按照先到先得处理,并且内置了自动化脑裂防护机制.

高扩展性,可随时在线新增和移除节点,会自动同步所有节点上状态,直到新节点和其他节点保持一致,自动维护新的组信息.

高灵活性,直接插件形式安装(5.7.17后自带.so插件),有单主模式和多主模式,单主模式下,只有主库可以读写,其他从库会加上super_read_only状态,只能读取不可写入,出现故障会自动选主.

缺点:

还是太新,不太稳定,暂时性能还略差于PXC,对网络稳定性要求很高,至少是同机房做.

二、环境介绍

MySQL版本:8.0.15

数据库端口:3306

集群复制端口:33006

MGR插件:group_replication.so

10.115.88.18:单主

10.115.88.19:从

10.115.88.20:从

三、安装MySQL 8.0.15

3.1.1 下载地址:

https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.15-linux-glibc2.12-x86_64.tar

3.1.2: 安装数据库

解压

tar -xf mysql-8.0.15-linux-glibc2.12-x86_64.tar -C /home/work

进入解压目录

cd /home/work

tar xf mysql-8.0.15-linux-glibc2.12-x86_64.tar.gz

mv mysql-8.0.15-linux-glibc2.12-x86_64 mysql

rm -rf *.xz

授予权限并创建数据目录

cd /home/work

tar xf mysql-8.0.15-linux-glibc2.12-x86_64.tar.gz

mv mysql-8.0.15-linux-glibc2.12-x86_64 mysql

rm -rf *.xz
  chown -R work:work mysql
  mkdir data
  chown work:work data
  cd /home/work/mysql
 
  cd /home/work  mkdir /home/work/relaylog   chown -R work:work relaylog
  cd /home/work/mysql  mkdir run  chown -R work:work run

添加my.cnf文件

[client]
default-character-set=utf8
socket=/home/work/mysql/run/mysql.sock

[mysqld]
user = work
port = 3306
basedir=/home/work/mysql
datadir=/home/work/data
socket=/home/work/mysql/run/mysql.sock
pid-file=/home/work/mysql/run/mysqld.pid
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
lower_case_table_names = 1

server-id = 183306
log-bin = mysql-bin
log-bin-index = binlogs.index
binlog_format = row
binlog_rows_query_log_events = on
binlog_checksum = none

slave-parallel-type = LOGICAL_CLOCK
slave-parallel-workers = 4
slave_preserve_commit_order = 1

#GITD
gtid_mode = on
enforce_gtid_consistency = 1
log-slave-updates = 1
binlog_gtid_simple_recovery = 1

relay_log = /home/work/relaylog/relay.log
relay-log-index = /home/work/relaylog/relay.index
master_info_repository = table
relay_log_info_repository = table

plugin_load="group_replication=group_replication.so"

#MGR
#GR配置项 基中loose前缀表示若group Replication plugin未加载 mysql server仍明治维新启动
transaction_write_set_extraction = XXHASH64 #对每个事务获取write set,并且用XXHASH64算法获取hash值
loose-group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" #组名,此处可拿select.uuid()生成
loose-group_replication_start_on_boot = off #在mysqld启动时不自动启动组复制
loose-group_replication_local_address = "10.115.88.18:33006" #本节点的IP地址和端口,注意该端口是组内成员之间通信的端口,而不是MySQL对外提供服务的端口
loose-group_replication_group_seeds = "10.115.88.18:33006,10.115.88.19:33006,10.115.88.20:33006" #种子节点的IP和端口号,新成员加入到集群的时候需要联系种子节点,启动集群的节点不使用该选项
loose-group_replication_bootstrap_group = off #关闭,如果打开会造成脑裂 #是否启动集群,注意,该选项任何时候只能用于一个节点,通常情况下启动集群的时候使用,启动之后需要关闭该选项

loose-group_replication_member_weight = 50 #权重选择

skip-host-cache
skip-name-resolve
skip-external-locking
character-set-server=utf8
lower_case_table_names=1
event_scheduler=on
log_bin_trust_function_creators=on

max_connections = 3000
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 8M
join_buffer_size = 2M
thread_cache_size = 300
#query_cache_size = 64M
#query_cache_limit = 4M
read_rnd_buffer_size = 8M

innodb_buffer_pool_size = 8096M
innodb_log_file_size = 128M
innodb_log_files_in_group = 2
innodb_log_buffer_size = 2M
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1

[mysqld_safe]
log-error=/home/work/data/err.log

初始化数据库

bin/mysqld --initialize --basedir=/home/work/mysql --lower-case-table-names=1 --datadir=/home/work/data/ --user=work

拷贝启动文件

cp support-files/mysql.server /etc/init.d/mysqld

添加环境变量

echo 'export PATH=/home/work/mysql/bin:$PATH' >>/etc/profile
source /etc/profile

数据库启动

/etc/init.d/mysqld start

修改数据库密码

alter user'root'@'localhost' IDENTIFIED BY 'dashuaige'; 

flush privileges;

四、配置MGR主

4.1.1 配置my.cnf文件

修改binlog如下:

server-id = 103306
log-bin = mysql-bin
log-bin-index = binlogs.index
binlog_format = row
binlog_rows_query_log_events = on
binlog_checksum = none

slave-parallel-type = LOGICAL_CLOCK
slave-parallel-workers = 4
slave_preserve_commit_order = 1

修改GTID如下:

gtid_mode = on
enforce_gtid_consistency = 1
log-slave-updates = 1
binlog_gtid_simple_recovery = 1

relay_log = /home/work/relaylog/relay.log
relay-log-index = /home/work/relaylog/relay.index
master_info_repository = table
relay_log_info_repository = table

添加MGR插件

plugin_load="group_replication=group_replication.so"

修改MGR参数

#GR配置项 基中loose前缀表示若group Replication plugin未加载 mysql server仍明治维新启动
transaction_write_set_extraction = XXHASH64 #对每个事务获取write set,并且用XXHASH64算法获取hash值
loose-group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" #组名,此处可拿select.uuid()生成
loose-group_replication_start_on_boot = off #在mysqld启动时不自动启动组复制
loose-group_replication_local_address = "10.115.88.18:33006" #本节点的IP地址和端口,注意该端口是组内成员之间通信的端口,而不是MySQL对外提供服务的端口
loose-group_replication_group_seeds = "10.115.88.18:33006,10.115.88.19:33006,10.115.88.20:33006" #种子节点的IP和端口号,新成员加入到集群的时候需要联系种子节点,启动集群的节点不使用该选项
loose-group_replication_bootstrap_group = off #关闭,如果打开会造成脑裂 #是否启动集群,注意,该选项任何时候只能用于一个节点,通常情况下启动集群的时候使用,启动之后需要关闭该选项

loose-group_replication_member_weight = 50 #权重选择

启动数据库

/etc/init.d/mysqld restart

4.1.2 配置每台hosts主机解析

[root@bj1-10-115-88-18 mysql]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1   localhost localhost.localdomain localhost6 localhost6.localdomain6
10.115.88.18 bj1-10-115-88-18
10.115.88.19 bj1-10-115-88-19
10.115.88.20 bj1-10-115-88-20

4.1.3 配置mgr第一个主节点

以下步骤在10.115.88.18主机上的mysql中执行

第一步:创建用于复制的用户

set sql_log_bin=0;
create user repuser@'%' identified by 'repuser123';

grant replication slave,replication client on *.* to repuser@'%';

create user repuser@'127.0.0.1' identified by 'repuser123';

grant replication slave,replication client on *.* to repuser@'127.0.0.1';

create user repuser@'localhost' identified by 'repuser123';

grant replication slave,replication client on *.* to repuser@'localhost';

set sql_log_bin=1;

第二步:配置复制所使用的用户

change master to master_user='repuser',master_password='repuser123' for channel 'group_replication_recovery';

第三步:安装mysql group replication这个插件

备注:如果在my.cnf里写写入plugin_load="group_replication=group_replication.so" 这步就可以不用操作

install plugin group_replication soname 'group_replication.so';

通过show plugins;查看是否安装成功

第四步:建个群(官方点的说法就是初始化一个复制组

set global group_replication_bootstrap_group=on;
start group_replication;
set global group_replication_bootstrap_group=off;

select * from performance_schema.replication_group_members;

五、配置另外两节点,从

以下步骤在所有从主机上的mysql中执行

第一步:创建用于复制的用户

set sql_log_bin=0;
create user repuser@'%' identified by 'repuser123';

grant replication slave,replication client on *.* to repuser@'%';

create user repuser@'127.0.0.1' identified by 'repuser123';

grant replication slave,replication client on *.* to repuser@'127.0.0.1';

create user repuser@'localhost' identified by 'repuser123';

grant replication slave,replication client on *.* to repuser@'localhost';

set sql_log_bin=1;

第二步:配置复制所使用的用户

change master to master_user='repuser',master_password='repuser123' for channel 'group_replication_recovery';

第三步:安装mysql group replication这个插件

备注:如果在my.cnf里写写入plugin_load="group_replication=group_replication.so" 这步就可以不用操作

install plugin group_replication soname 'group_replication.so';

通过show plugins;查看是否安装成功

第四步:加入前面创建好的复制组

start group_replication;
select * from performance_schema.replication_group_members;

如下出现以下报错

这是binlog导致的错误,执行以下

reset master;
start group_replication;
select * from performance_schema.replication_group_members;

查看是MGR状态:

查看MGR主的读写状态

查看MGR两台从的读写状态

到此这篇关于MySQL 8.0.15配置MGR单主多从的方法的文章就介绍到这了,更多相关MySQL MGR单主多从内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Mysql多主一从数据备份的方法教程

    概述 对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库中的数据一致. 这样做有如下几点好处: 可以做灾备,其中一个坏了可以切换到另一个. 可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量. 对于异地热备,尤其适合灾备. MySQL 主从复制的方式 1 Master 数据库操作的任何数据库的时候,都会将操作记录写入到biglog日志文件当中 2 Slave 数据库通过网络获取到主数据库的日志文件,写入本地日志系统 ,然后一条条的将数据库事件在数据库中完成 3 Sl

  • shell使用mysqld_multi自动做多实例从库脚本

    复制代码 代码如下: # cat doallslave.sh#!/bin/sh#code by scpman#mail:scpman@live.com#blog:http://www.scpman.com#name:"doallslave.sh"helpinfo(){echo -e '\t\thelp 查看帮助信息'echo -e '\t\t自动做allslave从库脚本使用帮助'echo -e '\t\tslavename 只能是xxx_xxx这种命令例如:zq2013_test1'

  • Mysql 5.7从节点配置多线程主从复制的方法详解

    前言 Mysql 采用多线程进行复制是从 Mysql 5.6 开始支持的内容,但是 5.6 版本下有缺陷,虽然支持多线程,但是每个数据库只能一个线程,也就是说如果我们只有一个数据库,则主从复制时也只有一个线程在工作.相当于还是以前的单线程. 从 Mysql 5.7 开始支持同一数据库下并行主从复制.不过默认情况下,还是单数据库单个线程,如果需要使用多线程,需要在从节点进行配置. Mysql 5.7 对主从复制增加了一种类型,共有两种类型,如下: DATABASE 基于库的并行复制 , 每个数据库

  • 详解mysql集群:一主多从架构实现

    实验环境: 1.三台CentOS 7 服务器 2.mysql5.7.26(三台都通过yum安装) 服务器列表 7.100.222.111 master 47.103.211.5 slave1 47.103.98.221 slave2 如果还没安装mysql请看安装教程:mysql安装 一.概述: 架构图: 此种架构,一般初创企业比较常用,也便于后面步步的扩展 特点: 1.可以缓解读的压力. 2.成本低,布署快速.方便 3.读写分离 4.还能通过及时增加从库来减少读库压力 5.主库单点故障 6.数

  • Linux下安装Mysql多实例作为数据备份服务器实现多主到一从多实例的备份

    1.从MYSQL官方下载MYSQL的源码版本[一定要是源码版本] 2.按以下代码键入LINUX命令行 复制代码 代码如下: [注] 添加mysql组和用户 #groupadd mysql #useradd -g mysql mysql [注] 解包到/usr/local # tar -xzf mysql-standard-4.1.9-pc-linux-gnu-i686.tar.gz -C /usr/local [注] 建立软链接,方便操作(此处给此连接命名为mysql001,也可为其它的名字)

  • Centos7 Mysql 5.6 多主一从 解决方案与详细配置

    业务场景: 公司几个主要的业务已经独立,放在不同的数据库服务器上面,但是有一个业务又需要关联多个业务库进行联合查询统计.这时候就需要将不同的业务库数据同步到一台从库进行统计.根据Mysql主从同步原理使用多从一主的方案解决.主库使用innodb引擎,从库开启多实例使用myisam引擎并将多个实例的数据同步到同一个目录,并通过flush tables 在一个实例里面访问其他实例的数据. 解决思路: 1.主数据库使用Innodb引擎,并设置sql_mode为 NO_AUTO_CREATE_USER

  • MySQL 8.0.15配置MGR单主多从的方法

    一.简介 MySQL Group Replication(简称MGR)字面意思是mysql组复制的意思,但其实他是一个高可用的集群架构,暂时只支持mysql5.7和mysql8.0版本. 是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案,提供了高可用.高扩展.高可靠的MySQL集群服务. 也是mysql官方基于组复制概念并充分参考MariaDB Galera Cluster和Percona XtraDB Cluster结合而来的新的高可用集群架构. MySQL Grou

  • 详解MySQL 5.7 MGR单主确定主节点方法

    我们行MGR年底要上线了,每天都要看官方文档学习,做测试,坚持每天写一个小知识点,有想一起学习的么~ MySQL 5.7 MGR单主确定主节点是哪个,我们可以通过成员ID来判断,然后结合read_only参数来确认. [root@localhost ~]# mysql -uroot -p -P 3306 -h 127.0.0.1 mysql: [Warning] Using a password on the command line interface can be insecure. Wel

  • mysql MGR 单主多主模式切换知识点详解

    主库执行 CREATE DATABASE test CHARACTER SET utf8 COLLATE utf8_general_ci; use test; create table if not exists h1 (id int(10) PRIMARY KEY AUTO_INCREMENT,name varchar(50) NOT NULL); insert into test.h1 values(1,"wang"),(2,"guo"),(3,"ya

  • mysql 8.0.15 安装配置图文教程

    本文记录了mysql 8.0.15 安装配置的方法,供大家参考,具体内容如下 安装包下载 链接: MySQL官网下载地址 点第一个Download,第一个和第二个安装包的区别在于,第一个文件为zip文件,免安装步骤,第二个为msi文件,为安装使用.在这里选择的是zip安装方式. 下载好的图标如下: 解压安装文件 解压到E:\MySQL\mysql-8.0.15-winx64 并将此文件下的bin目录添加到环境变量中 添加my.ini文件 文件内容编写为: [client] port = 3308

  • mysql 8.0.15 winx64解压版安装配置方法图文教程

    本文为大家分享了mysql 8.0.15 winx64解压版安装配置方法,供大家参考,具体内容如下 本地测试需要,安装MySQL最新版本,中间出现两处小问题,解决之,记录之. 1.官网下载,并解压 下载地址 2.设置环境变量 配置MYSQL_HOME为MySQL的解压路径,并在path设置;%MYSQL_HOME%\bin 3.在MySQL解压路径下,新建my.ini 配置初始化参数: [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [m

  • Win10下mysql 8.0.15 安装配置图文教程

    本文记录了mysql 8.0.15 安装配置的方法,供大家参考,具体内容如下 1.下载 1.进入MySQL官网下载installer 2.如果安装时联网,则选择第一个下载,否则选择第二个下载.这里我选择了第二个 3.如果有Oracle就点Login,否则点Sign Up注册后登陆.这里我选择Login 4.填写一些信息后点击Download Now,等待下载完成 2.安装 1.打开下载完成的文件 2.勾选I accept the license terms,然后点击next 3.默认安装选择De

  • window下mysql 8.0.15 winx64安装配置方法图文教程

    本文为大家分享了mysql 8.0.15 winx64安装配置方法,供大家参考,具体内容如下 1.去官网下载最新版本的适用于window下的64位操作系统的mysql-8.0.15版本 下载地址 下载完成后将其解压到自定义目录下,我所有的工具都保存在D:\Project,解压完成后会看见以下目录: D:\Project\mysql-8.0.15-winx64 2 配置环境变量(配置环境变量的目的是在cmd终端命令下不用进入到相应的文件夹目录下直接就可以调用运行) 随后,配置环境变量(我的电脑点右

  • mysql 8.0.15 winx64压缩包安装配置方法图文教程

    本文为大家分享了mysql 8.0.15 winx64压缩包安装配置方法,供大家参考,具体内容如下 1.在官网下载压缩包 2.解压缩包 3.增加配置文件,官方叫option file 配置文件my.ini内容(路径因情况而已,改成自己的就好了) [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 #basedir=F:\soft-install\mys

  • mysql 8.0.15 安装配置方法图文教程

    本文记录了mysql 8.0.15安装配置方法,供大家参考,具体内容如下 安装: 1.官网下载zip 2.解压,复制到指定目录.新建data文件.添加环境变量 3.新建my.ini文件 [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=D:\\MySQL\\mysql-8.0.15-winx64 # 设置mysql数据库的数据的存放目录 datadir=D:\MySQL\\data # 允许最大连接数 max_connections=200

  • Centos7下mysql 8.0.15 安装配置图文教程

    本文为大家分享了mysql 8.0.15 安装配置图文教程,供大家参考,具体内容如下 1.进官网,选择适合自己版本的linux下的MYSQL版本. 按照箭头上的数字,依次进行操作,进入下面这个图景. 等待下载好,这样第一步就完成了. 2.将其下载好的mysql-8.0.15-el7-x86_64.tar.gz 上传至linux系统中进行解压 . (1)本人将这个文件上传至/root/ 目录下,首先查看 /root/目录下的文件.以确保系统中有这个文件. cd /root/ ls (2)将文件进行

随机推荐