如何在Ubuntu 16.04下使用MySql的GR

yizhihongxing

请参考以下攻略:

如何在Ubuntu 16.04下使用MySQL的GR?

简介

MySQL的GR(Global Transaction ID)是一种在复制集群场景下实现高可用的技术。它可以标识全局事务,使得在多个节点上的事务可以被同步实现。

步骤

1. 创建MySQL用户并授权

首先需要在MySQL上创建一个用户,并拥有相应的权限来访问GR监控和操作API。

CREATE USER 'gruser'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION ADMIN, REPLICATION CLIENT ON *.* TO 'gruser'@'%';

2. 修改MySQL配置文件

在MySQL的配置文件/etc/mysql/mysql.conf.d/mysqld.cnf中需要启用GR功能。打开文件,增加以下配置内容:

log_bin = mysql-bin
gtid_mode = ON
enforce_gtid_consistency = ON
binlog_checksum = NONE

3. 重启MySQL服务

修改配置文件后需要重启MySQL服务来生效。

sudo service mysql restart

4. 配置GR监控节点

在GR监控节点上需要安装MySQL官方提供的GR监控工具mysql-gr-ctl. 工具可以从MySQL官网下载,下载地址是:

https://dev.mysql.com/downloads/repo/apt/

下载完成后,执行以下命令安装:

sudo apt-get install mysql-gr-ctl

安装后需要初始化GR监控:

sudo mysql-gr-ctl init

然后需要编辑GR监控配置文件/etc/mysql-gr/monitor.cnf,配置GR监控的节点信息:

[monitor]
user=gruser
password=password
remote_servers=192.168.0.1:6606, 192.168.0.2:6606

其中,userpassword是上一步创建的MySQL用户和密码,remote_servers则是GR集群的各节点信息。多个节点使用逗号分隔。

最后,启动GR监控:

sudo mysql-gr-ctl start

5. 配置GR复制节点

在所有GR复制节点上需要安装MySQL的GR复制插件。打开MySQL客户端,执行以下命令:

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

然后需要编辑GR复制配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,增加以下配置:

loose-group_replication_group_name = "dbreplication"
loose-group_replication_local_address = "192.168.0.1:6606"
loose-group_replication_group_seeds = "192.168.0.1:6606, 192.168.0.2:6606, 192.168.0.3:6606"

其中,loose-group_replication_group_name是GR集群的名字,loose-group_replication_local_address是节点的地址信息,loose-group_replication_group_seeds是所有节点的地址信息。多个节点使用逗号分隔。

重启MySQL服务后,执行以下命令加入GR集群:

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

然后在其他节点上也执行START GROUP_REPLICATION命令加入GR集群。

示例

以下是两个示例,以说明如何使用GR实现数据同步:

示例一:MySQL主从复制

启动一个MySQL实例,作为主库:

sudo mysqld --console --log-bin --server-id=1 --gtid-mode=ON --enforce-gtid-consistency=ON

打开MySQL客户端,执行以下命令创建数据库和表:

CREATE DATABASE test;
USE test;
CREATE TABLE t1 (id INT PRIMARY KEY, name VARCHAR(50));
INSERT INTO t1 VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Tom');

然后在另一个终端中,启动另一个MySQL实例,作为从库:

sudo mysqld --console --server-id=2 --gtid-mode=ON --enforce-gtid-consistency=ON --plugin-load=group_replication.so --group-replication-local-address=127.0.0.1:6606 --group-replication-group-seeds=127.0.0.1:6606

打开MySQL客户端,执行以下命令加入GR集群并启动复制:

INSTALL PLUGIN group_replication SONAME 'group_replication.so';
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;

查看从库的数据,可以看到主库的数据已经同步到了从库:

USE test;
SELECT * FROM t1;

示例二:MySQL集群

启动三个MySQL实例,作为集群节点。在每个节点上都执行以下命令:

sudo mysqld --console --server-id=1 --gtid-mode=ON --enforce-gtid-consistency=ON --plugin-load=group_replication.so --group-replication-local-address=127.0.0.1:6606 --group-replication-group-seeds=127.0.0.1:6606,127.0.0.1:6607,127.0.0.1:6608

