실수로 삭제된 데이터를 검색하는 Mysql 방법: 먼저 binlog에서 잘못된 명령문을 찾은 다음 binlog 로그를 복원하고 마지막으로 데이터베이스에 복원합니다. 코드는 [# mysql -uroot -p -f data.sql]입니다. .
Mysql에서 실수로 삭제한 데이터를 복구하는 방법:
1.binlog를 찾습니다.
데이터 복구를 위한 전제 조건은 binlog 로그가 켜져 있지 않은 경우입니다. 켜져 있으면 이 문서를 무시하세요. binlog 로그가 활성화되어 있는지 여부는 MySQL 구성 파일을 확인할 수 있습니다. 로그 위치는 일반적으로 /var/lib/mysql 디렉토리 또는 컴파일되고 설치된 날짜 디렉토리에 있습니다. Mysql에 로그인하고 명령을 사용하여 볼 수도 있습니다.
# cat /etc/my.cnf log_bin=mysql-bin # mysql -uroot -p Enter password: mysql> show variables like'log_bin%'; +---------------------------------+--------------------------------------------------+ | Variable_name | Value | +---------------------------------+--------------------------------------------------+ | log_bin | ON | | log_bin_basename | /home/programs/mysql-5.6.26/data/mysql-bin | | log_bin_index | /home/programs/mysql-5.6.26/data/mysql-bin.index | | log_bin_trust_function_creators | OFF | | log_bin_use_v1_row_events | OFF | +---------------------------------+--------------------------------------------------+ 5 rows in set (0.00 sec) # ll /home/programs/mysql-5.6.26/data/mysql-bin* -rw-rw---- 1 mysql mysql 343629748 Oct 13 22:09 /home/programs/mysql-5.6.26/data/mysql-bin.000001 -rw-rw---- 1 mysql mysql 19 Sep 23 17:11 /home/programs/mysql-5.6.26/data/mysql-bin.index
binlog 로그가 여러 개인 경우 현재 binlog를 보고 Mysql 명령줄에서 binlog 로그를 잘라낼 수도 있습니다. binlog를 잘라서 다시 보면 새 binlog 파일에 새 로그가 기록되는 것을 볼 수 있습니다.
mysql> show master status; +------------------+-----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+-----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 343629748 | | | | +------------------+-----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec) mysql> flush logs; Query OK, 0 rows affected (0.01 sec)
2.binlog에서 잘못된 문장 찾기
binlog 로그에서 잘못된 문장이 실행된 시점을 찾아보고, 잘못된 문장 전후의 binlog 로그를 sql로 복원할 수 있습니다. 또한 이 단계를 건너뛰고 전체 binlog 로그를 sql로 직접 복원한 다음 sql 파일을 열고 오류 문을 삭제할 수도 있습니다.
# sudo mysqlbinlog --base64-output=DECODE-ROWS -v -d ids mysql-bin.000001 | grep --ignore-case -A3 -B4 '错误的sql语句'
3. binlog 로그 복원
mysqlbinlog 명령을 사용하면 binlog 로그를 sql 스크립트로 직접 복원할 수 있으며, 시작 및 종료 시간을 지정할 수 있습니다. 마지막 백업부터 복구 시점까지 여러 개의 binlog 로그가 생성된 경우(백업 시 binlog 로그 새로 고치기를 권장), 작은 것부터 큰 것 순서대로 SQL로 내보낸 후 순차적으로 데이터베이스로 가져옵니다.
# sudo mysqlbinlog --base64-output=DECODE-ROWS -v -d ids --start-datetime '2016-10-11 15:22:53' mysql-bin.000001 > /home/stack/data.sql
위 명령에서 -d ids를 사용하여 복원할 데이터베이스를 지정합니다. 테이블 수준 데이터를 복원하려면 해당 데이터를 sql로 내보낸 다음 grep으로 필터링하세요.
# more data.sql | grep --ignore-case -E 'insert|update|delete' | grep table
4. 데이터베이스로 복원
데이터를 복원할 때 중복된 데이터 오류가 발생할 수 있으므로 이를 무시하려면 -f 매개변수를 사용하는 것이 좋습니다.
# mysql -uroot -p -f ids < data.sql
더 많은 관련 무료 학습 권장 사항: mysql 튜토리얼(동영상)
위 내용은 mysql에서 실수로 삭제한 데이터를 복구하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!