mysql 8.0.18 mgr 搭建及其切换功能

MySQL 8.0.18 MGR 搭建及其切换功能攻略

本文主要介绍如何在 CentOS 7 上搭建 MySQL 8.0.18 MGR 集群,并演示如何使用 MGR 进行集群节点的切换操作。以下是完整的攻略过程:

1. 安装 MySQL 8.0.18

使用 yum 命令安装 MySQL 8.0.18:

sudo yum install mysql-community-server

安装完成后,启动 MySQL 服务:

sudo systemctl start mysqld

2. 配置 MGR

2.1 创建 MGR 用户

进入 MySQL 命令行,输入以下语句创建 MGR 用户:

CREATE USER 'mgr'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'mgr'@'%';

2.2 设置 MySQL 参数

打开 MySQL 配置文件 /etc/my.cnf,在 [mysqld] 部分添加以下参数:

skip-log-bin
enforce_gtid_consistency=ON
gtid_mode=ON
binlog_checksum=NONE
transaction_write_set_extraction=XXHASH64
loose-group_replication_bootstrap_group=OFF
loose-group_replication_enforce_update_everywhere_checks=ON
loose-group_replication_single_primary_mode=OFF
loose-group_replication_auto_increment_increment=7
loose-group_replication_start_on_boot=OFF

2.3 启用 MGR 组件

进入 MySQL 命令行,输入以下语句启用 MGR 组件:

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

3. 创建 MGR 集群

3.1 准备节点

假设我们有三台服务器,它们的 IP 地址和主机名分别为:

  • 192.168.0.101: node1
  • 192.168.0.102: node2
  • 192.168.0.103: node3

为了简化操作,我们把这三台服务器的 MySQL 密码都设置为 password

3.2 启动第一个节点

在第一台服务器上进入 MySQL 命令行,输入以下语句以启动 MGR:

SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;

执行以上语句后,该节点就成为了 MGR 集群的启动节点。

3.3 启动其他节点

在第二台和第三台服务器上进入 MySQL 命令行,输入以下语句以加入 MGR 集群:

SET GLOBAL group_replication_bootstrap_group=OFF;
START GROUP_REPLICATION;

执行以上语句后,这两台服务器就成为了 MGR 集群的工作节点。

4. 测试 MGR 集群

4.1 查看集群状态

在第一个节点的 MySQL 命令行输入以下语句查看集群状态:

SELECT * FROM performance_schema.replication_group_members;

如果查看到的结果如下所示,说明 MGR 集群已经正常启动了:

+---------------------------+--------------------------------------+---------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_STATE | MEMBER_ROLE | MEMBER_HOST  |
+---------------------------+--------------------------------------+---------+-------------+--------------+
| group_replication_applier | 2b9c9b8c-berb-11eb-969d-080027c45920 | ONLINE      | PRIMARY     | node2:3306   |
| group_replication_applier | 928d8d16-berb-11eb-a648-080027c45920 | ONLINE      | SECONDARY   | node3:3306   |
| group_replication_applier | 8e452f45-berb-11eb-bada-080027c45920 | ONLINE      | SECONDARY   | node1:3306   |
+---------------------------+--------------------------------------+---------+-------------+--------------+

4.2 进行数据写入测试

在任意一台服务器的 MySQL 命令行输入以下语句进行数据写入测试:

CREATE DATABASE test;
USE test;
CREATE TABLE test (id INT NOT NULL PRIMARY KEY, name VARCHAR(30));
INSERT INTO test VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie');

写入数据后,我们可以在任意一台服务器上查看测试结果,并验证是否数据同步成功。

5. 切换 MGR 集群节点

5.1 离线节点

在任意一台服务器的 MySQL 命令行输入以下语句停止 MGR 节点:

STOP GROUP_REPLICATION;

5.2 切换主节点

在原本的主节点上输入以下语句:

SET GLOBAL group_replication_primary_member=(SELECT MEMBER_ID FROM performance_schema.replication_group_members WHERE MEMBER_HOST='nodeX:3306');

其中,nodeX 指的是你现在希望成为主节点的服务器主机名。

