使用场景

每次开启binlogserver 指定了mysql-bin.0000XX 后都会从该点从头进行传输一次

创建binlogserver
[root@mysql-zst3 binlogserver]# nohup mysqlbinlog --raw --read-from-remote-server --host=172.0.0.51 --port=3308 --user=repl3307 --password=repl --stop-never mysql-bin.000043 &
[2] 8009
此时sbtest_bk数据数,此时binlog位置,且binlogserver正常
进行truncate table
t1 表现在数据

进行truncate
在truncate table 修改主键 为跳跃性的id,紧接着应该进行flush log
"root@localhost:mysql3308.sock [systest]>truncate table t1;
Query OK, 0 rows affected (0.17 sec)
"root@localhost:mysql3308.sock [systest]>insert into t1(id) values(40000)
模拟继续插入数据

查看此时log-file

可以确认 有tuncate 的log-file 在46上
这次实验目的是学会使用全备+binlogserver 进行恢复数据
这里的全备使用的是xtrabackup,
恢复综述:
1使用xtrabackup 创建出一个实例(3011)
2在创建一个新实例(3012)存放binlogserver的日志作为3011的伪master
3.创建主从同步日志恢复到truncate前
可能遇到的问题:
1.binlogserver的日志中记录的是原库3308 的gtid,可能会有问题
解决办法是不是用auto_master_positon=1
但是在使用xtrabackup恢复的实例3011的gtid是否和3308一致?
创建3311 伪master
正确操作
在3311上进行操作:
1、reset master
2、关闭3311实例
3、删除3311实例logdir下所有文件
4、将binlog server下的binary log拷贝到logdir,生成mysql-bin.index文件,修改权限
5、启动3311,show master status
结果是

=========================================================================
这里记录一个错误
将binlogserver日志拷贝到3311实例的logs目录下,并修改权限
这里做的顺序是:先启动实例修改root密码,增加复制用户,关闭实例,修改mysql-bin.index .启动实例
修改mysql-bin.index方法
[root@mysql-zst3 logs]# ls /data/mysql/mysql3311/logs/mysql-bin.0000* > mysql-bin.index
此时3311实例的binlog 会发生变化
mysql-bin.00001是最开始生成的,mysql-bin.000048 是由于在第一次启动实例前把日志放到了log目下生成的因此增加复制用户的操作在000048上;mysql-bibn.000049 是修改mysql-bin.index后重启mysql生成的
其他的日志则是mysqlbinlogserver 的日志
注意这里的gtid的serverid(7709xxxx412:1-4)是新生成的和3308的是不一样的,因此在搭建主从的时候可能会影响,且并没有执行传进来的binlog。
这里有个错误:
关于execute_gtid_set这个值。这里我的操作是:初始化库之后修改root密码,添加复制账户。关库,复制binlogserver日志,修改index文件,启动库,因此这里的execute_gtid_set 没有读到日志里的3308的gtid。但是在次执行该操作时就会读出来,即使没有做reset master,但是建议适用reset master后进行重启库
则会读出3308的gtid
关于execute_gtid_set 和binlog_gtid_simple_recovery参数有关,大概作用是重启mysql时读取mysql-bin.index 中文件从头到尾的日志里的所有gtid集合
错误记录结束
=============================================================================
搭建3312 作为3311的slave进行恢复
这个3312实例:使用的是的3308 使用xtrabackup的全备进行恢复的。
这里做了一个特殊的操作,如果有需要的可以参考,不需要可不许操作:这里只恢复systest库因此我吧其他库都删除了
除了系统库只剩了systest库

此时观察xtrbackup_binlog_pos_innodb 内的日志位置和xtrabackup_info 是不同的
不过可以进行解析mysql-bin.000046 这里有没有操作(xtrabackup_info记录的是日志里的,因此会比xtabackup_binlog_pos_innodb(记录redo里的)可能会高一些。如果有操作需要手动进行恢复了如手动执行sql,或者日志导入,一般是ddl语句,ddl语句不记录到redo中。或者压根就没操作~~)
启动3312实例

systest库存在
此时3312的状态
搭建主从
1.使用MASTER_AUTO_POSITION=1
"root@localhost:mysql3312.sock [systest]>change master to
-> master_host='172.0.0.52',
-> master_port=3311,
-> master_user='repl',
-> master_password='repl',
-> master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.11 sec)
指定停止点
"root@localhost:mysql3312.sock [systest]>start slave sql_thread until sql_before_gtids='e2b6a2cf-2e3c-11e8-a9cd-000c29817dea:133'; 注意该value为一个值不是范围
Query OK, 0 rows affected (0.02 sec)
开启io_thread
start slave io_thread


2使用master_auto_positon=0搭建主从
确认logfile,logpos起始点
检查xtrabackup_binlog_info上的位置mysql-bin.000046 234 83bc1292-48fe-11e8-b4e2-000c29f1c412:1, 是没有操作的不需要从这开始)

因此确定logfie=mysql-bin.000045
logpos=
change master to
master_host='172.0.0.52',
master_port=3311,
master_user='repl',
master_password='repl',
master_log_file='mysql-bin.000045',
master_log_pos=5729109,
master_auto_position=0
注意点:
在开启主从也需要停止在truncate table 的事物位置前。
找到truncate table 的位置
mysql-bin.000046上解析,
SET @@SESSION.GTID_NEXT= 'e2b6a2cf-2e3c-11e8-a9cd-000c29817dea:133'/*!*/;为truncate 操作

