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日

相关文章

  • Flume+Kafka+Storm+Redis 大数据在线实时分析

    1、实时处理框架 即从上面的架构中我们可以看出,其由下面的几部分构成: Flume集群 Kafka集群 Storm集群 从构建实时处理系统的角度出发,我们需要做的是,如何让数据在各个不同的集群系统之间打通(从上面的图示中也能很好地说明这一点),即需要做各个系统之前的整合,包括Flume与Kafka的整合,Kafka与Storm的整合。当然,各个环境是否使用集…

    Redis 2023年4月13日
    00
  • mysql数据库外连接,内连接,自然连接

    create table join_teacher(id int primary key auto_increment,t_name varchar(10) not null,gender enum(‘male’,’female’,’secret’) not null)engine innodb character set utf8;insert into …

    MySQL 2023年4月13日
    00
  • Python搭建代理IP池实现存储IP的方法

    下面我详细讲解一下Python搭建代理IP池实现存储IP的方法: 一、代理IP池简介 代理IP池是指一组可用的代理IP资源集合,最常见的使用场景是用于爬虫抓取网页数据。由于爬虫的频繁访问容易被目标网站识别并禁止,所以通过代理IP池来实现爬虫的匿名性是一种比较常见的方式。 二、搭建代理IP池 1. 获取代理IP 获取代理IP的方式主要有两种:免费代理和付费代理…

    database 2023年5月22日
    00
  • MySQL数据库连接查询 join原理

    MySQL数据库连接查询join原理 在MySQL中,我们可以通过JOIN操作实现多个关系表的数据联合查询。JOIN操作是通过将两个或多个表中的列进行比较,从而找到它们的共同数据,并将这些数据进行组合返回给用户。 常见的JOIN操作有 INNER JOIN(内连接)、LEFT JOIN(左连接)、RIGHT JOIN(右连接)、FULL JOIN(全连接)等…

    database 2023年5月22日
    00
  • java9区分opens与exports

    Java 9引入了一些新的模块系统特性,包括opens和exports,主要是为了更好地实现模块化开发,提高代码安全性。 opens和exports的概念 opens:可以让模块中的某个包在运行时可以被其他模块反射调用。 exports:可以让模块中的某个包在编译时和运行时都可以被其他模块访问和使用。 区分opens和exports的攻略 在module-i…

    database 2023年5月21日
    00
  • order by newid() 各种数据库随机查询的方法

    下面我将为您详细讲解“order by newid() 各种数据库随机查询的方法”的完整攻略。 概述 在实际开发中,我们经常需要进行随机查询,比如从用户表中随机获取N个记录,从商品表中随机获取一定数量的记录等等。针对这种需求,我们可以使用SQL语句中的order by newid()来实现随机查询。 方法 order by newid()是一种常用的随机查询…

    database 2023年5月21日
    00
  • Java项目防止SQL注入的几种方法总结

    Java项目防止SQL注入的几种方法总结 什么是SQL注入? 在介绍如何防止SQL注入之前,我们先来了解一下什么是SQL注入。SQL注入是指黑客利用Web应用程序中的SQL语句输入漏洞,通过在用户输入中注入SQL片段来执行非法的SQL语句从而达到欺骗数据库服务器执行恶意SQL语句的目的,进而获取敏感数据,控制服务器或者破坏数据。防止SQL注入是Web应用程序…

    database 2023年5月21日
    00
  • Ubuntu18.04安装mysql5.7.23的教程

    下面是“Ubuntu18.04安装mysql5.7.23的教程”的完整攻略: 确认Ubuntu18.04系统 首先,确认你正在使用的Ubuntu的版本为Ubuntu18.04。在终端中执行以下命令: lsb_release -a 如果你的Ubuntu系统版本确实是18.04,那么你可以开始安装mysql: 安装mysql 步骤1:更新apt 在安装任何软件之…

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