然后,我们通过查看集群状态来验证主节点是否成功切换:

SELECT * FROM performance_schema.replication_group_members;

如果查看到的结果中,指定的节点成为了主节点,说明主节点切换成功了。

示例

以下是两个示例演示了如何将当前的工作节点变成主节点,并验证主节点切换的成功性:

示例一

假设现在的集群状态如下:

+---------------------------+--------------------------------------+---------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_STATE | MEMBER_ROLE | MEMBER_HOST  |
+---------------------------+--------------------------------------+---------+-------------+--------------+
| group_replication_applier | 2b9c9b8c-berb-11eb-969d-080027c45920 | ONLINE      | PRIMARY     | node2:3306   |
| group_replication_applier | 928d8d16-berb-11eb-a648-080027c45920 | ONLINE      | SECONDARY   | node3:3306   |
| group_replication_applier | 8e452f45-berb-11eb-bada-080027c45920 | ONLINE      | SECONDARY   | node1:3306   |
+---------------------------+--------------------------------------+---------+-------------+--------------+

我们要将 node3 这台服务器变成主节点。我们可以按照上文中的步骤执行以下命令:

STOP GROUP_REPLICATION;
SET GLOBAL group_replication_primary_member=(SELECT MEMBER_ID FROM performance_schema.replication_group_members WHERE MEMBER_HOST='node3:3306');
START GROUP_REPLICATION;

然后,我们再次查看集群状态:

+---------------------------+--------------------------------------+---------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_STATE | MEMBER_ROLE | MEMBER_HOST  |
+---------------------------+--------------------------------------+---------+-------------+--------------+
| group_replication_applier | 928d8d16-berb-11eb-a648-080027c45920 | ONLINE      | PRIMARY     | node3:3306   |
| group_replication_applier | 8e452f45-berb-11eb-bada-080027c45920 | ONLINE      | SECONDARY   | node1:3306   |
| group_replication_applier | 2b9c9b8c-berb-11eb-969d-080027c45920 | ONLINE      | SECONDARY   | node2:3306   |
+---------------------------+--------------------------------------+---------+-------------+--------------+

可以发现,现在的主节点已经变成了 node3。

示例二

现在的集群状态如下:

+---------------------------+--------------------------------------+---------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_STATE | MEMBER_ROLE | MEMBER_HOST  |
+---------------------------+--------------------------------------+---------+-------------+--------------+
| group_replication_applier | 928d8d16-berb-11eb-a648-080027c45920 | ONLINE      | PRIMARY     | node3:3306   |
| group_replication_applier | 8e452f45-berb-11eb-bada-080027c45920 | ONLINE      | SECONDARY   | node1:3306   |
| group_replication_applier | 2b9c9b8c-berb-11eb-969d-080027c45920 | ONLINE      | SECONDARY   | node2:3306   |
+---------------------------+--------------------------------------+---------+-------------+--------------+

我们要将 node1 这台服务器变成主节点。我们可以按照上文中的步骤执行以下命令:

STOP GROUP_REPLICATION;
SET GLOBAL group_replication_primary_member=(SELECT MEMBER_ID FROM performance_schema.replication_group_members WHERE MEMBER_HOST='node1:3306');
START GROUP_REPLICATION;

然后,我们再次查看集群状态:

+---------------------------+--------------------------------------+---------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_STATE | MEMBER_ROLE | MEMBER_HOST  |
+---------------------------+--------------------------------------+---------+-------------+--------------+
| group_replication_applier | 8e452f45-berb-11eb-bada-080027c45920 | ONLINE      | PRIMARY     | node1:3306   |
| group_replication_applier | 2b9c9b8c-berb-11eb-969d-080027c45920 | ONLINE      | SECONDARY   | node2:3306   |
| group_replication_applier | 928d8d16-berb-11eb-a648-080027c45920 | ONLINE      | SECONDARY   | node3:3306   |
+---------------------------+--------------------------------------+---------+-------------+--------------+

