二、环境准备

主机名 IP地址 角色
node2.com 172.16.8.101 primary
node3.com 172.16.8.53 seconde
node3.com 172.16.8.68 seconde

操作系统:CentOS Linux release 7.2.1511

MySQL版本:mysql-5.7.26-linux-glibc2.12-x86_64

MySQL Router版本:mysql-router-8.0.17-linux-glibc2.12-x86_64

MySQL Shell版本:mysql-shell-8.0.17-linux-glibc2.12-x86-64bit

三、MySQL安装

注意: 以下需要在三台机器上分别安装

本次安装为一主两从模式

1. 关闭防火墙

# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# cat /etc/sysconfig/selinux
## 如果上一步查的SELINUX=disabled则下一步用sed替换不用执行
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# getenforce

2. 软件包上传、解压

# cd /software/
# tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
# cd /usr/local/
# ln -s mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz mysql

3. 创建mysql数据目录,增加系统用户mysql

# mkdir -p /data/mysql/data/3306
# useradd mysql
# chown -R mysql:mysql /data/mysql/data/3306
# chown -R mysql:mysql /usr/local/mysql*

4. 增加mysql的配置文件

    vim /etc/my.cnf

4.1 node2的配置文件内容如下

[mysqld]
basedir=/usr/local/mysql/
datadir=/data/mysql/data/3306
port=3306
socket=/tmp/mysql.sock server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW 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= "172.16.8.101:33060"
loose-group_replication_group_seeds= "172.16.8.101:33060,172.16.8.53:33060,172.16.8.68:33060"
loose-group_replication_bootstrap_group=off

4.2 node3的配置文件内容如下

[mysqld]
basedir=/usr/local/mysql/
datadir=/data/mysql/data/3306
port=3306
socket=/tmp/mysql.sock server_id=2
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW 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= "172.16.8.53:33060"
loose-group_replication_group_seeds= "172.16.8.101:33060,172.16.8.53:33060,172.16.8.68:33060"
loose-group_replication_bootstrap_group=off

4.3 node4的配置文件内容如下

[mysqld]
basedir=/usr/local/mysql/
datadir=/data/mysql/data/3306
port=3306
socket=/tmp/mysql.sock server_id=3
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW 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= "172.16.8.68:33060"
loose-group_replication_group_seeds= "172.16.8.101:33060,172.16.8.53:33060,172.16.8.68:33060"
loose-group_replication_bootstrap_group=off

说明: 上面的三个配置文件省略了所有不必要的配置项,但是看起来还是有点多,这些都是mgr环境要求的。

  • server_id:每个实例都要不要样
  • loose-group_replication_group_name:为mgr高可用组起一个名字,这个名字一定要是uuid格式的。
  • loose-group_replication_local_address:mgr各实例之前都是要进行通信的、这个配置项设置的就是本实例所监听的ip:端口
  • loose-group_replication_group_seeds:各mgr实例所监听的ip:端口信息
  • Group Replication是要根据GTID(Global Transaction Identifiers)来进行同步的,所以需要开启GTID

5. 初始化mysql数据库

# cd /usr/local/mysql/
# ./bin/mysqld --defaults-file=/etc/my.cnf --datadir=/data/mysql/data/3306/ --user=mysql --initialize-insecure

--initialize-insecure:无密码初始化MySQL

6. 配置mysql与systemd结合

说明: CentOS7.x下与服务启动相关的脚本不在是7以下的/etc/init.d/目录的下脚本,而是/usr/lib/systemd/system/目录

配置systemd相关的配置文件/usr/lib/systemd/system/mysql.service

vim /usr/lib/systemd/system/mysql.service

