mysql gtid 备份恢复_MYSQL数据库备份恢复

在实例存活的情况,可以在实例状态中查询ALL_GTID。

在实例崩溃的情况,无法在实例状态中查询ALL_GTID。可以通过查询BINLOG中的Previous-GTIDs计算来获得ALL_GTID。

下面列举与ALL_GTID相关的变量。

与ALL_GTID相关的变量

Previous-GTIDs

Previous-GTIDs格式如下(环境为MySQL5.7,日志手动flush binary logs获得):

查看新轮转出的BINLOG:

下面为mysql-bin.00001中包含的GTID:

请点击输入图片描述

然后再次flush binary logs:

请点击输入图片描述

mysql-bin.00002中是没有任何GTID的。

请点击输入图片描述

综上Previous-GTIDs是本身这个BINLOG文件前面的所有BINLOG的集合。

请点击输入图片描述

全局变量中的GTID相关的变量

请点击输入图片描述

变量解释:

gtid_executed 代表着server上所有事务执行产生的GTID(包含已经被purge的BINLOG中的GTID或者是手动set gtid_purged的GTID)。

gtid_purged 代表着已经被purge到的GTID。gtid_purged是gtid_executed的子集。

gtid_retrieved 是从机上relay_log中的GTID。

ALL_GTID 的计算

了解了GTID相关的变量之后,可以得到获得实例的All_GTID的集合的方法:

对象

方法

存活的Master实例    gtid_executed

存活的Slave实例    gtid_executed和gtid_retrieved的并集

非存活Master实例    最后一个BINLOG文件的Previous-GTIDs + 最后一个BINLOG文件中所有的GTID

非存活Slave实例    最后一个BINLOG文件的Previous-GTIDs + 最后一个BINLOG文件中所有的GTID

在获得非存活实例中的ALL_GTID时,最后一个BINLOG文件中的GTID可能不连续(比如事务同时来自于本实例客户端和复制回放),所以需要扫描最后一个BINLOG文件。

生产中我们使用Xtrabackup来产生一个 从实例 的流程如下:

拉取备份,进行还原

change master to

set @@global.gtid_purged='xxx';

set @@global.gtid_purged='xxx'; 的影响:

将 从实例 的ALL_GTID手工置为xxx, 在通过GTID方式建立复制时不会出错.

将更新Binlog中记录的Previous-GTIDs (由于Binlog不可改变, 将产生新的Binlog, 记录新的Previous-GTIDs).

MySQL 5.7中set gtid_purged的行为变更

问题描述

回顾一下备份恢复的流程:

拉取备份,进行还原

change master to

set @@global.gtid_purged='xxx';

现象: 发现有一台MySQL 5.7的Slave服务器恢复后没有产生 正确的Previous-GTIDs。

分析

分析整个过程,解决问题应该分阶段进行手动模拟发现问题。以下为详细步骤:

手工还原备份

环境

BINLOG数量,Previous-GTIDs状态

Xtrabackup 2.4.2 & MySQL 5.6    1,空

Xtrabackup 2.4.2 & MySQL 5.7    1,空

Xtrabackup 2.2.9 & MySQL 5.6    1,空

Xtrabackup 2.2.9 & MySQL 5.7    1,空

可见: 恢复过程不会轮转BINLOG。

验证change master和set gtid_purged在不同的MySQL版本中执行的差异

环境

BINLOG数量,Previous-GTIDs状态

change master & MySQL 5.6    1,空

change master & MySQL 5.7    1,空

set gtid_purged & MySQL 5.6    2,正常

set gtid_purged & MySQL 5.7    1,空

可见: 执行set gtid_purged时不同版本的MySQL产生了差异

验证

对不同版本MySQL单独执行set @@global.gtid_purged='';语句。检查结果

环境

进行的操作

BINLOG数量,Previous-GTIDs状态

MySQL 5.7    reset master; set @@global.gtid_purged=”;    1,空

MySQL 5.6    reset master; set @@global.gtid_purged=”;    2,正常

结论