可以发现,现在的主节点已经变成了 node1。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql 8.0.18 mgr 搭建及其切换功能 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • SQL查询字段被包含语句

    SQL查询字段被包含语句,通常是用于查找包含指定关键词的数据行。下面是详细的攻略: 1. 理解SQL查询字段被包含语句 SQL查询语句中,使用 LIKE 运算符进行模糊匹配。比如,我们要查找包含关键词 “apple” 的数据行,可以使用以下查询语句: SELECT * FROM table_name WHERE column_name LIKE ‘%appl…

    database 2023年5月21日
    00
  • MySQL导入sql脚本错误:2006 解决方法

    MySQL导入sql脚本时,有时可能会发生2006错误,导致导入失败。这种错误通常是由于网络原因、MySQL连接超时或服务器负载过高等原因引起的。在下面的攻略中,将详细介绍如何解决这个问题。 1. 原因 MySQL导入sql脚本时,可能会出现超时或网络问题,导致MySQL服务器连接中断,产生2006错误。 2. 解决方法 以下是解决方法: 方法一:修改MyS…

    database 2023年5月18日
    00
  • Linux系统下安装phpmyadmin方法

    以下是在Linux系统下安装phpMyAdmin的完整攻略。 安装Apache、MySQL及PHP 在安装phpMyAdmin之前,需要先安装Apache、MySQL及PHP。其中,Apache是Web服务器,MySQL是数据库管理系统,而PHP则是用于动态生成Web页面的脚本语言。这里给出安装命令: sudo apt update sudo apt ins…

    database 2023年5月22日
    00
  • sql server2012附加数据库问题解决方法

    SQL Server 2012 附加数据库问题解决方法 在 SQL Server 2012 附加数据库过程中,可能出现多种问题。本文将介绍一些常见问题及其解决方法,帮助您成功附加数据库。 问题一:无法附加数据库,提示文件已存在 问题描述: 在附加数据库时,提示文件已存在,无法继续操作。 解决方法: 找到提示中已存在的文件路径(如D:\Data\test.md…

    database 2023年5月21日
    00
  • MYSQL安装配置文件my-small.ini、my-medium.ini、my-large.ini、my-huge.ini文件的作用 my-small.ini、my-medium.ini、my-large.ini、my-huge.ini文件的作用

      安装完mysql之后或者是下载的免安装版解压之后,默认是没有my.ini文件的.但是,有几个类似的文件,如my-small.ini、my-medium.ini、my-large.ini、my-huge.ini。这几个文件是mysql针对不同的应用推荐的不同的配置信息;但这些配置只有放到my.ini中才会被应用。其中:1、my-small.ini是为了小型…

    MySQL 2023年4月12日
    00
  • SQL Server如何插入数据示例代码

    下面为您详细讲解 SQL Server 如何插入数据示例代码的完整攻略。 1. 前置条件 在进行插入数据操作前,需要确保以下条件: 已经安装并启动 SQL Server 数据库。 已经创建了相关的数据库和表。 已经了解插入语句的基本语法和规则。 2. 插入单条数据 插入单条数据需要使用 INSERT INTO 语句,比如要向 students 表中插入一条数…

    database 2023年5月21日
    00
  • mysql 5.7.16 安装配置方法图文教程(ubuntu 16.04)

    MySQL 5.7.16 安装配置方法教程(Ubuntu 16.04) MySQL 是一个常用的关系型数据库管理系统,本教程将会介绍如何在 Ubuntu 16.04 系统中安装并配置 MySQL 5.7.16 版本。 第一步:安装 MySQL 在 Ubuntu 操作系统中,我们可以很方便地通过 apt-get 命令安装 MySQL 数据库: sudo apt…

    database 2023年5月22日
    00
  • php导入大量数据到mysql性能优化技巧

    对于“php导入大量数据到mysql性能优化技巧”,其主要的攻略如下: 1. 准备工作 首先,我们需要准备好数据库表,以及需要导入的数据文件。可以使用一些命令行工具如 mysql 和 mysqlimport 进行导入。在导入数据之前,需要确保MySQL服务器已经进行了正确的配置,包括调整服务器参数、调整缓存配置等。 2. 数据导入 对于数据导入,我们可以使用…

    database 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部