基於二進制日志數據恢復
mysql數據恢復演練實例
如何按需截取日志
基於position好的截取
--start-position=
--stop-position=
mysqlbinlog --start-position=219 --stop-position=1272 /data/binlog/mysql-bin.000002 >/tmp/back.sql
恢復
刪除庫 mysql> drop database oldboy1;
mysql> show databases;
恢復時不產生二進制日志
mysql> set sql_log_bin=0; //臨時關閉二進制日志
mysql> source /tmp/bin.sql //恢復
基於時間點的截取
--start-datetime
--stop-datetime
for example: 2004-12-25 11:25:56
案例: 使用binlog日志進行數據恢復
模擬:
1.
[(none)]>create database binlog charset utf8mb4;
2.
[(none)]>use binlog;
[binlog]>create table t1(id int);
3.
[binlog]>insert into t1 values(1);
[binlog]>commit;
[binlog]>insert into t1 values(2);
[binlog]>commit;
[binlog]>insert into t1 values(3);
[binlog]>commit;
4.
[binlog]>drop database binlog;
恢復
1、找到起點和終點
mysql> show master status;
+------------------+----------+--------------+------------------+-----------------
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set
+------------------+----------+--------------+------------------+-----------------
| mysql-bin.000002 | 1435 | | |
+------------------+----------+--------------+------------------+-----------------
mysql> show binlog events in 'mysql-bin.000002';
命令行:mysqlbinlog --start-position=219 --stop-position=1272 /data/binlog/mysql-bin.000002 >/tmp/back.sql
恢復
mysql> set sql_log_bin=0; //臨時關閉二進制日志
mysql> source /tmp/bin.sql //恢復
# 5. 驗證數據
mysql> use binlog
Database changed
mysql> select * from t1;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
+------+