MySQL基于GTID主从搭建

MySQL基于GTID主从搭建是相对传统基于binlog位置的主从搭建而言的一种新的方式,本文将介绍使用GTID搭建主从复制的完整攻略。下面将对搭建过程进行详细讲解。

环境准备

首先,我们需要准备好MySQL环境,包括MySQL服务器和客户端。本文中示例使用MySQL的版本为5.6。同时,需要保证两台机器间的网络互通。

开启GTID模式

在MySQL 5.6中,开启GTID模式需要在my.cnf配置文件中增加如下两行:

gtid_mode = ON
enforce_gtid_consistency = ON

开启了GTID模式之后,每个事务都会被分配一个全局唯一的 GTID,用于在主从服务器之间进行数据同步。

配置主库

配置主库之前,需要创建一个用于主从复制的专用账号,在MySQL中创建账号的方式如下:

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

创建账号后,需要重新启动MySQL,使其读取新的配置:

service mysql restart

然后,在主库上执行如下语句,开启binlog写入和GTID复制功能:

SET @@global.log_bin=ON;
SET @@global.log_slave_updates=ON;
SET @@global.gtid_mode=ON;
SET @@global.enforce_gtid_consistency=ON;

确认开启成功:

SHOW VARIABLES LIKE 'log_bin';
SHOW VARIABLES LIKE 'log_slave_updates';
SHOW VARIABLES LIKE 'gtid_mode';
SHOW VARIABLES LIKE 'enforce_gtid_consistency';

配置从库

在从库上,也需要创建一个用于主从复制的专用账号:

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

启动MySQL之后,需要在从库上执行一下语句,开启GTID复制功能:

SET @@global.gtid_mode=ON;
SET @@global.enforce_gtid_consistency=ON;

然后,需要执行一下命令,获取主库的GTID信息:

SHOW MASTER STATUS;

将显示的结果复制下来,稍后会用到。

配置主从复制

接下来,我们需要在从库上配置主从复制。在从库中执行如下语句:

CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1;

其中,master_ip是主库的IP地址,password是之前创建的用于复制的账号的密码。MASTER_AUTO_POSITION=1表示使用GTID进行数据同步。

执行完以上语句后,执行启动slave操作:

START SLAVE;

这时,可以通过命令查看复制状态:

SHOW SLAVE STATUS\G

如果显示Slave_IO_Running和Slave_SQL_Running都为Yes,那么说明主从复制已经配置成功了。

示例说明

下面,我们通过两条示例来进一步说明MySQL基于GTID主从搭建的过程。

示例一

假设我们现在有两台机器,分别为主机master和从机slave,两台机器IP分别为192.168.1.1和192.168.1.2。我们的目标是在slave上搭建一个基于GTID的主从复制。

首先,我们在两台机器上安装了MySQL 5.6,并确认网络正常。

然后,在主库上创建用于主从复制的账号:

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

在主库中开启GTID模式和binlog:

SET @@global.log_bin=ON;
SET @@global.log_slave_updates=ON;
SET @@global.gtid_mode=ON;
SET @@global.enforce_gtid_consistency=ON;

在主库上,创建一条测试数据:

USE test;
CREATE TABLE t1(id INT PRIMARY KEY);
INSERT INTO t1 VALUES(1);

在从库上开启GTID模式:

SET @@global.gtid_mode=ON;
SET @@global.enforce_gtid_consistency=ON;

然后,从主库中获取GTID信息:

SHOW MASTER STATUS;

复制结果,稍后会用到。

在从库中,执行以下命令配置主从复制:

CHANGE MASTER TO MASTER_HOST='192.168.1.1', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1;
START SLAVE;

完成后,可以通过以下命令验证主从复制状态:

SHOW SLAVE STATUS\G

如果复制状态正常的话,此时可以在master上插入一个数据,在slave上检查是否有对应的复制记录。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL基于GTID主从搭建 - Python技术站

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

