MySQL의 사용에서 mysqlbinlog 명령은 실수로 삭제 된 데이터를 복구하는 방법

실험 환경 :
MYSQL 5.7.22
치 개방 바이너리 로그
로그 형식 혼합
실험 절차 :
1과 같이 실행 FLUSH 로그;
마스터-bin.000014 새 파일은 파일을 생성
 
 
실험은 실험의 전체 과정의 내용을 관찰 내용보다 직관적이고 쉽게 새로 로그인합니다.
나는 온라인 REST 마스터를 사용하여 많은 기사를 보았다,하지만이 명령의 심각성을 설명하지
이 명령은 모든 로그 파일을 삭제하고 파일 이름이 0으로 재설정하고 포인트를 기록하고, 사건의 99 % 미만이 명령을보다
삭제 로그 PURGE MASTER LOGS ... 그래서 약간의 보험을 사용할 수 있습니다
2, 새 로그 파일이 생성되어, 컨텐츠의 첫번째보기는 몇 가지 포인트가있다 당신은 알 필요가
 
 
이진 파일의 날짜 로그 명령을보기 : mysqlbinlog은 마스터-bin.000014을
# 4에서
# 180903 16시 19분 12초 서버 ID 1 end_log_pos 123 CRC32 0xe03659b3 시작 : 바이너리 로그 4 절, 서버 V 5.7.22 로그가 생성 180903 16시 19분 12초
상단 두 개의 화살표 봐 :
# 4에서 (이벤트는 시작 지점)
# 180,903 16시 19분 12초 (시간을 나타내는)
서버 ID 1 (각각의 고유 한 데이터베이스 MySQL 서버 ID에 대한 기본 및 백업 사본을 지정, 나는 기본적으로 1로 구성되어 있지 않습니다)
end_log_pos (123) (이벤트의 종료점)
두 개의 화살표 아래 봐 :
# 123에서 (이벤트 가기 이벤트 지점과 끝 지점을 시작하면 대응이다)
end_log_pos (154) (이벤트의 종료점)
(4) 내지 (123)에서의 콘텐츠는 이벤트의 내용은
3, 시뮬레이션 비즈니스 시나리오, 빌드 테이블, 삽입 데이터, 그리고 마지막으로 테이블을 제거, 진짜, 나는 두 개의 라이브러리를 구축하고, 다른 라이브러리에 대한 쓰기, 그리고 마지막으로 도서관에서 테이블을 삭제합니다.
> 플러시 LOGS MySQL은;
쿼리가 OK, 0 행 영향 (0.01 초)
MySQL의> 데이터베이스 (T1)을 생성;
쿼리 확인, 1 개 행이 영향 (0.03 초)
MySQL의> 데이터베이스 (T2)를 만들;
쿼리 확인, 1 개 행이 영향 (0.00 초)
MySQL의> 사용 T1;
데이터베이스 변경
의 MySQL> 테이블 T1 (아이디 int)를 생성;
쿼리 확인, 0 행이 영향 (0.03 초)
MySQL의> 사용 T2;
데이터베이스 변경
의 MySQL> 테이블 T2 (아이디 int)를 생성;
쿼리 확인, 0 행이 영향 (0.03 초)
MySQL의 삽입> T2 값 (3)으로;
쿼리가 OK, 1 행의 영향 (0.01 초)
MySQL의 삽입> T2 값 (4)으로;
쿼리가 OK, 1 행의 영향 (0.01 초)
MySQL의> 사용 T1;
데이터베이스 변경
T1 값 (1)으로의 MySQL> 삽입;
쿼리가 OK, 1 행의 영향 (0.01 초)
MySQL의 삽입> T1 값 (2)에;
쿼리가 OK, 1 행의 영향 (0.01 초)
MySQL의> 사용 T2;
데이터베이스 변경
T2 값 (20)으로의 MySQL> 삽입;
쿼리가 OK, 1 행의 영향 (0.01 초)
MySQL의> 사용 T1;
데이터베이스 변경
T1 값 (10)으로의 MySQL> 삽입;
쿼리가 OK, 1 행의 영향 (0.01 초)
MySQL의> 드롭 테이블 T1;
쿼리가 OK, 0 행 영향 (0.02 초)
MySQL의> 사용 T2;
데이터베이스 변경
T2 값 (222)으로의 MySQL> 삽입;
쿼리가 OK, 1 행의 영향 (0.01 초)
MySQL은>
T1, T2 테이블을 구축, T1, T2 라이브러리를 구축.
데이터 T1을 삽입하려면 : 1,2,10를
데이터 T2를 삽입하려면 : 3,4,20,222를
시뮬레이션 시나리오, 삭제 테이블 T1은 T2 T2 테이블 도서관 서비스는 계속 실행
 
T1의 현재 로그 테이블을 통해 복원됩니다.
먼저 삭제 명령 로그 포인트를 찾을 수있다 :
mysqlbinlog은 마스터-bin.000014 | 그렙 -5a "DROP 표"
 
 
2439 참조 #AT (이 번호를 메모)
이 이벤트에서 DROP 표 점을 수행 할 수 있습니다.
로그 T1에만 로그 파일의 라이브러리뿐만 아니라 T2 라이브러리 로그하지 이후에만 데이터베이스 로그 T1을 취할 것
또한 단지 2,439 전에 로그 로그 지점을 한 후 다시 신청
우리가 다시, 2439를 기록 걸릴 경우 테이블이이 문장의 구현 될 것입니다 재 구축, 데이터 삽입, 테이블을 구축 삭제 데이터베이스 응용 프로그램을 데이터베이스가있을 때.
 
 T1에서 mysqlbinlog -d --stop 위치 = 2,439 마스터 bin.000014> test.sql (실제로 문 주어지는 실행)
경고 : 사용 된 --database 옵션. 이 거래의 일부를 필터링 할 수 있지만, 어떤 경우에 GTIDs 포함됩니다. 제외 할 또는 거래를 포함하는 경우, 당신은 옵션을 --exclude-gtids 또는 --include-gtids을 사용해야합니다 각각 대신.
暂时弄不清楚原因,百度了下修改成:
mysqlbinlog은 마스터 bin.000014 -d-T1 --skip gtids --stop 위치 = 2,439> test.sql
-d : 지정 매개 변수는 데이터베이스 로그입니다
명령 수단 그 2439 마스터 포인트 로그 bin.000014日志文件内的 T1의 데이터베이스 로그, 이벤트, 출력 test.sql 전
# 꼬리 test.sql
파일의 마지막 몇 줄 봐
 
로그 데이터베이스 :
MySQL의> 사용 T1;
데이터베이스 변경
MySQL의> 소스 test.sql
중간 오류, 문 안쪽에 T1을 포함하는 데이터베이스를 구축하기 때문이다.
목차보기
 
 
해당 데이터 다시 그래서.
----------------
면책 조항 :이 문서는 CSDN 블로거 '연료 식초 0'원본입니다은 CC 4.0 BY-SA 저작권 계약에 따라, 복제, 원본 소스 링크를 첨부 해주세요 이 문.
원본 링크 : HTTPS : //blog.csdn.net/chaigang/article/details/82350399

추천

출처www.cnblogs.com/yaoyangding/p/12237352.html