이 글은 MySQL 데이터베이스 증분 데이터 복구의 그래픽 코드 사례를 소개합니다. 도움이 필요한 친구들은 참고하세요
1. 사용 시나리오
MySQL 데이터베이스는 매일 0시에 자동으로 준비가 완료됩니다
어느 날 아침 9시에 Zhang San이 실수로 데이터베이스를 삭제했습니다
완전한 데이터 파일과 증분 binlog 파일을 통해 데이터를 복구해야 합니다
전체 sql 파일에 기록된 CHANGE MASTER 문과 binlog 파일 및 해당 위치 정보를 사용하여 binlog 파일의 증분 부분을 찾습니다
mysqlbinlog 명령을 사용하여 위 binlog 파일을 sql 파일로 내보내고 drop 문을 제거합니다.
전체 파일 및 증분 binlog 파일을 통해 sql 파일을 내보냅니다. 완전한 데이터로 복원 가능
CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL, `age` tinyint(2) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `index_name` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 mysql> insert student values(1,'zhangsan',20); mysql> insert student values(2,'lisi',21); mysql> insert student values(3,'wangwu',22);
2. 전체 명령
# mysqldump -uroot -p -B -F -R -x --master-data=2 test|gzip >/server/backup/test_$(date +%F).sql.gz 参数说明: -B 指定数据库 -F 刷新日志 -R 备份存储过程等 -x 锁表 --master-data 在备份语句里添加CHANGE MASTER语句以及binlog文件及位置点信息
3. 계속 데이터 삽입 및 데이터베이스 삭제
rree
이때, 완전한 준비와 오작동의 순간 사이에 사용자가 작성한 데이터에는 binlog를 복원해야 합니다
4. 백업 후 새로 추가된 binlog 파일을 확인합니다
mysql> insert student values(6,'xiaoming',20); mysql> insert student values(6,'xiaohong',20); 此时误操作,删除了test数据库 mysql> drop database test;
5. binlog 파일을 이동하고, sql을 읽고, drop 문을 제거합니다.
# cd /server/backup/ # ls test_2017-03-04.sql.gz # gzip -d test_2017-03-04.sql.gz # grep CHANGE test_2017-03-04.sql -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=107;
6. 데이터 복구
rreee
5.
마스터-슬레이브 복제 등이 없는 인위적인 SQL 문이나 Hot Standby 상황으로 인한 오작동 복구에 적합
복구 조건 완전해야 하고 모든 증분 데이터
복원 시 외부 업데이트를 중지하는 것이 좋습니다. 즉, 데이터베이스 업데이트를 금지하는 것이 좋습니다.
복원 먼저 전체 백업 시간을 설정한 후 전체 백업 시간을 설정합니다. 이후 증분 로그를 SQL 파일에 순서대로 복원한 다음, 파일에서 문제가 있는 SQL 문을 삭제(시간 및 위치 기준으로도 가능)한 다음 SQL 파일로 복원합니다. 데이터베이스
위 내용은 MySQL - 데이터베이스 증분 데이터 복구의 그래픽 코드 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!