MySQL之GTID复制

一、GTID复制介绍

GTID(Global Transaction ID)是对于一个已提交事务的唯一编号,并且是一个全局(主从复制)唯一的编号。

它的官方定义如下:

GTID = source_id :transaction_id

7E11FA47-31CA-19E1-9E56-C43AA21293967:29

什么是sever_uuid,和Server-id 区别?

核心特性: 全局唯一,具备幂等性

作用:主要保证主从复制中的高级的特性。

GTID:

5.6版本出现没有默认开启,5.7中即使不开启也有匿名的GTID记录。

DUMP传输可以并性,sQI线程并发回放提供了。5.7.17+的版本以后几乎都是GTID模式了。

重要参数:

gtid-mode=on

enforce-gtid-consistency=true

log-slave-updates=1

gtid-mode=on --启用gtid类型,否则就是普通的复制架构

enforce-gtid-consistency=true --强制GTID的一致性

log-slave-updates=1 --slave更新是否记入日志

二、环境准备

系统

mysql版本

主机IP

主机名

centos7.6

mysql-5.7.24

192.168.1.111

master

centos7.6

mysql-5.7.24

192.168.1.112

slave1

centos7.6

mysql-5.7.24

192.168.1.113

slave2

2.1、配置文件准备

master:

cat > /etc/my.cnf <

[mysqld]

basedir=/data/mysql/

datadir=/data/mysql/

socket=/tmp/mysql.sock

server_id=111

port=3306

secure-file-priv=/tmp

autocommit=0

log_bin=/data/mysql/mysql-bin

binlog_format=row

gtid-mode=on

enforce-gtid-consistency=true

log-slave-updates=1

[mysql]

prompt=master [\\d]>

EOF

slave1:

cat > /etc/my.cnf <

[mysqld]

basedir=/data/mysql

datadir=/data/mysql/

socket=/tmp/mysql.sock

server_id=112

port=3306

secure-file-priv=/tmp

autocommit=0

log_bin=/data/mysql/mysql-bin

binlog_format=row

gtid-mode=on

enforce-gtid-consistency=true

log-slave-updates=1

[mysql]

prompt=slave1 [\\d]>

EOF

slave2:

cat > /etc/my.cnf <

[mysqld]

basedir=/data/mysql

datadir=/data/mysql/

socket=/tmp/mysql.sock

server_id=113

port=3306

secure-file-priv=/tmp

autocommit=0

log_bin=/data/mysql/mysql-bin

binlog_format=row

gtid-mode=on

enforce-gtid-consistency=true

log-slave-updates=1

[mysql]

prompt=slave2 [\\d]>

EOF

# 创建数据目录

groupadd mysql

useradd -r -g mysql -s /sbin/nologin mysql

mkdir -p /data/mysql/data

chown mysql.mysql -R /data/mysql/data

echo export PATH=/app/mysql/bin:$PATH >> /etc/profile

source /etc/profile

2.2、初始化数据

mysqld --initialize-insecure --user=mysql --basedir=/app/mysql --datadir=/data/mysql

mysqladmin -uroot -p password 123 (输入完毕回车即可)

三、主从配置

3.1、主库建立复制用户

grant replication slave on *.* to tzh@'192.168.1.%' identified by '123';

3.2、两个从库

change master to

master_host='192.168.1.111',

master_user='tzh',

master_password='123' ,

MASTER_AUTO_POSITION=1; #自动找位置点

start slave;

show slave status\G;

四、GTID 复制和普通复制的区别

CHANGE MASTER TO

MASTER_HOST='192.168.1.111',

MASTER_USER='tzh',

MASTER_PASSWORD='123',

MASTER_PORT=3306,

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=444,

MASTER_CONNECT_RETRY=10;

change master to

master_host='192.168.1.111',

master_user='tzh',

master_password='123' ,

MASTER_AUTO_POSITION=1;

start slave;

(0)在主从复制环境中,主库发生过的事务,在全局都是由唯一GTID记录的,更方便Failover

(1)额外功能参数(3个)

(2)change master to 的时候不再需要binlog 文件名和position号,MASTER_AUTO_POSITION=1;

(3)在复制过程中,从库不再依赖master.info文件,而是直接读取最后一个relaylog的 GTID号

(4) mysqldump备份时,默认会将备份中包含的事务操作,以以下方式

SET @@GLOBAL.GTID_PURGED='8c49d7ec-7e78-11e8-9638-000c29ca725d:1';

告诉从库,我的备份中已经有以上事务,你就不用运行了,直接从下一个GTID开始请求binlog就行。

五、GTID 从库误写入操作处理

查看监控信息:

Last_SQL_Error: Error 'Can't create database 'oldboy'; database exists' on query. Default database: 'oldboy'. Query: 'create database oldboy'

Retrieved_Gtid_Set: 71bfa52e-4aae-11e9-ab8c-000c293b577e:1-3