相关文章

  • 解决Navicat导入数据库数据结构sql报错datetime(0)的问题

    下面是详细的“解决Navicat导入数据库数据结构sql报错datetime(0)的问题”的攻略: 问题描述 在使用Navicat导入数据库数据结构sql文件时,有时会出现datetime(0)的报错,报错的详细信息类似如下: ERROR 1064 (42000) at line 153: You have an error in your SQL synt…

    database 2023年5月19日
    00
  • 对MySQL子查询的简单改写优化

    关于对MySQL子查询的简单改写优化,一般可以采用以下两种方式: 1. 使用连接(JOIN)代替子查询 子查询执行时,会把每个子查询结果保存在临时表中,然后再执行主查询,这就会增加查询语句的运行时间。而连接(JOIN)是更有效的方式,因为它只需要执行一次查询。 以下是一个使用连接代替子查询的示例: SELECT c.customerName, o.order…

    database 2023年5月19日
    00
  • go程序部署到linux上运行的实现方法

    下面是关于将Go程序部署到Linux上运行的完整攻略。 1. 准备工作 在开始部署之前需要进行一些准备工作: 1.1 确保本地环境已经安装 Go 需要先在本地环境安装好 Go 开发环境,可以通过官方文档进行安装。 官方文档:https://golang.org/doc/install 1.2 确保远程服务器已经准备好 需要确保已经有准备好的远程服务器,并且拥…

    database 2023年5月22日
    00
  • 使用zabbix监控oracle数据库的方法详解

    使用 Zabbix 监控 Oracle 数据库的方法详解 Zabbix 是一款流行的企业级开源监控软件,支持监控多种类型的设备,包括数据库。本文将详细介绍如何使用 Zabbix 监控 Oracle 数据库。 步骤一:安装 Zabbix Server 和 Agent 首先需要安装 Zabbix Server 和 Agent。请根据官方文档的指引安装:https…

    database 2023年5月21日
    00
  • 在ASP.NET 2.0中操作数据之六十四:GridView批量添加数据

    在ASP.NET 2.0中,可以使用GridView控件方便地展示和编辑数据,本文将讲解如何通过GridView批量添加数据,并包含两个示例说明。 1. 准备工作 在使用GridView批量添加数据之前,需做如下准备工作: 确定数据库连接字符串 确定表结构 为GridView绑定数据源 2. 批量添加数据 GridView控件具有内置的编辑、插入和删除功能,…

    database 2023年5月22日
    00
  • php在linux下检测mysql同步状态的方法

    以下是“php在linux下检测mysql同步状态的方法”的完整攻略: 1. 确认mysql主从同步状态 在开始检测mysql主从同步状态前,需要确认当前mysql主从同步是否已经正常运行。 可以通过以下命令查看mysql主从同步的状态: SHOW SLAVE STATUS\G 如果主从同步正常,那么Slave_IO_Running和Slave_SQL_Ru…

    database 2023年5月22日
    00
  • MySql报错Table mysql.plugin doesn’t exist的解决方法

    针对“MySql报错Table mysql.plugin doesn’t exist的解决方法”的问题,下面是一些解决方法: 问题描述 MySQL客户端报错Table mysql.plugin doesn’t exist,这个问题通常是因为MySQL数据库实例升级或者版本兼容性问题导致的。 解决方法1:使用mysql_install_db初始化MySQL m…

    database 2023年5月18日
    00
  • MSSQL 事务说明

    MSSQL事务是指包含多个操作的一组任务或操作,这些操作要么全部完成,要么全部不完成,称之为一个原子性操作。为了保证数据的完整性和一致性,MSSQL数据库提供了事务的功能。以下是MSSQL事务的详细说明: MSSQL事务说明 MSSQL事务的概念:一组原子性、一致性和持久性的操作。事务必须满足ACID(原子性、一致性、隔离性和持久性)特性,只有在满足ACID…

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