一、设置3308实例的已经执行过的gtid号为当天全量备份结束时的gtid号

查看当天xtrabackup全量备份时结束的binlog文件名,binlog的pos 位置点,以及全量备份结束后的Gtid号:

[root@mgr01 backup]# cat /data/backup/db_3306_20190808/xtrabackup_info |grep binlog_pos

binlog_pos = filename 'mysql-bin.000003', position '29571', GTID of the last change 'bde7b592-b966-11e9-8c64-000c294f3e61:1-10296'

使用xtrabackup工具恢复当天的全量备份到新的mysql 3308 实例:

innobackupex --apply-log /data/backup/db_3306_20190808/

190808 10:31:56 completed OK!

innobackupex --defaults-file=/data/mysql/mysql3308/my3308.cnf --copy-back /data/backup/db_3306_20190808/

190808 10:41:38 completed OK!

给新实例3308的数据目录./data授权mysql用户权限:

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

启动mysql 启动成功:

/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3308/my3308.cnf &

由于mysql 3306和3308 都是开启gtid的,所以恢复全量备份数据到3308实例上,在启动3308实例后产生Gtid和实际的xtrabackup全量备份结束的Gtid号是不一样的,所以在恢复全备份到3308后,

启动并登录3308实例,reset master 清空当前的3308上的Gtid,然后再set global gtid_purged='bde7b592-b966-11e9-8c64-000c294f3e61:1-10296'; 让3308 实例的Gtid号执行到全量备份结束时的这个Gtid号

(root@'mgr01':mysql3308.sock)[(none)]>reset master;

Query OK, 0 rows affected (0.04 sec)

(root@'mgr01':mysql3308.sock)[(none)]>show master status\G

*************************** 1. row ***************************

File: mysql-bin.000001

Position: 154

Binlog_Do_DB:

Binlog_Ignore_DB:

Executed_Gtid_Set:

1 row in set (0.00 sec)

(root@'mgr01':mysql3308.sock)[(none)]>set global gtid_purged='bde7b592-b966-11e9-8c64-000c294f3e61:1-10296';

Query OK, 0 rows affected (0.06 sec)

(root@'mgr01':mysql3308.sock)[(none)]>show master status\G

*************************** 1. row ***************************

File: mysql-bin.000001

Position: 154

Binlog_Do_DB:

Binlog_Ignore_DB:

Executed_Gtid_Set: bde7b592-b966-11e9-8c64-000c294f3e61:1-10296

(root@'mgr01':mysql3308.sock)[(none)]>show global variables like "%Gtid%";

+----------------------------------+----------------------------------------------+

| Variable_name | Value |

+----------------------------------+----------------------------------------------+

| binlog_gtid_simple_recovery | ON |

| enforce_gtid_consistency | ON |

| gtid_executed | bde7b592-b966-11e9-8c64-000c294f3e61:1-10296 |

| gtid_executed_compression_period | 1000 |

| gtid_mode | ON |

| gtid_owned | |

| gtid_purged | bde7b592-b966-11e9-8c64-000c294f3e61:1-10296 |

| session_track_gtids | OFF |

+----------------------------------+----------------------------------------------+

二、开始MySQL relaylog + SQL_Thread 增量恢复binlog演示

3308 实例slave上操作:

2.1 change命令,是为了告诉MySQL自己为一个slave实例:

随便change master to master_host="192.168.1.10";

通过change命令,是为了告诉MySQL自己为一个slave实例,因为无需用到IO_Thread,故host,password,user等可以随意填写。

并且通过该步骤,生成relay.info文件。

CHANGE MASTER TO MASTER_HOST="192.168.1.10";

show slave status\G只要

Auto_Position: 0 就行

2.2 关闭3308实例,将需要增量的binlog文件伪装成relaylog:

cp 3306binglog 日志文件到 mysql3308的数据目录data下

[root@mgr01 data]# cp /data/mysql/mysql3306/binlog/* /data/mysql/mysql3308/data/

rm -rf /data/mysql/mysql3308/data/mysql-bin.index

cd /data/mysql/mysql3308/data/

rename mysql-bin relay-bin mysql-bin.*

并且给予伪装后的relay-log文件对应的权限mysql的权限

2.3、删掉relay.info文件和修改relay-log.index文件:

移除掉 /data/mysql/mysql3308/data/ 下面的原有的relay-log.info 文件。

