1. 备份全库

[root@db01 b]# mysqldump -uroot -poldboy123 -A > /b/full.sql

Warning: Using a password on the command line interface can be insecure.

[root@db01 b]#ll

total 656

-rw-r--r-- 1 root root 667860 Mar 11 15:39 full.sql

打开看下都是一些插入类的语句比较容易读懂,可以用awk.sed,等命令过滤需要的内容

[root@db01 b]#vim full.sql

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysql` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `mysql`;

-- Table structure for table `columns_priv`

DROP TABLE IF EXISTS `columns_priv`;

/*!40101 SET @saved_cs_client = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `columns_priv` (

`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',

`Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',

  1. 对单库进行备份

[root@db01 b]#mysqldump -uroot -poldboy123 -B test test1 test2 > /b/test_jt.sql

mysql> show master status;

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin.000029 | 120 | | | |

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

  1. -F flush-logs刷新binlog 有几个库生成几个binlog

[root@db01 b]#mysqldump -uroot -poldboy123 -A -R --triggers --flush-logs > /b/flush.sql

mysql> show master status;

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin.000032 | 120 | | | |

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

  1. 模拟删库

  2. 周日23:00全备此命令就是定时任务里的命令

[root@db01 b]#mysqldump -uroot -poldboy123 -A -R --triggers --master-data=2 --single-transaction | gzip > /b/all_`date +%F-%H-%M-S`.sql.gz

  1. 模拟数据变化查,看插入的数据

mysql> create table ttt.nnn(id int primary key auto_increment not null, name char(20) not null);

mysql> insert into nnn values(1,'aa');

Query OK, 1 row affected (0.00 sec)

mysql> insert into nnn values(2,'bb');

Query OK, 1 row affected (0.00 sec)

mysql> insert into nnn values(3,'cc');

Query OK, 1 row affected (0.00 sec)

mysql> insert into nnn values(4,'dd');

Query OK, 1 row affected (0.00 sec)

mysql> select * from ttt.nnn;

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

| id | name |

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

| 1 | aa |

| 2 | bb |

| 3 | cc |

| 4 | dd |

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

mysql> show master status;

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin.000028 | 850 | | | |

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

  1. 模拟删库

mysql> drop databases ttt;

  1. 查看起始点

这个就是全备时候加了 master-data=2 ,生成的备份文件,22行有恢复数据的起点,120

[root@db01 ~]#sed -n '22p' /b/all_2019-03-11-19-03-55.sql

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000028', MASTER_LOG_POS=120;

查看当前binlog是000028

mysql> show master status;

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin.000028 | 939 | | | |

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

  1. 查看结束点

结束点位置 ,就是drop pos的位置

mysql> show binlog events in "mysql-bin.000028";

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

| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |

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

| mysql-bin.000028 | 4 | Format_desc | 6 | 120 | Server ver: 5.6.40-log, Binlog ver: 4

| mysql-bin.000028 | 120 | Query | 6 | 224 | create database ttt charset utf8

| mysql-bin.000028 | 224 | Query | 6 | 384 | use `ttt`; create table ttt.nnn(id int primary key auto_increment not null, name char(20) not null) |

| mysql-bin.000028 | 384 | Query | 6 | 455 | BEGIN

| mysql-bin.000028 | 455 | Table_map | 6 | 503 | table_id: 323 (ttt.nnn)

| mysql-bin.000028 | 503 | Write_rows | 6 | 546 | table_id: 323 flags: STMT_END_F

| mysql-bin.000028 | 546 | Table_map | 6 | 594 | table_id: 323 (ttt.nnn)

| mysql-bin.000028 | 594 | Write_rows | 6 | 637 | table_id: 323 flags: STMT_END_F

| mysql-bin.000028 | 637 | Table_map | 6 | 685 | table_id: 323 (ttt.nnn) |

| mysql-bin.000028 | 685 | Write_rows | 6 | 728 | table_id: 323 flags: STMT_END_F

| mysql-bin.000028 | 728 | Table_map | 6 | 776 | table_id: 323 (ttt.nnn)

| mysql-bin.000028 | 776 | Write_rows | 6 | 819 | table_id: 323 flags: STMT_END_F

| mysql-bin.000028 | 819 | Xid | 6 | 850 | COMMIT /* xid=3690 */

| mysql-bin.000028 | | Query | 6 | 939 | drop database ttt

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

  1. 导出截取的binlog起始点和结束点,这些数据就是删库,的数据

[root@db01 ~]#mysqlbinlog -uroot -poldboy123 --start-position=120 --stop-position=850 /data/mysql/mysql-bin.000028 > /b/delttt_binlog.sql

  1. 停止binlog写入

mysql> set sql_log_bin=1

  1. 恢复全备及 恢复截取的binlog

mysql> source /b/all_2019-03-11-19-03-55.sql;

mysql> source /b/delttt_binlog.sql;

  1. 数据恢复了

mysql> select * from ttt.nnn;

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

| id | name |

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

| 1 | aa |

| 2 | bb |

| 3 | cc |

| 4 | dd |

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

mysqdump+binlog恢复数据的更多相关文章

  1. MySQL 5.7 - 通过 BINLOG 恢复数据

    日常开发,运维中,经常会出现误删数据的情况.误删数据的类型大致可分为以下几类: 使用 delete 误删行 使用 drop table 或 truncate table 误删表 使用 drop dat ...

  2. 不小心删除数据--利用MySQL的binlog恢复数据

    MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...

  3. 利用mysql的binlog恢复数据

    MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...

  4. 从binlog恢复数据及Mysqlbinlog文件删除

    做了mysql主从也有一段时间了,这两天检查磁盘空间情况,发现放数据库的分区磁盘激增了40多G,一路查看下来,发现配置好主从复制以来到现在的binlog就有40多G,原来根源出在这里,查看了一下my. ...

  5. mysql利用binlog恢复数据详细例子

    模拟数据恢复的案例 有些时候脑瓜就会短路,难免会出错 场景:在生产环境中,我们搭建了mysql主从,备份操作都是在从备份数据库上 前提:有最近一天或者最近的全备 或者最近一天相关数据库的备份 最重要的 ...

  6. mysql利用binlog恢复数据

    需求:需要给开发提供一个2018年9月30号的数据,按照我们公司正常备份策略来说,直接找到对应时间的备份数据,解压导入即可,恰好这个时间节点的数据没有,只备份到2018年9月25号的,糟糕了吧 咋办呢 ...

  7. mysql binlog恢复数据实战

    在前面,我们了解了mysql binlog日志的作用以及使用方法:  http://www.php20.cn/article/237 在后面讲到了,可以通过binlog进行恢复数据,那么,具体步骤是怎 ...

  8. 【转】【MySQL】mysql 通过bin-log恢复数据方法详解

    mysql中bin-log在mysql默认状态下是没有打开的,我们要先打开mysql 开启bin-log功能,然后再通过备份的bin-log进行数据库恢复了. 具体的操作是通过mysqlbinlog这 ...

  9. Mysql使用binlog恢复数据解决误操作问题的两种方法

    为保证没有其他参数配置影响,重新安装配置了一台最小化安装的CentOS7虚拟机 1. 基础知识
 安装mysql5.6数据库Mysql binlog初步理解 2. 配置mysql 开启binlog.修 ...

随机推荐

  1. fastreport 条形码 宽度问题

    fastreport 的barcode 如果不设置AutoSize 确实可以控制宽度 但是生成后 基本没办法扫 所以换个思路 直接等比缩小 设置里面的zoom 比例为0.8  针对20位左右的条形码就 ...

  2. TransactionScope处理分布式事物时提示"事务已被隐式或显式提交,或已终止"

    在连接字符串中加入"Enlist=false",问题就这样解决了. ConnectionString = "Data Source=.;Initial Catalog=c ...

  3. 递归下降和LL(1)语法分析

    什么是自顶向下分析法 在语法分析过程中一般有两种语法分析方法,自顶向下和自底向上,递归下降分析和LL(1)都属于是自顶向下的语法分析 自顶向下分析法的过程就像从第一个非终结符作为根节点开始根据产生式进 ...

  4. 【视频开发】Gstreamer中一些gst-launch常用命令

    GStreamer是著名的开源多媒体框架,功能强大,其命令行程序 gst-launch 可以实现很多常规测试.播放等,作为系统调试等是非常方便的. 1.摄像头测试 gst-launch v4l2src ...

  5. Android Studio使用adb命令连接平板

    有需要使用adb命令连接调试平板的同学可以参考下(下面是android官方文档,有点老). http://donandroid.com/how-to-install-adb-interface-dri ...

  6. [QT] - HTTP文件传输服务器#工程源码

    简介: 大学时期学习弄的一个小软件,当初做的目的是在实验室的局域网内方便同学之间文件的传输,软件的几个功能截图如正文所示,文末提供工程源码文件,感谢支持! 功能截图: [ 打开软件,选择IP及需绑定的 ...

  7. 推荐一款好用的json导出execl格式的文件的js工具-JsonExportExcel

    <html> <head> <meta charset="utf-8"> <title>json导出Excel</title& ...

  8. C语言学习笔记01——C语言概述

    作者:Eventi 出处:http://www.cnblogs.com/Eventi 欢迎转载,也请保留这段声明.谢谢! 1 C语言的起源 1972年,贝尔实验室的丹尼斯·里奇(Dennis Ritc ...

  9. centos 安装htop

    1.首先启用 EPEL Repository yum -y install epel-release 2.可以用 yum 直接安裝 Htop: yum -y install htop

  10. java基础 构造方法

    /** * 继承关系中,父子类构造方法的访问特点 * * 1.子类构造方法中有一个默认隐含的"super()"调用,所以一定是先调用父类构造,后执行的子类构造 * 2.子类构造可以 ...