版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34646546/article/details/89343451
年终故障演练案例(一)
1、创建一个数据库 app
2、在app下创建一张表t1
3、插入5行任意数据
4、全备
5、插入两行数据,任意修改1行数据,删除1行数据
6、删除所有数据
7、再t1中又插入5行新数据,修改3行数据
需求,跳过第六步恢复表数据
写备份脚本和策略
环境模拟
#1、创建一个数据库 app
create database app;
#2、在app下创建一张表t1
use app;
create table t1(id int);
#3、插入5行任意数据
insert into t1 values(1),(2),(3),(4),(5);
#4、全备
mysqldump -uroot -p -A -R -E --triggers --master-data=2 --single-transaction --set-gtid-purged=OFF >/data/backup/appfull.sql
#5、插入两行数据,任意修改1行数据,删除1行数据
insert into t1 values(6),(7);
update t1 set id='30' where id=1;
delete from t1 where id=2;
#6、删除所有数据
delete from t1 ;
#7、再t1中又插入5行新数据,修改3行数据
insert into t1 values(11),(12),(13),(14),(15);
update t1 set id='31' where id=11;
update t1 set id='32' where id=12;
update t1 set id='33' where id=13;
select * from t1;
create database app;
use app;
create table t1(id int);
insert into t1 values(1),(2),(3),(4),(5);
[root@db01 ~]# mysqldump -uroot -p -A -R -E --triggers --master-data=2 --single-transaction --set-gtid-purged=OFF >/data/backup/appfull.sql
use app;
insert into t1 values(6),(7);
update t1 set id='30' where id=1;
delete from t1 where id=2;
delete from t1 ;
select * from t1;
insert into t1 values(11),(12),(13),(14),(15);
update t1 set id='31' where id=11;
update t1 set id='32' where id=12;
update t1 set id='33' where id=13;
select * from t1;
思路
- 恢复全备份
- 恢复binlog
准备binlog日志
查看全背中的binlog信息
vim /data/backup/appfull.sql
大概在22行
– CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000018’, MASTER_LOG_POS=1246;
查找截取点
FBI [(none)]>show binlog events in 'mysql-bin.000018';
+------------------+------+----------------+-----------+-------------+----------------------------------------------------------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+------------------+------+----------------+-----------+-------------+----------------------------------------------------------------------------------------+
| mysql-bin.000018 | 4 | Format_desc | 6 | 123 | Server ver: 5.7.20-log, Binlog ver: 4 |
| mysql-bin.000018 | 123 | Previous_gtids | 6 | 234 | 39dad7bc-602f-11e9-a236-000c29422f63:1-309,
c3972b9a-55bf-11e9-8abc-000c29422f63:13-25 |
| mysql-bin.000018 | 234 | Gtid | 6 | 299 | SET @@SESSION.GTID_NEXT= '39dad7bc-602f-11e9-a236-000c29422f63:310' |
| mysql-bin.000018 | 299 | Query | 6 | 370 | BEGIN |
| mysql-bin.000018 | 370 | Table_map | 6 | 414 | table_id: 381 (app.t1) |
| mysql-bin.000018 | 414 | Write_rows | 6 | 474 | table_id: 381 flags: STMT_END_F |
| mysql-bin.000018 | 474 | Xid | 6 | 505 | COMMIT /* xid=2400 */ |
| mysql-bin.000018 | 505 | Gtid | 6 | 570 | SET @@SESSION.GTID_NEXT= '39dad7bc-602f-11e9-a236-000c29422f63:311' |
| mysql-bin.000018 | 570 | Query | 6 | 659 | drop database app |
| mysql-bin.000018 | 659 | Gtid | 6 | 724 | SET @@SESSION.GTID_NEXT= '39dad7bc-602f-11e9-a236-000c29422f63:312' |
| mysql-bin.000018 | 724 | Query | 6 | 815 | create database app |
| mysql-bin.000018 | 815 | Gtid | 6 | 880 | SET @@SESSION.GTID_NEXT= '39dad7bc-602f-11e9-a236-000c29422f63:313' |
| mysql-bin.000018 | 880 | Query | 6 | 975 | use `app`; create table t1(id int) |
| mysql-bin.000018 | 975 | Gtid | 6 | 1040 | SET @@SESSION.GTID_NEXT= '39dad7bc-602f-11e9-a236-000c29422f63:314' |
| mysql-bin.000018 | 1040 | Query | 6 | 1111 | BEGIN |
| mysql-bin.000018 | 1111 | Table_map | 6 | 1155 | table_id: 383 (app.t1) |
| mysql-bin.000018 | 1155 | Write_rows | 6 | 1215 | table_id: 383 flags: STMT_END_F |
| mysql-bin.000018 | 1215 | Xid | 6 | 1246 | COMMIT /* xid=2413 */ |
| mysql-bin.000018 | 1246 | Gtid | 6 | 1311 | SET @@SESSION.GTID_NEXT= '39dad7bc-602f-11e9-a236-000c29422f63:315' |
| mysql-bin.000018 | 1311 | Query | 6 | 1382 | BEGIN |
| mysql-bin.000018 | 1382 | Table_map | 6 | 1426 | table_id: 385 (app.t1) |
| mysql-bin.000018 | 1426 | Write_rows | 6 | 1471 | table_id: 385 flags: STMT_END_F |
| mysql-bin.000018 | 1471 | Xid | 6 | 1502 | COMMIT /* xid=3195 */ |
| mysql-bin.000018 | 1502 | Gtid | 6 | 1567 | SET @@SESSION.GTID_NEXT= '39dad7bc-602f-11e9-a236-000c29422f63:316' |
| mysql-bin.000018 | 1567 | Query | 6 | 1638 | BEGIN |
| mysql-bin.000018 | 1638 | Table_map | 6 | 1682 | table_id: 385 (app.t1) |
| mysql-bin.000018 | 1682 | Update_rows | 6 | 1728 | table_id: 385 flags: STMT_END_F |
| mysql-bin.000018 | 1728 | Xid | 6 | 1759 | COMMIT /* xid=3196 */ |
| mysql-bin.000018 | 1759 | Gtid | 6 | 1824 | SET @@SESSION.GTID_NEXT= '39dad7bc-602f-11e9-a236-000c29422f63:317' |
| mysql-bin.000018 | 1824 | Query | 6 | 1895 | BEGIN |
| mysql-bin.000018 | 1895 | Table_map | 6 | 1939 | table_id: 385 (app.t1) |
| mysql-bin.000018 | 1939 | Delete_rows | 6 | 1979 | table_id: 385 flags: STMT_END_F |
| mysql-bin.000018 | 1979 | Xid | 6 | 2010 | COMMIT /* xid=3197 */ |
| mysql-bin.000018 | 2010 | Gtid | 6 | 2075 | SET @@SESSION.GTID_NEXT= '39dad7bc-602f-11e9-a236-000c29422f63:318' |
| mysql-bin.000018 | 2075 | Query | 6 | 2146 | BEGIN |
| mysql-bin.000018 | 2146 | Table_map | 6 | 2190 | table_id: 385 (app.t1) |
| mysql-bin.000018 | 2190 | Delete_rows | 6 | 2255 | table_id: 385 flags: STMT_END_F |
| mysql-bin.000018 | 2255 | Xid | 6 | 2286 | COMMIT /* xid=3198 */ |
| mysql-bin.000018 | 2286 | Gtid | 6 | 2351 | SET @@SESSION.GTID_NEXT= '39dad7bc-602f-11e9-a236-000c29422f63:319' |
| mysql-bin.000018 | 2351 | Query | 6 | 2422 | BEGIN |
| mysql-bin.000018 | 2422 | Table_map | 6 | 2466 | table_id: 385 (app.t1) |
| mysql-bin.000018 | 2466 | Write_rows | 6 | 2526 | table_id: 385 flags: STMT_END_F |
| mysql-bin.000018 | 2526 | Xid | 6 | 2557 | COMMIT /* xid=3200 */ |
| mysql-bin.000018 | 2557 | Gtid | 6 | 2622 | SET @@SESSION.GTID_NEXT= '39dad7bc-602f-11e9-a236-000c29422f63:320' |
| mysql-bin.000018 | 2622 | Query | 6 | 2693 | BEGIN |
| mysql-bin.000018 | 2693 | Table_map | 6 | 2737 | table_id: 385 (app.t1) |
| mysql-bin.000018 | 2737 | Update_rows | 6 | 2783 | table_id: 385 flags: STMT_END_F |
| mysql-bin.000018 | 2783 | Xid | 6 | 2814 | COMMIT /* xid=3201 */ |
| mysql-bin.000018 | 2814 | Gtid | 6 | 2879 | SET @@SESSION.GTID_NEXT= '39dad7bc-602f-11e9-a236-000c29422f63:321' |
| mysql-bin.000018 | 2879 | Query | 6 | 2950 | BEGIN |
| mysql-bin.000018 | 2950 | Table_map | 6 | 2994 | table_id: 385 (app.t1) |
| mysql-bin.000018 | 2994 | Update_rows | 6 | 3040 | table_id: 385 flags: STMT_END_F |
| mysql-bin.000018 | 3040 | Xid | 6 | 3071 | COMMIT /* xid=3202 */ |
| mysql-bin.000018 | 3071 | Gtid | 6 | 3136 | SET @@SESSION.GTID_NEXT= '39dad7bc-602f-11e9-a236-000c29422f63:322' |
| mysql-bin.000018 | 3136 | Query | 6 | 3207 | BEGIN |
| mysql-bin.000018 | 3207 | Table_map | 6 | 3251 | table_id: 385 (app.t1) |
| mysql-bin.000018 | 3251 | Update_rows | 6 | 3297 | table_id: 385 flags: STMT_END_F |
| mysql-bin.000018 | 3297 | Xid | 6 | 3328 | COMMIT /* xid=3203 */ |
+------------------+------+----------------+-----------+-------------+----------------------------------------------------------------------------------------+
58 rows in set (0.00 sec)
FBI [(none)]>
mysqlbinlog --skip-gtids --include-gtids='39dad7bc-602f-11e9-a236-000c29422f63:315-322' --exclude-gtids='39dad7bc-602f-11e9-a236-000c29422f63:317' /data/binlog/mysql-bin.000018 >/data/backup/appbin.sql
全备以及binlog日志
[root@db01 backup]# ll app*
-rw-r--r-- 1 root root 7191 Apr 16 21:47 appbin.sql
-rw-r--r-- 1 root root 50823577 Apr 16 21:35 appfull.sql
恢复
set sql_log_bin=0;
source /data/backup/appfull.sql;
source /data/backup/appbin.sql
set sql_log_bin=1;