mysql根据二进制日志恢复数据/公司事故实战经验
根据二进制日志恢复
目的:恢复数据,根据二进制日志将数据恢复到今天任意时刻
增量恢复,回滚恢复
如果有备份好的数据,将备份好的数据导入新数据库时,会随着产生二进制日志
先准备一台初始化的数据库
mysqld --initialize --user =mysql --basedir=/usr/local/mysql --datadir=/data/mysql/
启动数据库
service mysqld start
因为数据库版本为5.7,初始化启动后新密码会在mysql-error.log文件中
2018-08-02T11:59:01.189981+08:00 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 63baed5c-9608-11e8-b7c6-525400b807c2.
2018-08-02T11:59:01.193712+08:00 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-08-02T11:59:01.197445+08:00 1 [Note] A temporary password is generated for root@localhost: pVwD<NQ:i85z
2018-08-02T11:59:02.323852+08:00 1 [Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode.
2018-08-02T11:59:02.323876+08:00 1 [Warning] 'user' entry 'mysql.session@localhost' ignored in --skip-name-resolve mode.
创建数据,我在这创建了4个空的库
MySQL [mysql]> create database t1;
Query OK, 1 row affected (0.00 sec)
MySQL [mysql]> create database t2;
Query OK, 1 row affected (0.00 sec)
MySQL [mysql]> create database t3;
Query OK, 1 row affected (0.00 sec)
MySQL [mysql]> create database t4;
Query OK, 1 row affected (0.00 sec)
MySQL [mysql]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| t1 |
| t2 |
| t3 |
| t4 |
+--------------------+
8 rows in set (0.00 sec)
刷新二进制日志
MySQL [mysql]> flush logs;
Query OK, 0 rows affected (0.01 sec)
查看对应二进制日志(查看时建议导出,vim功能定位方便)
mysqlbinlog --no-defaults mysql-bin.000009 >/data/000009.log
# at 219
#180802 17:56:31 server id 48184 end_log_pos 310 CRC32 0x98636c54 Query thread_id=10589 exec_time=0 error_code=0
SET TIMESTAMP=1533203791/*!*/;
SET @@session.pseudo_thread_id=10589/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1075838976/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb4 *//*!*/;
SET @@session.character_set_client=224,@@session.collation_connection=224,@@session.collation_server=224/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create database ku1
/*!*/;
# at 310
#180802 17:56:34 server id 48184 end_log_pos 375 CRC32 0xfb9a2910 Anonymous_GTID last_committed=1 sequence_number=2 rbr_only=no
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 375
#180802 17:56:34 server id 48184 end_log_pos 466 CRC32 0x8d2da46b Query thread_id=10589 exec_time=0 error_code=0
SET TIMESTAMP=1533203794/*!*/;
create database ku2
/*!*/;
# at 466
#180802 17:56:36 server id 48184 end_log_pos 531 CRC32 0x33111aad Anonymous_GTID last_committed=2 sequence_number=3 rbr_only=no
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 531
#180802 17:56:36 server id 48184 end_log_pos 622 CRC32 0x74d93a38 Query thread_id=10589 exec_time=0 error_code=0
SET TIMESTAMP=1533203796/*!*/;
create database ku3
/*!*/;
# at 622
#180802 17:56:50 server id 48184 end_log_pos 687 CRC32 0xe71ae53e Anonymous_GTID last_committed=3 sequence_number=4 rbr_only=no
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 687
#180802 17:56:50 server id 48184 end_log_pos 770 CRC32 0xc0d9aa6d Query thread_id=10589 exec_time=0 error_code=0
SET TIMESTAMP=1533203810/*!*/;
drop database ku1
/*!*/;
# at 770
#180802 17:56:53 server id 48184 end_log_pos 835 CRC32 0xbb65a7c2 Anonymous_GTID last_committed=4 sequence_number=5 rbr_only=no
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 835
#180802 17:56:53 server id 48184 end_log_pos 918 CRC32 0x2b0760b0 Query thread_id=10589 exec_time=0 error_code=0
SET TIMESTAMP=1533203813/*!*/;
drop database ku2
/*!*/;
# at 918
#180802 17:56:59 server id 48184 end_log_pos 965 CRC32 0xd3f06efa Rotate to mysql-bin.000010 pos: 4
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
回滚恢复数据
我创建了ku1,ku2,ku3三个数据库,然后删除了ku1和ku2两个库,现在需要恢复ku1
根据标记恢复,创建ku1的标记为at219,结束标记为end_log_pos 310,如果有commit标记,需要将commit包含在恢复的范围内!
mysqlbinlog --no-defaults --start-position="219" --stop-position="310" /data/mysql/mysql-bin.000009 | mysql -uroot -p
总结
数据的恢复本质是执行sql语句,需要恢复哪部分数据就去选择二进制日志中记录这部分语句的标记
数据往后追加,不能逆向删除。
mysql根据二进制日志恢复数据/公司事故实战经验的更多相关文章
- mysql使用二进制日志恢复数据
一.恢复到某个二进制文件 1.开启二进制日志 在mysqld的配置节点下添加如下配置 log-bin="E:/Mysql57BinLog/binlog"(windows下的路径,l ...
- 如何通过Mysql的二进制日志恢复数据库数据
经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响.所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlo ...
- Mysql利用binlog日志恢复数据操作(转)
a.开启binlog日志:1)编辑打开mysql配置文件/etc/mys.cnf[root@vm-002 ~]# vim /etc/my.cnf在[mysqld] 区块添加 log-bin=mysql ...
- MySQL通过binlog日志恢复数据
一.查看下自己的MySQL是否开启了binlog日志 # 是否启用binlog日志 OFF:关闭 ON:开启 show variables like 'log_bin'; 二.开启binlog日志 在 ...
- MySQL使用二进制日志恢复数据库
一.二进制日志简介 MySQL有不同类型的日志,其中二进制文件记录了所有对数据库的修改,如果数据库因为操作不当或其他原因丢失了数据,可以通过二进制文件恢复. 在my.ini文件中设置了log-bin, ...
- MySQL 数据库通过日志恢复
http://blog.csdn.net/hanxin1987216/article/details/5976856 要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名.一般可以从选 ...
- mysql学习------二进制日志管理
MySQL二进制日志(Binary Log) a.它包含的内容及作用如下: 包含了所有更新了数据或者已经潜在更新了数据(比如没有匹配任何行的一个DELETE) 包含关于每个更新数据库( ...
- MySQL二进制binlog日志说明以及利用binlog日志恢复数据
MySQL的binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全量备份+binlog日志恢复增量数据部分). 一.关于 ...
- 解说mysql之binlog日志以及利用binlog日志恢复数据
众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废 ...
随机推荐
- 在Docker容器中安装jdk和spark
在Docker容器中安装jdk和spark 1.下载jdk和spark 可以使用迅雷等专业下载软件下载jdk和spark软件包,注意是linux版,这里直接给出下载地址: JDK下载地址 JDK进入后 ...
- 使用字面量或者绑定变量在HANA Studio里执行SQL语句
在SAP note 2000002 – FAQ: SAP HANA SQL Optimization里提到了SQL语句的两种执行方式,具体差异体现在where语句里搜索条件的指定方式上. 所谓Lite ...
- MovieReview—Ghost in the shell(攻壳机动队95版)
About Future And is she really human? She’s just so something new A waking lithium flower ...
- 日期的压缩存储daybits
问题: 存储一个日期的序列,例如保存用户一年的登录时间序列,20140201,20130102这样两个日期,如果用INT那么需要八个字节,用STRING就更多了. 解决: 通过bit来存储一天,具体的 ...
- MySQL:数据库入门篇2
#移除主键时需要先解除递增,才能解除主键 alter table info modify id int null , drop PRIMARY key 一.用户权限 1.创建用户 create use ...
- Python语言程序设计基础(1)—— 程序设计基本方法
Everybody in this country should learn how to program a computer,because it teaches you how to think ...
- UVA515 King
嘟嘟嘟 题目翻译:有n个数,m个限制条件.每一个限制条件形如:1.x y gt c:表示ax + ax+1 + … +ay > c.2.x y It c:表示ax + ax+1 + …… +ay ...
- Webstorm 添加新建.vue文件功能并支持高亮vue语法和es6语法
添加新建.vue文件功能 ①Webstorm 右上角File-Plugins 搜索vue如果没有就去下载 点击serch in repositories ②点击安装vue.js ③安装成功后点击右下角 ...
- css实现单行的靠左靠右和居中效果
1.父元素 text-align:center 2.子元素 .left{ float:left; } .right{ float:right; } .center{ display:inline ...
- 【洛谷P2577】[ZJOI2005]午餐
午餐 题目链接 DP题都辣么毒瘤的么.. 首先,看一下题解 我们就有了思路: 贪心:显然,让吃饭慢的先打饭,sort一遍(证明?不存在的.. DP:f[i][j][k]表示前i个人,窗口1的打饭时间为 ...