Database 를 통째로 drop 해버리는 사고가 발생하여

Full Backup본과 Full Backup 이후 binary log들로 최신 시점까지 복구한 작업입니다.

 

-1. Drop database 상황

DROP DATABASE IF EXISTS `testdb`
/*!*/;
# at 114400357
#180613 10:40:05 server id 1  end_log_pos 114400395     GTID 0-1-10683058 ddl
/*!100001 SET @@session.gtid_seq_no=10683058*//*!*/;
# at 114400395
#180613 10:40:05 server id 1  end_log_pos 114400552     Query   thread_id=344272        exec_time=0     error_code=0
SET TIMESTAMP=1528854005/*!*/;
CREATE DATABASE IF NOT EXISTS `testdb` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */
/*!*/;

 

-2. Full backup본으로 복구

 

[TEST02V:masvc01]/bkup001/masvc01/TESTDB/full_backup] ls
2017-09-16_02-00-01.tar     2018-05-26_02-00-03.tar.gz  2018-06-09_02-00-03      recover_54_2.sql
2018-05-19_02-00-03.tar.gz  2018-06-02_02-00-04.tar.gz  2018-06-09_02-00-03.tar  recover_55_2.sql

[TEST02V:masvc01] sudo mv /data001/masvc01 /data001/masvc01_old
[TEST02V:masvc01] sudo mkdir /data001/masvc01 
[TEST02V:masvc01] sudo chown -R masvc01:mysql /data001/masvc01

[TEST02V:masvc01] innobackupex --defaults-file=/engn001/masvc01/TESTDB/mysql/my.cnf --parallel=4 --copy-back ./2018-06-09_02-00-03
=> 최신 풀백업본인 2018-06-09_02--00-03 이용
자세한 풀백업 관련 내용은 아래 링크에서 확인
https://sarc.io/index.php/mariadb/801-xtrabackup-tool

 

-.3 Binary log로 최근시점까지 복구

* 풀백업본은 6/9 02시 시점의 데이터만 있으며 

binary log로 6/9 02:00 ~ 6/13 10:40 까지의 데이터 복구가  필요한 상황

/logs001/masvc01/TESTDB/binary/mysql-bin.000054  22771049

=> 풀 백업본 완료 시점의 binary log position

 

mysqlbinlog --start-position=22771049  mysql-bin.000054 > recover_54.sql
mysqlbinlog --stop-position=114400224  mysql-bin.000055 > recover_55.sql

=> --start-position 과 --stop-position 옵션으로 풀백업본 이후의 데이터 / drop database 이전 시점까지만 데이터 취합

 

[TEST02V:masvc01] mysql -uroot -p < recover_54.sql
[TEST02V:masvc01] mysql -uroot -p < recover_55.sql

=> 취합한 데이터를 부어서 목표한 시점까지의 데이터 복구

* 위 명령어 수행시 덤프 뜬 sql 파일을 CPU 1 core로 쿼리 하나하나 수행하기 때문에

시간이 굉장히 오래 소요될 수 있음