MySQL复制之GTID复制的具体使用

当我们在MySQL数据库中使用GTID复制时,可以使用以下步骤:

1. 确认主服务器上gtid_mode已经配置为ON

在主服务器上执行以下语句可以确认gtid_mode已经被开启:

SHOW VARIABLES LIKE 'gtid_mode';

如果gtid_mode值为OFF,则需要更新MySQL配置文件,将以下行添加到MySQL配置文件中:

[mysqld]
gtid_mode = ON

重启MySQL以使更改生效。

2. 创建具有复制权限的用户

在主服务器上创建具有复制权限的用户。

CREATE USER replication_user IDENTIFIED BY 'my_password';
GRANT REPLICATION SLAVE ON *.* TO replication_user;

其中my_password是您选择的复制用户的密码。

3. 在主服务器上记录当前复制位置

在主服务器上使用以下语句记录当前复制位置:

SELECT @@GLOBAL.gtid_executed;

记录查询结果的值,它将用于作为从服务器上的同步起点。

4. 配置从服务器

在从服务器上运行以下语句,告诉从服务器连接主服务器:

CHANGE MASTER TO MASTER_HOST='master_host_name',
MASTER_USER='replication_user',
MASTER_PASSWORD='my_password',
MASTER_CONNECT_RETRY=10,
MASTER_AUTO_POSITION=1;

其中,master_host_name是主服务器的IP地址或主机名。确保连接主服务器的端口被打开,以便从服务器可以访问主服务器。

可以使用以下命令来启动从服务器的GTID复制:

START SLAVE;

示例1

以下示例是在主服务器上创建一个新的数据库和表,并向表添加一些数据:

CREATE DATABASE testDB;
USE testDB;
CREATE TABLE myTable (id INT PRIMARY KEY, name VARCHAR(25));
INSERT INTO myTable VALUES (1, 'John'), (2, 'Doe');

现在我们来检查当前复制位置:

SELECT @@GLOBAL.gtid_executed;

得到的结果为:

8587b2f6-c281-11eb-9995-4ccc6a430f90:1-3

现在配置从服务器,并启动GTID复制:

CHANGE MASTER TO MASTER_HOST='master_server_1',
MASTER_USER='replication_user',
MASTER_PASSWORD='my_password',
MASTER_CONNECT_RETRY=10,
MASTER_AUTO_POSITION=1;
START SLAVE;

现在,我们使用以下语句在主服务器上更新表的数据:

USE testDB;
UPDATE myTable SET name='Doe Jr.' WHERE id=2;

检查从服务器是否复制了这个更新:

USE testDB;
SELECT * FROM myTable;

从服务器应该在myTable表中执行了更新。

示例2

以下示例演示了使用GTID复制从一台主服务器复制到第二个主服务器的过程:

在第一个主服务器上创建数据库和表并添加数据:

CREATE DATABASE testDB;
USE testDB;
CREATE TABLE myTable (id INT PRIMARY KEY, name VARCHAR(25));
INSERT INTO myTable VALUES (1, 'John'), (2, 'Doe');

现在在从第一个主服务器复制到第二个主服务器:

CHANGE MASTER TO MASTER_HOST='master_server_1',
 MASTER_USER='replication_user',
 MASTER_PASSWORD='my_password',
 MASTER_PORT=3306,
 MASTER_AUTO_POSITION=1;

START SLAVE;

现在在第一个主服务器上进行一些更新:

USE testDB;
UPDATE myTable SET name='Doe Jr.' WHERE id=2;

我们现在可以使用以下语句检查第二个主服务器是否成功复制:

USE testDB;
SELECT * FROM myTable;

第二个主服务器上的myTable表应该反映出更新。

这就是使用GTID复制进行MySQL复制的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL复制之GTID复制的具体使用 - Python技术站

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

相关文章

  • Oracle基础:程序中调用sqlplus的方式

    【Oracle基础:程序中调用sqlplus的方式攻略】 在Oracle数据库开发中,有时候需要在程序中调用Sqlplus命令行工具,这个过程可以使用Java、Shell等语言实现。下面详细讲解如何在程序中调用Sqlplus命令行工具。 1、使用Java语言实现 Java程序中可以通过ProcessBuilder来调用操作系统命令行工具。下面是Java程序调…

    database 2023年5月21日
    00
  • node js 操作redis promise

    连接 redis = require(‘redis’) var client = redis.createClient(‘6379’, ‘127.0.0.1’); client.on(‘connect’, function() { console.log(‘connected’); }); 基础操作 /** * 1、字符串数据类型 */ var res = …

    Redis 2023年4月11日
    00
  • 详解如何修改MySQL最大连接数

    接下来我将详细讲解如何修改MySQL最大连接数。 一、了解MySQL最大连接数 MySQL最大连接数指的是在同一时间内,MySQL服务器允许的最大连接数。当连接数超过这个限制时,MySQL将会拒绝新的连接请求。 在默认情况下,MySQL的最大连接数是100个,并发数是256个。但是这个连接数可能不足以支撑一些高并发、大数据量的应用系统,此时需要适当增大MyS…

    database 2023年5月18日
    00
  • ORACLE LATERAL-SQL-INJECTION 个人见解

    ORACLE LATERAL-SQL-INJECTION 个人见解 什么是Oracle Lateral SQL Injection? Oracle Lateral SQL Injection是指通过向查询中添加lateral语句来实现一个注入攻击。Lateral语句是在Sql From语句的子查询中引入的表达式。它通常与查询嵌套一起使用,以产生更集中的结果集…

    database 2023年5月21日
    00
  • SQL 识别字符串里的数字字符

    要识别字符串里的数字字符,可以使用SQL中的内置字符串函数,比如REGEXP_SUBSTR()、REGEXP_REPLACE()等。 使用REGEXP_SUBSTR()函数 REGEXP_SUBSTR()函数可以从一个字符串中提取满足正则表达式条件的子串,从而识别字符串中的数字字符。 例如,我们要从字符串”abcd12345efg”中识别数字字符,可以使用以…

    database 2023年3月27日
    00
  • linux下mysql 5.x得到root密码后的另外一种利用方式

    Linux下MySQL 5.x得到root密码后的另外一种利用方式是通过 MySQL 运行时加载自己编写的共享对象(Libraries)并执行其中的函数,以获取root权限。这种攻击方式也称为”UAD”(User-Defined Functions in Aggregate Deterministic Mode)攻击。以下是具体攻击步骤: 前提条件- Lin…

    database 2023年5月22日
    00
  • SQL Server 2008 R2占用cpu、内存越来越大的两种解决方法

    下面是详细讲解 SQL Server 2008 R2 占用 CPU、内存越来越大的两种解决方法的完整攻略。 问题现象及原因 当 SQL Server 2008 R2 数据库运行一段时间后,服务器的 CPU 使用率和内存占用率会越来越高,最终导致服务器崩溃或性能下降,导致无法正常使用。这是由于 SQL Server 2008 R2 常驻内存的特性引起的,它会一…

    database 2023年5月21日
    00
  • MySQL中Union子句不支持order by的解决方法

    MySQL中的UNION子句是用来合并两个或多个SELECT语句的结果集,可以实现对多个表或视图的查询结果进行合并、去重、排序等操作。然而,使用UNION时无法直接按照特定的列进行排序,因为UNION会将所有结果混合在一起,而不是针对单个SELECT结果进行排序。因此,我们需要借助一些技巧来实现UNION后的排序操作。 下面是一些解决MySQL中UNION子…

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