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. PCL中outofcore模块---基于核外八叉树的大规模点云的显示

    写在前面   最近公众号的活动让更多的人加入交流群,尝试提问更多的我问题,群主也在积极的招募更多的小伙伴与我一起分享,能够相互促进.   这里总结群友经常问,经常提的两个问题,并给出我的回答: (1) ...

  2. [ ceph ] CEPH 部署完整版(CentOS 7 + luminous)

    1. 前言 拜读了 胖哥的(el7+jewel)完整部署 受益匪浅,目前 CEPH 已经更新到 M 版本,配置方面或多或少都有了变动,本博文就做一个 ceph luminous 版本完整的配置安装. ...

  3. vue脚手架中使用Vant,实现自动按需引入组件,并将px转换为rem

    偶然间看到一款不错的移动端vue组件库Vant,照着官方文档敲了一下,感觉还是不错的.想着以后的项目中可能会运用到,特此记录下,方便之后使用. 现在很多的组件库为了减小代码包体积,都支持按需加载了.V ...

  4. 【MongoDB学习之五】Java中使用MongoDB

    环境 MongoDB 3.0 CentOS6.5_x64 相关jar:mongo-java-driver-3.0.0.jar package com.mongodb; import java.util ...

  5. CentOS升级kernel

    CentOS升级kernel 升级命令: yum update kernel yum update kernel-devel yum update kernel-firmware yum update ...

  6. svg可视化制作工具

    svg可视化制作工具直接ai里面用钢笔路径画好 然后右键建立复合路径 最后存储为svg即可 这样生成的svg就带path标签了

  7. centos7双网卡绑定

    # 概念 服务器存在多块网卡时,可以通过bond来实现多块网卡并在一起使用: # 模式 mode 0:load balancing (round-robin) Support:需要Switch支持 & ...

  8. 玩转 SpringBoot 2 快速整合 Filter

    概述 SpringBoot 中没有 web.xml, 我们无法按照原来的方式在 web.xml 中配置 Filter .但是我们可以通过 JavaConfig(@Configuration +@Bea ...

  9. 2019-07-02 python流程控制

    今天的知识点包括:if / while / for 为什么要有if判断:判断指的是判断事物的对错,真假,想让计算机像人一样去工作.思考,那么计算机也应该有判断事物的对错的能力,那么就要用到if判断语句 ...

  10. 【leetcode】501. Find Mode in Binary Search Tree

    class Solution { public: vector<int> modes; int maxCnt = 0; int curCnt = 0; int curNum = 0; ve ...