编辑 mgr01-relay-bin.index 文件,添加relay log文件名称到此文件,为的是告诉SQL_Thread还有哪些relaylog是需要执行的。

[root@mgr01 data]# cat mgr01-relay-bin.index

./mgr01-relay-bin.000001

./relay-bin.000003

./relay-bin.000004

./relay-bin.000005

./relay-bin.000006

2.4、告诉3308 slave的sql_thread增量的relaylog文件要从哪个文件名以及pos位置点开始执行:

[root@mgr01 backup]# cat /data/backup/db_3306_20190808/xtrabackup_info |grep binlog_pos

binlog_pos = filename 'mysql-bin.000003', position '29571', GTID of the last change 'bde7b592-b966-11e9-8c64-000c294f3e61:1-10296'

CHANGE MASTER TO RELAY_LOG_FILE='relay-bin.000003', RELAY_LOG_POS=29571;

该选项用于告诉SQL_Thread从哪个relay log文件以及pos位置点(也就是3306实例上当天的全量备份结束的binlog文件名和pos位置点)开始执行relay log文件恢复数据到slave 3308实例

也就是说在恢复全量备份的数据到3308 上后,接下来就是利用伪装好的relay log文件(也就是3306实例上当天的全量备份结束的binlog文件名和pos位置点)+sql_thread 线程 开始执行relay log文件恢复数据到slave 3308实例

START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE = 'mysql-bin.000005', MASTER_LOG_POS =15018; ##此处的Gtid是drop table test1_event 前的最近的一个binlog的文件的pos位置点

或者是:

START SLAVE SQL_THREAD UNTIL SQL_BEFORE_GTIDS='bde7b592-b966-11e9-8c64-000c294f3e61:10445' ##此处的Gtid是drop table test1_event 前的最近的一个Gtid

三、此恢复的方式总结

优点:

可以断点恢复,人为控制进度,比如stop slave或者遇到错误时,可以断点恢复。

性能好,在大量binlog的情况下,可以加快恢复速度。

在某些版本可以利用多线程复制来加快增量速度,时恢复更快。

缺点:

需要关闭mysqld。

手动执行过程较mysqlbinlog方式更为复杂。

四、解决疑惑如下:

Q1整体上看binlog和relay-log结构是否是一致的???

答:整体上看binlog和relay-log结构上是一致的

Q2 binlog的filename和relay-log的filename是不是有关系?

答:没必然的关系的

Q3 把Binlog手工改成Relay-log是不是可行?

答:是可以的

Q4 Relay-log相关的记录信息有哪些?

五、利用SQL_thread快速恢复增量过程总结:

1.不能使用master_auto_position=1

2.先要让mysql知道他是一个Slave

3.关掉mysql,构建relay-log

4.利用change master to relay_log_file=... ,

relay_log_pos=...;

5.START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE='xxx',MASTER_LOG_POS=xxxxx

或者START SLAVE SQL_THREAD UNTIL SQL_BEFORE_GTIDS='xxx--xx-x';

START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE = 'mysql-bin.000005', MASTER_LOG_POS =15018; ##此处的Gtid是drop table test1_event 前的最近的一个binlog的文件的pos位置点

或者是:

START SLAVE SQL_THREAD UNTIL SQL_BEFORE_GTIDS='bde7b592-b966-11e9-8c64-000c294f3e61:10445' ##此处的Gtid是drop table test1_event 前的最近的一个Gtid