Executed_Gtid_Set: 71bfa52e-4aae-11e9-ab8c-000c293b577e:1-2,

7ca4a2b7-4aae-11e9-859d-000c298720f6:1

注入空事物的方法:

stop slave;

set gtid_next='99279e1e-61b7-11e9-a9fc-000c2928f5dd:3';

begin;commit;

set gtid_next='AUTOMATIC';

这里的xxxxx:N 也就是你的slave sql thread报错的GTID,或者说是你想要跳过的GTID。

最好的解决方案:重新构建主从环境,从库不给写

mysql gtid 5.7_MySQL5.7之GTID复制相关推荐

  1. 5.7 并行复制配置 基于GTID 搭建中从 基于GTID的备份与恢复,同步中断处理

    5.7 并行复制配置 基于GTID 搭建中从 基于GTID的备份与恢复,同步中断处理 这个文章包含三个部分 1:gtid的多线程复制 2:同步中断处理 3:GTID的备份与恢复 下面文字相关的东西 大 ...

  2. mysql gtid 同步_结合案例说说5.7使用gtid同步后,mysql.gtid_executed引起的从库gtid断层...

    结合案例说说5.7使用gtid同步后,mysql.gtid_executed引起的从库gtid断层,从库重复拉取主库数据,导致数据在从库被重复执行; mysql.gtid_executed,5.7.5 ...

  3. MySQL——主从复制、ssl主从复制、gtid主从复制

    一.主从复制(Master-Slave) MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展.多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升 ...

  4. mysql gtid 开启失败_失败gtid

    MySQL内核月报 2015.01-MySQL · 性能优化· 启用GTID场景的性能问题及优化 背景 MySQL从5.6版本开始支持GTID特性,也就是所谓全局事务ID,在整个复制拓扑结构内,每个事 ...

  5. mysql 开启gtid_MySQL 在线开启/关闭GTID

    环境介绍 Part1:写在最前 截止本文撰写当日,MySQL5.7.16是官网的最新稳定版,本文将用MySQL5.7.16来进行演示.从MySQL5.6开始,支持了GTID复制模式,这种模式其实是把双 ...

  6. mysql 5.7变化_从MySQL 5.5到5.7看复制的演进

    概要:MySQL 5.5 支持单线程模式复制,MySQL 5.6 支持库级别的并行复制,MySQL 5.7 支持事务级别并行复制.结合这个主线我们可以来分析一下MySQL以及社区发展的一个前因后果. ...

  7. mysql 单表字段多少合适_复制信息记录表|全方位认识 mysql 系统库

    在上一期<时区信息记录表|全方位认识 mysql 系统库>中,我们详细介绍了mysql系统库中的时区信息记录表,本期我们将为大家带来系列第七篇<复制信息记录表|全方位认识 mysql ...

  8. 运维工程师必备之MySQL数据的主从复制、半同步复制和主主复制详解

    一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...

  9. mysql同表字段前4位复制_MySQL不同表之前的字段复制

    有时候,我们需要复制某个字段一整列的数据到另外一个新的字段中,这很简单,SQL可以这么写: UPDATE tb_1 SET content_target = content_source; 大概写法如 ...

最新文章

  1. 有关智能指针(shared_ptr)的讨论
  2. 进程在与Windows Process Activation Service通信时出现严重错误 w3wp.exe错误
  3. 外观模式(Facade) - 为系统分层次
  4. [设计模式笔记]3.单例模式
  5. 大数据(生于2006,卒于2019)已死!
  6. build settings参数详解
  7. 2017.9.8 字符串 失败总结
  8. MJRefresh上拉刷新下拉加载
  9. 一个批量转换文件编码的python脚本
  10. flash 音乐 html代码,用html为flash页面添加音乐
  11. 转载--数据库sql取整操作
  12. 在 Ubuntu 中查看连接的Wi-Fi 密码
  13. 【深度学习笔记】理解Bicubic,双三次插值
  14. Windows之——pid为4的system进程占用80端口的解决办法
  15. 英特尔PX3网吧解决方案体验会在京举行(转)
  16. 视频分割软件,将一个视频分割成多段小的视频
  17. AR Foundation
  18. 博尔赫斯-诗中的经典语段
  19. 疯狂值班表(人员跟日期生成的视图)
  20. Idea archetype介绍

热门文章

  1. ECCV 2020 《Improving One-stage Visual Grounding by Recursive Sub-query Construction》论文笔记
  2. Luogu P4708 画画 (Burnside引理、组合计数)
  3. python自动化_Python报表自动化
  4. python日期判断星座_python实现根据月份和日期得到星座的方法
  5. 利用lodop打印控件轻松实现批量打印
  6. Qt Creator 代码自动补全设置
  7. Dynamics CRMのアップデートインポートツール移植的准备步骤与有用的网页
  8. 记一次使用 removeEventListener 移除事件监听失败的经历
  9. DefaultSingletonBeanRegistry源码解析
  10. svn插件的所有链接