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日

相关文章

  • MySQL基础教程之DML语句详解

    MySQL基础教程之DML语句详解 本篇教程将着重介绍MySQL的DML(数据操作语言)语句,包括INSERT、UPDATE、DELETE三个常见的操作。 INSERT语句 INSERT语句用于向表格中插入新行,其有多种写法,下面详细说明: 插入所有列 使用INSERT语句插入数据时,可以在VALUES后面列举所有列的值,这时需要保证列的顺序和表格中定义的顺…

    database 2023年5月22日
    00
  • 关于腾讯云redis 无法外网访问的解决方案

    问题简介: 今天购买了一台腾讯云的redis:如图    可是我没有找到 腾讯云提供的外网地址,我该怎么连接呢?百度了一大堆 全部是 在腾讯云服务器上搭建的Redis实例的解决办法。完全不匹配。 开始解决: 这个是腾讯云官方给我提供的解决方案。突然悟透。        通过代理绑定实现防火墙转发不就好了吗?猪脑子。。。 准备工作:   1.说道代理防火墙转发…

    Redis 2023年4月11日
    00
  • PL SQL中实际参数和形式参数的区别

    PL/SQL是Oracle数据库中一种面向对象的编程语言,引入了实际参数和形式参数的概念。 实际参数是传递给函数或过程的实际值。形式参数是在函数或过程定义中声明的参数。在函数或过程的调用过程中,实际参数的值会被复制到形式参数中。接下来,我们将详细介绍实际参数和形式参数的区别。 值传递和引用传递 PL/SQL中的实际参数和形式参数的区别在于它们进行参数传递的方…

    database 2023年3月27日
    00
  • MySQL的事务和视图

                    事务 1.概念 一条或者多条sql语句的集合! 事务:就是一堆操作的集合,他们同生共死。要么都执行成功,要么都执行失败2.事务的特性  ACID  A:原子性  完整的,不可分割的   原子性 (Atomicity):在事务中的操作,要么都执行,要么都不执行!   C: 一致性  事务执行完毕后,数据的状态是一致的()   一…

    MySQL 2023年4月12日
    00
  • 现金流和资金流的区别

    现金流和资金流都是企业财务中的重要概念,它们可以帮助企业了解自身的财务状况以及资金运作的情况。下面我将详细讲解现金流和资金流的区别,并提供两个实例来说明它们之间的差异。 现金流和资金流的区别 1. 定义 现金流是指企业在一定时间内从经营、投资和筹资活动中所获得的现金净流入,即企业现金收入和现金支出的差额。现金流反映的是企业现实的现金状况,是企业可支配资金的真…

    database 2023年3月27日
    00
  • Oracle和Mysql语法异同整理笔记

    @ 目录 (1) 模糊匹配 (2) 删除数据 (3) 时间函数 (4) 关键字问题 (5) 递归查询 (6) 排序问题 (7) 空值返回0 (8) 取最大值 (9) 列转换函数 (10) 类型转行函数 最近在做项目迁移,Oracle版本的迁到Mysql版本,遇到有些oracle的函数,mysql并没有,所以就只好想自定义函数或者找到替换函数的方法进行改造。 …

    MySQL 2023年4月13日
    00
  • Oracle存储过程游标用法分析

    Oracle存储过程游标用法分析 什么是Oracle存储过程游标? 在Oracle中,存储过程是一个可重用的过程,它是一组预定义的PL/SQL代码块,可以在数据库中多次执行。存储过程可以显著提高性能,因为它们可以在单个调用中执行多个SQL语句,从而减少了网络流量和数据库访问时间。游标是一个PL/SQL指针,可以通过它来处理多个查询结果集,使存储过程变得灵活且…

    database 2023年5月21日
    00
  • MySQL中DATE_FORMATE函数使用时的注意点

    MySQL中的DATE_FORMAT函数是一个非常常用的函数,它可以将日期型数据转换成指定的字符串格式。但是在使用该函数时,还有一些注意点需要我们注意。本文将详细讲解MySQL中使用DATE_FORMAT函数时的注意点。 1. DATE_FORMAT函数语法 DATE_FORMAT函数的语法如下: DATE_FORMAT(date,format) 其中,da…

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