mysql relay log 修改_MySQL relaylog + SQL_Thread 增量恢复binlog相关推荐

  1. mysql relay log 配置_mysql relay log参数汇总

    前言:MySQL进行主主复制或主从复制的时候会在配置文件制定的目录下面产生相应的relay log,本文档总结这些相关参数的定义及解释. 1.什么是relay log The relay log, l ...

  2. mysql relay bin 主库_MySQL主库binlog(master-log)与从库relay-log关系代码详解

    主库binlog: # at 2420 #170809 17:16:20 server id 1882073306 end_log_pos 2451 CRC32 0x58f2db87 Xid = 32 ...

  3. MySQL relay log 详细参数解释

    前言:MySQL进行主主复制或主从复制的时候会在home目录下面产生相应的relay log,本文档总结这些相关参数的定义及解释. 1.什么是relay log The relay log, like ...

  4. mysql relay log.info_slave_relay_log_info

    该表提供查询SQL线程重放的二进制文件对应的主库位置和relay log当前最新的位置 表结构定义 CREATE TABLE `slave_relay_log_info` ( `Number_of_l ...

  5. mysql relay log是什么意思_master log 与relay log的关系

    --master log 与relay log的关系 -------------------------------2014/06/09 Just to clarify, there are thre ...

  6. mysql relay log是什么意思_MySQL--binlog和relay log的生成和删除

    ##================================================================================================== ...

  7. mysql relay log时间_如何得到Slave应用relay-log的时间

    官方社区版MySQL 5.7.19 基于Row+Position搭建的一主一从异步复制结构:Master->{Slave} ROLE HOSTNAME BASEDIR DATADIR IP PO ...

  8. mysql redo log 数据恢复_MySQL 怎么样恢复丢失的数据?redo log 写磁盘的过程

    在生活中,你一定有过类似这样的经历: 比如部门发礼品.或者说学校发课本.如果在发放的时候,大家一窝蜂的涌了过来,毕竟双拳双敌四手,渐渐你就招架不过来. 为了工作更好做,你会有几个选择,提前打印个名单, ...

  9. mysql游标遍历修改_mysql使用游标遍历数据进行批量针对性更新数据,急求mysql大神解答...

    我现在有个数据表ud18,里面有图片上的ID,parentid,objname,现在要针对objname的这些号码进行针对性更新,写存储过程进行父子关系转换,做成树形,就是根据objname将父的id ...

  10. mysql 如果存在修改_mysql如存在并发修改可能,一定要注意保证数据一致性

    近日,因人员调整接手了一个其他部门负责的项目.随后发现其中的很多关键环节是没有考虑mysql并发操作的,现列出存在的一例问题 并分享如何解决的. 问题描述: 用户账户余额转移赠送 (用户A将自己的账户 ...

最新文章

  1. python selenium unittest_python+selenium+unittest——ui自动化的轻量级选择
  2. Python 技术篇 - 修改源码解决中文主机名导致的flask、socket服务起不来问题: ‘utf-8‘ codec can‘t decode byte 0xc0 in position...
  3. 分享云及人工智能的一些学习资源和学习心得
  4. java ML回归预测_ML之回归预测:利用九大类机器学习算法对无人驾驶汽车系统参数(2018年的data,18+2)进行回归预测值VS真实值...
  5. Wince5.0自定义工具条
  6. 【网络流】 HDU 4309 Seikimatsu Occult Tonneru 状压枚举边
  7. [总结]FFMPEG视音频编解码零基础学习方法--转
  8. linux 二进制转十进制脚本,linux-shell 脚本转换 十六进制 十进制 八进制 二进制...
  9. 创建react项目并启动出现的报错及解决
  10. 124.二叉树中的最大路径和
  11. Struts2到底为我们做了什么
  12. TextCNN pytorch实现
  13. Origin: 散点图+拟合置信区间
  14. ftp文件服务器怎么迁移,ftp文件服务器迁移
  15. WPF - 善用路由事件
  16. 导入tkinter出错
  17. python链家数据分析统计服_链家二手房成交——Python数据分析
  18. OLED有哪些优劣势?
  19. 系统类毕业设计思路以及各种遇到问题的解决办法
  20. Codeforces Round #532 (Div. 2) F. Ivan and Burgers(可持久化异或线性基+双指针)

热门文章

  1. C# Form窗体打开BIN文件并读取二进制数据
  2. [转]李商隐《嫦娥》赏析
  3. 删除计算机文件的几种方法,3种方式删除目录中的所有文件,除了一个或少量带扩展名的文件...
  4. 使用 kind 1 分钟启动一个本地 k8s 开发集群
  5. ctc系统通信前置服务器,CTC系统包括哪些接口服务器?
  6. 无界鼠标MOUSE WITHOUT BORDERS连接失败的一种情况
  7. 怎么让照片里的人嘴巴动起来_动嘴app最新版(让照片说话的软件)|动嘴app安卓版下载v1.0.0-乐游网安卓下载...
  8. JSP统计网站访问人数
  9. 【Python爬虫】爬取大众点评团购详情及团购评论
  10. ssm框架 mysql 一对多_ssm2: :sparkles: 基于SSM框架简单的文章管理系统,使用MySQL多表存储方式实现留言回复功能...