MySQL基于GTID主从搭建

yizhihongxing

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日

相关文章

  • Linux VPS配置Web网站环境一键包(LNMP/LAMP/LNMPA)

    Linux VPS配置Web网站环境一键包 Linux VPS是一种基于Linux系统的云服务器,由于其性能高、价格低、易于管理等优点,广受网站建设者和开发者的青睐。在Linux VPS上搭建Web网站环境需要一定的技术和时间成本,为了提高效率,就需要使用一键包进行安装配置。LNMP、LAMP和LNMPA是三种常见的Web网站环境一键包,下面分别介绍它们的安…

    database 2023年5月22日
    00
  • MySQL删除被其他表关联的数据库表

    MySQL中如果想要删除一个被其他表关联的表,需要先将关联该表的其他表中的数据删除,然后才能删除该表。具体步骤如下: 查找关联该表的其他表 可以通过以下SQL语句查询关联该表的其他表: SELECT TABLE_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME FROM …

    MySQL 2023年3月9日
    00
  • sql查询一个数组中是否包含某个内容find_in_set问题

    如果要在SQL中查询一个数组或逗号分隔的字符串中是否包含指定内容,可以使用MySQL提供的函数 FIND_IN_SET()。这个函数接受两个参数:被查询内容和字符串列表,返回一个表示查询结果的数字。如果存在则返回内容在列表中的位置,否则返回0。 下面是一个示例,假设我们有一个表 students ,其中有一个字段 languages 存储了每个学生擅长的语言…

    database 2023年5月21日
    00
  • Cassandra 和 Couchbase 的区别

    Cassandra和Couchbase都是NoSQL数据库,在某些方面有所相似,但是它们也有一些显著的区别。 Cassandra和Couchbase的简介 Cassandra是一个开源的分布式NoSQL数据库,最初由Facebook开发,针对大型数据和云基础架构而设计。Cassandra具有高度可扩展性,可以轻松地扩展到多个节点,确保高性能和高可用性。 Co…

    database 2023年3月27日
    00
  • 关于Java中的mysql时区问题详解

    标题:关于Java中的Mysql时区问题详解 正文: 背景 在使用Java访问Mysql数据库时,我们经常会遇到时区问题。比如我们插入一个带有时间的数据到Mysql数据库中,但是实际存储到数据库中的时间和我们传入的时间不符。这是因为Java和Mysql在处理时间数据时,涉及到时区的转换问题。 时区概念 在开始讲解时区问题前,我们先来了解一下时区概念。时区是指…

    database 2023年5月22日
    00
  • PHP使用mysqli操作MySQL数据库的简单方法

    下面是 “PHP使用mysqli操作MySQL数据库的简单方法” 的完整攻略。 一、前言 PHP是一种流行的Web开发语言,MySQL是其中一个最常用的关系型数据库管理系统之一。 针对一个Web应用程序,最常见的数据库操作之一就是从数据库中检索数据,以及将数据插入到数据库中。这些任务的完成需要用到SQL查询。 在PHP中,我们可以使用多种方式来完成这些SQL…

    database 2023年5月22日
    00
  • Mysql数据库之索引优化

    Mysql数据库之索引优化 在Mysql数据库的设计中,索引是提高查询效率的重要手段,好的索引设计可以大大提升查询效率。本文将为大家讲解如何通过优化索引提高Mysql数据库性能。 什么是索引 在Mysql数据库中,索引是一种特殊的数据结构,它可以帮助我们快速定位到要查询的数据行。如果没有索引,每查询一次就需要扫描整张表,耗费大量时间,而索引可以让我们快速定位…

    database 2023年5月19日
    00
  • PHP 使用MySQL管理Session的回调函数详解

    PHP 使用MySQL管理Session的回调函数可以让我们更加灵活地控制Session,可以传入自己的回调函数来实现Session数据的持久化到MySQL数据库中,下面是详细的攻略: 准备工作 在使用这个技术之前,我们需要确保自己已经正确设置好PHP和MySQL的环境。在这里,假设您已经知道如何使用PHP和MySQL,并且已经创建好了一个名为user_in…

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