参考: http://bugs.mysql.com/bug.php?id=75767

官方解释: 在5.7版本中,执行SET GTID_PURGED语句后binlog_simple_gtid_recovery会给GTID_PURGED计算出一个错误的值。

由于5.7中新增了存储GTID的表。所以5.7版本中set @@global.gtid_purged='';语句被改成只修改存放GTID的表。

而5.6版本中会进行BINLOG轮转和向Previous_gtids_log_event中添加GTID。如果5.7需要产生和5.6相同结果的话,可以在SET GTID_PURGED语句后手动执行flush binary logs语句。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PMP 笔记

项目: 为创造独特的产品、服务或结果而进行的临时性工作。 项目特征: 独特性:Unique、临时性:Temporary、渐进明细。 渐进明细:预算越来越精细。比如三峡工程中,预算从10亿级的误差到1亿误差,再…

在mysql怎样查询地址和电话_Mysql数据查询

Mysql查询数据多次过滤条件:from、where、group by、having、distinct、order by、limit > 层层筛选后的结果查:select [distinct] 字段1 [[as] 别名1],...,字段n [[as] 别名n] from [数据库名.]表名 [条件];注:一条查询语句,可…

谷歌搜索技巧:搜索语法+隐藏彩蛋+高级设置

Google是一个非常精密成熟的搜索引擎,其搜索结果的丰富性和准确度较其他搜索引擎都要好,但大多数用户都还只是停留在搜索框中输入一两个关键字,然后点击“搜索”按钮的阶段,这一过程是非常低效和无谓的。学习一些搜索引擎常用的搜…

mysql如何给表字段加密_Mysql 字段加密

1、PASSWORD()2、ENCODE(,) DECODE(,)3、MD5()4、SHA5()5、AES_ENCRYPT AES_DECRYPT加密 select aes_encrypt(name, password );解密 select aes_decrypt(aes_encrypt(name, password ), password );可用hex或base64转码(base64在mysql5.6及以上支持)select hex(aes_en…

mysql数据类型支持比较运_Mysql支持的数据类型(总结)

一.数值类型Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUBLE PRESISION),并在此基础上进行扩展。扩展后增加了TINYINT,MEDIUMINT,BIGINT这3种长度不同的整形&#x…

Java 面向对象的设计思维

面向对象的设计思维:合适的方法应该出现在合适的类里面 |解释|:方法是哪个类的,方法便在哪个类里,由这个类去调用 |实际应用|:基本数据类型包装类:因为想要对基本类型数据进行更多的操作,最方便的方式就是将其封装成对象.在对象的描述中定义更多的属性和…

i5 1135g7什么水平_i7-10510U和i5-1135G7对比,该怎么选择呢?

导读:新旧笔记本交替,intel十代i7是否还有与十一代i5一战之力?两者之间差距多少呢?作为买家,肯定想要了解下的哈!! 参数对比 对比项i7-10510U的参数i5-1135G7的参数CPU主频1.8GHz2.4GHz最高睿频4.9GHz4.2GHz三级缓存8MB8MBC/T四核八线程四核八线程核显频率1.15GHZ1.3GHZ…

《学习心得》

最近在学习设计模式,正好也要做毕业设计,就想着把学到的一些皮毛用到毕业设计上面去,结果真的是无从下手。也看了很多其他人关于设计模式的博客,讲了很多很多的好处,但是就是不知道该怎么样运用到实际的项目上去。 毕业…

java获取硬盘序列号_Win7 64+Python3.7获取计算机硬盘信息初探

