如何在Ubuntu 16.04下使用MySql的GR

请参考以下攻略:

如何在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日

相关文章

  • Redis集群搭建

      Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存。Redis 在3.0版本前只支持单实例模式,虽然支持主从模式、哨兵模式部署来解决单点故障,但是现在互联网企业动辄大几百G的数据,可完全是没法满足业务的需求,所以,Redis 在 3.0 版本以后就推出了集群模式。   Redis 集群采用了P2P…

    Redis 2023年4月11日
    00
  • 与MSSQL对比学习MYSQL的心得(五)–运算符

    与 MSSQL 对比学习 MYSQL 的心得(五)–运算符 1. 前言 MYSQL 和 MSSQL 作为两种流行的关系型数据库管理系统,都支持多种运算符。不过在具体使用上,两者有些细节的差异,需要针对性的学习和实践。本文将对 MYSQL 的运算符进行详细介绍和演示,方便初学者快速掌握。 2. MYSQL 运算符 MYSQL 运算符包括算术运算符、比较运算符…

    database 2023年5月22日
    00
  • docker搭建CMS点播系统带播放器功能

    下面我将详细讲解如何使用Docker搭建CMS点播系统带播放器功能。 简介 Docker是目前非常流行的容器化技术,通过使用Docker我们可以方便的创建、部署和运行应用程序。CMS点播系统是一款视频点播系统,而播放器是视频点播系统必不可少的组成部分。 环境准备 为了搭建CMS点播系统带播放器功能,您需要事先准备好以下环境:- 安装Docker:如果您还没有…

    database 2023年5月22日
    00
  • mysql 启动,停止,重启

    启动mysql: 方式一:sudo /etc/init.d/mysql start  方式二:sudo start mysql 方式三:sudo service mysql start sudo ./mysqld_safe   停止mysql: 方式一:sudo /etc/init.d/mysql stop  方式二:sudo stop mysql 方式三:…

    MySQL 2023年4月12日
    00
  • PHP与SQL语句常用大全

    PHP与SQL语句常用大全 PHP的SQL语句通常用于与数据库交互,包括数据查询、数据更新、数据插入等操作。下面是一些常用的SQL语句及其PHP实现。 数据库连接 连接数据库是操作数据库的第一步,可以使用mysqli或PDO扩展连接数据库。 mysqli扩展 $mysqli = new mysqli("localhost", "…

    database 2023年5月21日
    00
  • 正确使用MySQL INSERT INTO语句

    下面是正确使用MySQL INSERT INTO语句的攻略: 1. INSERT INTO语句的使用 INSERT INTO语句是MySQL数据库中最基本的一个操作语句,它用于向表中插入新的一行数据。 语法格式如下: INSERT INTO table_name (column1, column2, column3, …) VALUES (value1,…

    database 2023年5月21日
    00
  • 如何在Python中使用SQLAlchemy操作Oracle数据库?

    在Python中,我们可以使用SQLAlchemy模块操作Oracle数据库。SQLAlchemy是一个Python SQL工具包和对象关系映射器(ORM),它提供了一种抽象层,使得我们可以在不同的数据库之间切换,而不需要更改代码。以下是如何在Python中使用SQLAlchemy操作Oracle数据库的完整使用攻略,包括连接数据库、创建表、插入数据、查询数…

    python 2023年5月12日
    00
  • MySQL通用查询日志(General Query Log)

    MySQL通用查询日志(General Query Log)是用于记录MySQL服务器上所有执行的查询操作的一个日志文件。它可以帮助管理员更好地了解MySQL服务器的性能和运行状态,为优化和监控MySQL服务器提供重要信息。 MySQL通用查询日志可以包含以下信息: 执行时间:记录查询执行的开始时间和结束时间,可以帮助管理员了解查询的执行性能。 用户名和主机…

    MySQL 2023年3月10日
    00
合作推广
合作推广
分享本页
返回顶部