start slave sql_thread until master_log_file='mysql-bin.000046',master_log_pos=1910151;
在开启io_thread,检查t1表数据,已恢复
此时gtid会发生变化
转自
archer_66的有道云笔记
https://note.youdao.com/share/?id=d5ba0c54eaeea9cba421f9297a786a29&type=note#/
知数堂 - 最靠谱、最有品质的培训品牌
- 从xtrabackup备份恢复单表【转】
目前对MySQL比较流行的备份方式有两种,一种上是使用自带的mysqldump,另一种是xtrabackup,对于数据时大的环境,普遍使用了xtrabackup+binlog进行全量或者增量备份,那么 ...
- Oracle 备份、恢复单表或多表数据步骤
Oracle 备份.恢复单表或多表数据步骤,适用于 Oracle 8.9.10. *备份单表或多表数据: exp user/password@server file=filefullpa ...
- 【理论篇】Percona XtraBackup 恢复单表
小明在某次操作中,误操作导致误删除了某个表,需要立即进行数据恢复. 如果是数据量较小的实例,并且有备份,即便是全备,做一次全量恢复,然后单表导出导入,虽然麻烦一点,却也花不了多少时间:如果是数据量大的 ...
- 从xtrabackup备份恢复单表
目前对MySQL比较流行的备份方式有两种,一种上是使用自带的mysqldump,另一种是xtrabackup,对于数据时大的环境,普遍使用了xtrabackup+binlog进行全量或者增量备份,那么 ...
- MYSQL数据库根据data文件中的.frm和ibd文件恢复单表数据
数据库误操作,把表的字段删除了,关键是被删除的字段的数据很重要,现在想要恢复数据,下面说说是怎么操作的. 数据库只剩.frm和.ibd文件了,按照网上的做法分如下两步来进行:一.找回表结构,二.找回数 ...
- django 利用ORM对单表进行增删改查
牛小妹上周末,一直在尝试如何把数据库的数据弄到界面上.毕竟是新手,搞不出来,文档也看不懂.不过没关系,才刚上大学.今晚我们就来解释下,要把数据搞到界面的第一步.先把数据放到库里,然后再把数据从库里拿出 ...
- 从mysqldump整库备份文件中恢复单表
最近,系统更新出现了问题,比较紧急,需要对三张表进行回档.由于我们都是采用mysqldump进行每天全备整库,数据量比较大,一个备份文件大概有70G,需要从这个70G文件中恢复三张表,真是蛋疼至极啊, ...
- 万答#14,xtrabackup8.0怎么恢复单表
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 实 ...
- xtrabackup 恢复单表步骤
1.apply-log应用redo日志,并导出表的数据字典innobackupex --apply-log --export 备份集 2.建表 如果知道表结构,则重建删除的表 create tabl ...
随机推荐
- 基于python调用libvirt API
基于python调用libvirt API 1.程序代码 #!/usr/bin/python import libvirt import sys def createConnection(): con ...
- JAVA核心技术I---JAVA基础知识(不可变对象和字符串)
一:不可变对象 不可变对象(Immutable Object) –一旦创建,这个对象(状态/值)不能被更改了–其内在的成员变量的值就不能修改了. –典型的不可变对象 • 八个基本型别的包装类的对象 • ...
- 设计模式---接口隔离模式之门面模式(Façade)
前提:接口隔离模式 在组建构建过程中,某些接口之间直接的依赖常常会带来很多问题.甚至根本无法实现.采用添加一层间接接口(稳定的),来隔离本来相互紧密关联的接口是一种常见的解决方案. 典型模式: 门面模 ...
- 翻译二--创建一个Web测试计划
这里主要是翻译jmeter官方文档第4章:创建一个基本的测试计划来测试一个网站.你将创建5个用户来发送请求给两个页面,同时,你将告诉用户去执行两次测试.所以,请求的总和是5(users)*2(requ ...
- C#设计模式(2)——工厂模式
1.工厂模式介绍 上一篇我们知道了简单工厂的缺点是:当我们添加一个新的产品时需要修改工厂类,这样就违背了开闭原则.工厂模式就是为了解决这一缺陷而出现的,解决的方法是把创建具体实例的任务放在了工厂的子类 ...
- static 和 final 关键字 对实例变量赋初始值的影响
static 和 final 关键字 对实例变量赋初始值的影响 最近一直在看<深入理解Java虚拟机>,在看完了对象内存分配.Class文件格式之后,想深扒一下实例变量是如何被赋上初始值的 ...
- 关于CPU的User、Nice、System、Wait、Idle各个参数的解释
使用Ganglia监控整个Hadoop集群,看到Ganglia采集的各种指标:CPU各个具体的指标含义解释如下: ①CPU(监测到的master主机上的CPU使用情况) 从图中看出,一共有五个关于CP ...
- 【游记】关于NOIP2017
-2017.11.13- Day0.到达酒店无所事事.跟着两个大佬拉着窗帘玩恐怖游戏留下了心理阴影,然后跑去找葱葱一起复习.晚上很晚才睡.Day1.T1结论题,以前写过.T2模拟,细节有点多.T3Di ...
- matplotlib-形状
需要 import matplotlib.patches as mp import numpy as np import matplotlib.pyplot as plt import matpl ...
- Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Assignment(Gradient Checking)
声明:所有内容来自coursera,作为个人学习笔记记录在这里. Gradient Checking Welcome to the final assignment for this week! In ...