打开MySQL客户端,执行以下命令加入GR集群并启动复制:

INSTALL PLUGIN group_replication SONAME 'group_replication.so';
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的GR技术可以方便地实现高可用的数据同步和容灾。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在Ubuntu 16.04下使用MySql的GR - Python技术站

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

相关文章

  • sql 中 case when 语法使用方法

    当我们处理SQL查询时,有时候我们需要对数据进行分类和排序。SQL中Case When语法就是为了解决这个问题而存在的。它可以将数据按照我们指定的条件进行分类,并进行相应的处理,还可以在查询语句中进行逻辑控制。下面我将详细讲解Case When语法的使用方法。 基础语法 CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 ……

    database 2023年5月21日
    00
  • MySQL DELETE:删除数据详解

    MySQL DELETE是用于删除已存在的数据行的命令。该命令会从表中删除指定的数据行。它具有以下语法: DELETE FROM tablename WHERE condition 其中,tablename是要删除数据行的表名;condition是删除的条件语句。如果不提供条件,则将删除表中所有数据行。 下面是一个MySQL DELETE 的实例,假设我们有…

    MySQL 2023年3月9日
    00
  • springboot mybatis调用多个数据源引发的错误问题

    针对“springboot mybatis调用多个数据源引发的错误问题”,我可以提供如下的攻略过程: 问题背景 在使用SpringBoot和Mybatis框架进行数据源操作时,可能会遇到需要多个数据源的情况,比如:读取或写入的数据源不同,或者需要连接不同的数据库等情况。在这种情况下,我们需要自定义DataSource,同时配置多个SqlSessionFact…

    database 2023年5月18日
    00
  • mybatis 传入null值的解决方案

    针对Mybatis传入null值的问题,可以采取以下解决方案: 解决方案一:使用mybatis-default-value属性 在Mybatis的配置文件中,可以使用mybatis-default-value属性来指定映射对象中的属性的默认值。 示例一 假设我们有一个User实体类,其中有一个String类型的属性name。如果此时没有传入name参数,而我…

    database 2023年5月21日
    00
  • Vertica和YugabyteDB的区别

    Vertica 是什么? Vertica是一个大数据分析软件,被广泛应用于金融、医疗、零售和电信等领域。它使用高度可伸缩的架构,使其能够处理超大规模数据,提供高性能的查询和分析能力,同时能够在多个节点上进行并行处理。 YugabyteDB 是什么? YugaByteDB是一种开源的分布式SQL数据库,旨在提供一种高度可扩展且容错性强的解决方案。它的设计灵感来…

    database 2023年3月27日
    00
  • MySql8.0 安装重要的两步。

    1.去官网下载mysql社区版 windows安装包。https://dev.mysql.com/downloads/windows/installer/8.0.html   https://dev.mysql.com/downloads/         2.在安装包 安装的过程中,有一步就是启动mysql 会失败:             然后修改服务后…

    MySQL 2023年4月13日
    00
  • 讲解Oracle数据库中的数据字典及相关SQL查询用法

    讲解Oracle数据库中的数据字典及相关SQL查询用法需要分几个方面来讲: 一、数据字典简介 在Oracle数据库中,数据字典是一个数据储存区,它记录了关于数据库逻辑和物理方面的重要信息,如表名、列名、数据类型、索引、用户信息等等。它是一组包含系统元数据和描述数据库特定信息的表和视图的总称。这些元数据是由Oracle存储在系统表、数据字典视图、表表存储过程以…

    database 2023年5月21日
    00
  • 实例解析MySQL中的存储过程及存储过程的调用方法

    实例解析MySQL中的存储过程及存储过程的调用方法 什么是存储过程? 存储过程(Stored Procedure)是一种在MySQL数据库中存储可重用SQL语句和程序的方法。存储过程可以接受输入参数并返回输出参数,可以用来完成数据库操作、业务流程控制等。 在MySQL中,存储过程经常被用来提高系统的效率、优化业务流程、控制数据访问等。 存储过程的创建 要创建…

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