mysqdump+binlog恢复数据
备份全库
[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 '',
对单库进行备份
[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 | | | |
+------------------+----------+--------------+------------------+-------------------+
-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 | | | |
+------------------+----------+--------------+------------------+-------------------+
模拟删库
周日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
模拟数据变化查,看插入的数据
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 | | | |
+------------------+----------+--------------+------------------+-------------------+
模拟删库
mysql> drop databases ttt;
查看起始点
这个就是全备时候加了 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 | | | |
+------------------+----------+--------------+------------------+-------------------+
查看结束点
结束点位置 ,就是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
+------------------+-----+-------------+-----------+-------------+-------------------------------------------------------------------------
导出截取的binlog起始点和结束点,这些数据就是删库,的数据
[root@db01 ~]#mysqlbinlog -uroot -poldboy123 --start-position=120 --stop-position=850 /data/mysql/mysql-bin.000028 > /b/delttt_binlog.sql
停止binlog写入
mysql> set sql_log_bin=1
恢复全备及 恢复截取的binlog
mysql> source /b/all_2019-03-11-19-03-55.sql;
mysql> source /b/delttt_binlog.sql;
数据恢复了
mysql> select * from ttt.nnn;
+----+------+
| id | name |
+----+------+
| 1 | aa |
| 2 | bb |
| 3 | cc |
| 4 | dd |
+----+------+
mysqdump+binlog恢复数据的更多相关文章
- MySQL 5.7 - 通过 BINLOG 恢复数据
日常开发,运维中,经常会出现误删数据的情况.误删数据的类型大致可分为以下几类: 使用 delete 误删行 使用 drop table 或 truncate table 误删表 使用 drop dat ...
- 不小心删除数据--利用MySQL的binlog恢复数据
MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...
- 利用mysql的binlog恢复数据
MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...
- 从binlog恢复数据及Mysqlbinlog文件删除
做了mysql主从也有一段时间了,这两天检查磁盘空间情况,发现放数据库的分区磁盘激增了40多G,一路查看下来,发现配置好主从复制以来到现在的binlog就有40多G,原来根源出在这里,查看了一下my. ...
- mysql利用binlog恢复数据详细例子
模拟数据恢复的案例 有些时候脑瓜就会短路,难免会出错 场景:在生产环境中,我们搭建了mysql主从,备份操作都是在从备份数据库上 前提:有最近一天或者最近的全备 或者最近一天相关数据库的备份 最重要的 ...
- mysql利用binlog恢复数据
需求:需要给开发提供一个2018年9月30号的数据,按照我们公司正常备份策略来说,直接找到对应时间的备份数据,解压导入即可,恰好这个时间节点的数据没有,只备份到2018年9月25号的,糟糕了吧 咋办呢 ...
- mysql binlog恢复数据实战
在前面,我们了解了mysql binlog日志的作用以及使用方法: http://www.php20.cn/article/237 在后面讲到了,可以通过binlog进行恢复数据,那么,具体步骤是怎 ...
- 【转】【MySQL】mysql 通过bin-log恢复数据方法详解
mysql中bin-log在mysql默认状态下是没有打开的,我们要先打开mysql 开启bin-log功能,然后再通过备份的bin-log进行数据库恢复了. 具体的操作是通过mysqlbinlog这 ...
- Mysql使用binlog恢复数据解决误操作问题的两种方法
为保证没有其他参数配置影响,重新安装配置了一台最小化安装的CentOS7虚拟机 1. 基础知识 安装mysql5.6数据库Mysql binlog初步理解 2. 配置mysql 开启binlog.修 ...
随机推荐
- Linux(CentOS)启动时自动执行脚本(rc.local)
一.Linux开机启动有多种方法,比如我设置mysql开机启动为:chkconfig --level 35 mysqld on 二.下面说说通过rc.local文件进行开机启动: 1.首先创建一个启动 ...
- IntelliJ IDEA破解教程汇总
IDEA是一款很好用的工具,若资金允许,请点击https://www.jetbrains.com/idea/buy/购买正版,谢谢合作. 目前破解的方式主要有三种,注册机.破解补丁.注册码,下面分别介 ...
- (三)Java数据结构和算法——冒泡、选择、插入排序算法
一.冒泡排序 冒泡算法的运作规律如下: ①.比较相邻的元素.如果第一个比第二个大,就交换他们两个. ②.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数( ...
- [转]Mathjax语法总结
链接地址:https://blog.csdn.net/ajacker/article/details/80301378
- nodejs调试工具 node-inspect
1.安装 npm install -g node-inspect 2.chrome设置 chrome://flags/#enable-devtools-experiments 3.测试 测试代码mai ...
- 【并行计算-CUDA开发】GPU并行编程方法
转载自:http://blog.sina.com.cn/s/blog_a43b3cf2010157ph.html 编写利用GPU加速的并行程序有多种方法,归纳起来有三种: 1. 利用现有的G ...
- 最新 多点Dmalljava校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.多点Dmall等10家互联网公司的校招Offer,因为某些自身原因最终选择了多点Dmall.6.7月主要是做系统复习.项目复 ...
- SET key value [EX seconds] [PX milliseconds] [NX|XX]
SET key value [EX seconds] [PX milliseconds] [NX|XX] 可用版本: >= 1.0.0 时间复杂度: O(1) 将字符串值 value 关联到 k ...
- pyhthon Opencv截取视频中的图片
import os import cv2 ##加载OpenCV模块 def video2frames(pathIn='', pathOut='', imgname='', only_output_vi ...
- centos设置IP
centos设置IP 原由:虚拟机里安装了很多软件,每天要使用,原来使用的动态IP,而且很长时间也没变,一直使用的很好,忽然一天访问不了了,找了几次才发现动态IP地址变了,这些后决定将虚拟机的IP地址 ...