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로 쿼리 하나하나 수행하기 때문에
시간이 굉장히 오래 소요될 수 있음