输入如下内容

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target [Install]
WantedBy=multi-user.target [Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
#LimitNOFILE = 5000
#Restart=on-failure
#RestartPreventExitStatus=1

7. 启动MySQL,并把MySQL加入开机启动

# systemctl enable mysql
# systemctl start mysql

8. 配置环境变量

# echo 'PATH=/usr/local/mysql/bin/:$PATH' >>/etc/profile
# source /etc/profile

9. 添加三台机器的DNS解析

# echo "172.16.8.101  node2.com" >> /etc/hosts
# echo "172.16.8.53 node3.com" >> /etc/hosts
# echo "172.16.8.68 node4.com" >> /etc/hosts

10. 测试登录

    # mysql -uroot -p

四、MGR配置

4.1配置mgr的第一个节点:

mgr中所有的结点都属于一个逻辑上的组、这个组就像是QQ群一样,是由群主建起来的,有了这个上组之后,其它的结点就可以加入到这个组中来了。onode2.com来建群,以下步骤在node2.com主机上的mysql中执行

4.1.1 创建用于复制的用户

mysql> set sql_log_bin=0;
mysql> create user mgruser@'%' identified by '123456';
mysql> grant replication slave,replication client on *.* to mgruser@'%';
mysql> create user mgruser@'127.0.0.1' identified by '123456';
mysql> grant replication slave,replication client on *.* to mgruser@'127.0.0.1';
mysql> create user mgruser@'localhost' identified by '123456';
mysql> grant replication slave,replication client on *.* to mgruser@'localhost';
mysql> set sql_log_bin=1;

4.1.2 配置复制所使用的用户

mysql> change master to
-> master_user='mgruser',
-> master_password='123456'
-> for channel 'group_replication_recovery';

4.1.3 安装mysql group replication插件

mysql> install plugin group_replication soname 'group_replication.so';

4.1.4 建个群(官方点的说法就是初始化一个复制组)

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

说明:

  • global group_replication_bootstrap_group=on:代表这个节点是主节点

4.2配置mgr的第二个节点:

第二个结点和第一个结点唯一的不同在于它不在要自己去建一个群了,它只要加入第一个结点建的群就可以了,以下步骤在node3.com主机上的mysql中执行

4.2.1 创建用于复制的用户

mysql> set sql_log_bin=0;
mysql> create user mgruser@'%' identified by '123456';
mysql> grant replication slave,replication client on *.* to mgruser@'%';
mysql> create user mgruser@'127.0.0.1' identified by '123456';
mysql> grant replication slave,replication client on *.* to mgruser@'127.0.0.1';
mysql> create user mgruser@'localhost' identified by '123456';
mysql> grant replication slave,replication client on *.* to mgruser@'localhost';
mysql> set sql_log_bin=1;

4.2.2 配置复制所要的用户

mysql> change master to
-> master_user='mgruser',
-> master_password='123456'
-> for channel 'group_replication_recovery';

4.2.3 安装组复制插件

mysql> install plugin group_replication soname 'group_replication.so';

4.2.4 加入前面创建好的复制组

mysql> start group_replication;

4.3配置mgr的其它结点:

逻辑上第二个结点与第三、第四、第五...等等结点有着一样的逻辑角色,就也是说它们都不是群主,所以它们的配置方式和第二个结点是一样的,所以不在详细列举每一步的配置

MGR安装的更多相关文章

  1. MySQL高可用之MGR安装测试

    Preface     We've learned the machenism of MGR yesterday,Let's configurate an environment and have s ...

  2. MGR安装记录

    装好所有MySQL5.7, 打开GTID 修改my.cnf文件: ## group replication transaction_write_set_extraction = XXHASH64 ## ...

  3. MySQL高可用之MGR安装测试(续)

      Preface       I've implemented the Group Replication with three servers yesterday,What a shame it ...

  4. 带你走进MySQL全新高可用解决方案-MGR

    ​一.初识MGR 相信很多人对MGR这个词比较陌生,其实MGR(全称 MySQL Group Replication [MySQL 组复制])是Oracle MySQL于2016年12月发布MySQL ...

  5. Goldengate 部署oracle10g在 rac asm环境,完整教程

    前言 Goldengate再rac 环境部署,和单机部署区别还是有点大,主要存在环境上. 环境 oracle10g ,sid=rac 准备工作 1.在rac节点,配置监听动态注册,确保goldenga ...

  6. Centos7下设置ceph 12.2.1 (luminous)dashboard UI监控功能

    前言 本文所使用的集群是作者在博客 Centos7下部署ceph 12.2.1 (luminous)集群及RBD使用  中所搭建的集群 dashboard是为了完成对集群状态进行UI监控所开发的功能, ...

  7. MYSQL-MGR架构配置

    MGR安装:机器列表:pc-s4 s4 --2pc-s3 s3 --1pc-s1 s1 --1pc-s2 s2 --1 1,为初始化搭建,2,为后续添加 对1 三个数据库先进行初始化========= ...

  8. 4. 利用MySQL Shell安装部署MGR集群 | 深入浅出MGR

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 安装准备 2. 利用MySQL Shell构建MGR集群 3. MySQL Shell接管现存的MGR集群 4 ...

  9. 3. 安装部署MGR集群 | 深入浅出MGR

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 安装准备 2. 初始化MySQL Server 3. 初始化MGR第一个节点 4. 继续设置另外两个节点 5. ...

随机推荐

  1. 基于FPGA的SPI FLASH控制器设计

    1.SPI FLASH的基本特征 本文实现用FPGA来设计SPI FLASH,FLASH型号为W25Q128BV.支持3种通信方式,SPI.Dual SPI和Quad SPI.FLASH的存储单元无法 ...

  2. JAVA优化篇 如何找到运行缓慢的线程

    引入 JAVA提供了一些分析DUMP的工具,比如jmap,visualvm 等 JAVA还有寻找线程状态的工具,jstack等 数据库也有检查连接数,连接状态的命令,status,processlis ...

  3. 洛谷$P$3301 $[SDOI2013]$方程 $exLucas$+容斥

    正解:$exLucas$+容斥 解题报告: 传送门! 在做了一定的容斥的题之后再看到这种题自然而然就应该想到容斥,,,? 没错这题确实就是容斥,和这题有点儿像 注意下的是这里的大于和小于条件处理方式不 ...

  4. $SP15637\ GNYR04H\ -\ Mr\ Youngs\ Picture\ Permutations$

    传送门 Description 杨先生希望为他的班级拍照.学生将排成一行,每行不超过后面的行,并且行的左端对齐.例如,可以安排12名学生排列(从后到前)5,3,3和1名学生. X X X X X X ...

  5. SpringBoot原理分析与配置

    1.1 起步依赖原理分析 1.1.1 分析spring-boot-starter-parent 按住Ctrl点击pom.xml中的spring-boot-starter-parent,跳转到了spri ...

  6. Springboot 添加热部署

    Pom 文件 添加依赖 添加插件 修改idea ,启动自动部署 <!--配置热部署--> <dependency> <groupId>org.springframe ...

  7. spring cloud 微服务之 -- 配置文件拆分之道

    0-前言 在spring cloud微服务架构中,基本上每个拆分的微服务都会部署多个运行实例,这些运行实例,配置基本都是一样的,不同的是少数配置,比如端口,而这些不同的配置又是必不可少的 那我们怎么来 ...

  8. 傅立叶变换—FFT

    FFT(快速傅立叶变换)使用“分而治之”的策略来计算一个n阶多项式的n阶DFT系数的值.定义n为2的整数幂数,为了计算一个n阶多项式f(x),算法定义了连个新的n/2阶多项式,函数f[0](x)包含了 ...

  9. Redis内存碎片清理

    当Redis中清理了大量的Key之后原先Redis申请的内存(used_memory_rss)将继续持有而不会释放,此时查看内存信息将会看到存在大量的内存碎片.那么,Redis的内存碎片可以清理么,该 ...

  10. 0x80070035找不到网络路径

    如果这个报错发生:自己的网络正常,其他人可以正常访问服务器,而自己无法访问服务器.原因就是TCP/IP NetBIOS Helper服务被停止. 打开services.msc,启动此服务即可. 该服务 ...