一、需求由于最近负责电脑资产清查的工作,有100多台分散的电脑需要获得用户名、MAC地址、硬盘序列号、硬盘品牌一般方法:(1)查看系统用户名(2) 获取MAC地址 windos命令行使用ipconfig /all(3&am…

js for in 获得遍历数组索引和对象属性

for in 遍历对象属性 获取的是对象的属性名 var person { name:"admin", age:"21", address:"shanghai"};for(var i in person){ console.log(i)}结果 取得对象的属性名 for in 获取数组的索引值 var array [admin,manager,db];for(var i in arr…

mysql数据库诊断_RDS MySQL 数据库全量SQL诊断

三大难点问题使用MySQL数据库的用户,不可避免都会遇到下面三个难题:1、历史问题难定位数据库凌晨3点发生了CPU 100%的告警,但是该时间段却没有任何慢SQL,怎么继续查找原因?2、SQL压测模版难获取下周要进行大促压测&…

opencv图像处理时使用stringstream批量读取图片,处理后并保存

简介: 同文件输入输出流一样,使用stringstream可以批量读取图片,处理后并进行保存。因为C中头文件 stringstream既可以从string读数据也可向string写数据,利于其这个特点,我们可以进行批量读取和批量保存工作。 参考程…

大数据可视化案例分析_Tableau数据可视化分析案例

0x00 Tableau简介Tableau是一款定位于数据可视化敏捷开发和实现的商务智能展现工具,可用来实现交互的、可视化的分析和仪表盘应用。Tableau提供了体验感良好且易用的使用界面,在处理大规模、多维数据时,可以即时从不同角度看到数据呈现的规律…

1bit和1byte_1byte等于( )bit_学小易找答案

【单选题】WWW上每个资源都有一个唯一地址,称为( )。【单选题】传输层使用( )地址形式区分应用进程?【简答题】习题13【单选题】在网上传输语音和影像,传输层协议一般采用( )。【简答题】分别求出[0,1) 在六个拓扑空间中的内部和闭包。【单选题】以下算法中属于非对称算法的是…

java吃货联盟app讲解_吃货联盟订餐系统——JAVA实现

package com.chihuo;import java.util.Scanner;public class OrderingMgr {public static void main(String[] args){/*数据初始化*/String[] namesnew String[4];//保存订餐人的姓名String[] dishMegsnew String[4];//保存所选信息,包括菜品名及份数String[] addre…

JavaScript-简单的页面输入控制

1.姓名只能是汉字 var nameCheck /^[\u4e00-\u9fa5]{2,21}$/; if(!nameCheck .test(name)){ alert("输入的姓名中含有非汉字字符!"); return false; }2.简单的身份证校验(校验内容包括数字,位数,以及末尾的x,X)  va…

linux 脚本调用企业微信_shell脚本实现企业微信报警

CorpID"ww3c6298264d839e2f"Secret"YvyMQpMRIoXtdQRWo0RNkMBTZnHWKvBwC3ILkyuCsKQ"agentid1000002Ip$(ip a |grep ens33 |grep inet|awk -F "/" ‘{ print $1 }‘ |awk -F " " ‘{ print $2 }‘)/usr/bin/curl --data-ascii ‘{"…

PyTorch深度学习实战(27)——变分自编码器(Variational Autoencoder, VAE)

PyTorch深度学习实战(27)——变分自编码器 0. 前言1. 变分自编码器1.1 自编码器的局限性1.2 VAE 工作原理1.3 VAE 构建策略1.4 KL 散度1.5 重参数化技巧 2. 构建 VAE小结系列链接 0. 前言 变分自编码器 (Variational Autoencoder, VAE) 是一种生成模型&…

mysql function怎么创建_mysql,function_mysql创建函数出现问题?,mysql,function - phpStudy

mysql创建函数出现问题?大家好,帮我看看下面的mysql的函数有什么问题?一直创建不了.DELIMITER $$DROP FUNCTION IF EXISTS check_if_exists$$CREATE FUNCTION check_if_exists(object_name VARCHAR(100),db_name VARCHAR(100),object_type enum(t, f, v, p))RETURNS INTBEGIN…

基于百度AI+jquery-webcam+servlet实现人脸识别登录,兼容各主流浏览器

1、注册百度AI账号,获取到AI开发资格 详情参见个人博客:你的第一个人脸识别demo(http://www.cnblogs.com/guo-eric/p/8109411.html) 2、环境准备 首先按照第一步说明将百度的AI类文件和用到的三方类文件下载到本地,需要…