로그 파일을 통해 MySQL 데이터를 복원하는 방법

王林
풀어 주다: 2023-05-26 15:49:06
앞으로
3384명이 탐색했습니다.

    1. 최신 binlog 파일을 찾습니다

    mysql 명령줄에 입력하고 다음 명령을 실행합니다.

    mysql> show master status; +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | binlog.000001 | 967 | | binlog.000002 | 965 | +------------------+-----------+
    로그인 후 복사

    일반적으로 최신 숫자가 더 크며, 위의 최신 숫자는 binlog.000002

    2입니다. 로그 파일에서 복구하고 싶습니다. 시작 위치와 끝 위치

    시작 위치와 끝 위치를 결정하는 방법에는 두 가지가 있습니다. 하나는 시간을 시작과 끝으로 사용하는 것이고, 다른 하나는 로그의 위치를 다음과 같이 사용하는 것입니다. 시작 및 끝 위치

    2.1, mysqlbinlog를 통해 시간 범위

    를 사용합니다. mysql-bin.000002 명령을 사용하여 로그 내용을 확인한 후 삭제 시점을 찾습니다.

    # at 131708213 #210610 11:27:01 server id 1 end_log_pos 131708311 CRC32 0x0fc755e2 Table_map: `loongwind_base`.`xxxx` mapped to number 139 # at 131708311 #210610 11:27:01 server id 1 end_log_pos 131708411 CRC32 0xa91616b9 Write_rows: table id 139 flags: STMT_END_F BINLOG ' BffBYBMBAAAAYgAAAJe12QcAAIsAAAAAAAEADmR4bWhfYmFzZV9oenN5ABpkeF9zeV9hc3NldHNf ZXh0ZW5kc19jb3B5MQAICAgIDwgSCBIEAAgAAPgBAQACA/z/AOJVxw8= BffBYB4BAAAAZAAAAPu12QcAAIsAAAAAAAMAAgAI/wDRAwAAm1M8AUIAAADRUjwBCgAAAFYL5gAM AOWFrOWuieacuuWFs7EBAADbwZkAmama6E+xAQAA28GZAJmpmuhPuRYWqQ== '/*!*/;
    로그인 후 복사

    그런 다음 삭제 시점을 확인합니다. 마지막 백업 로그를 통해 마지막 백업 시점을 찾을 수 없는 경우 메모리에서 이전 백업 시점보다 작다고 알고 있는 시점을 입력할 수 있습니다. 위치 범위

    다음 명령어를 사용하여 로그 이벤트의 위치를 확인하세요

    mysql -uroot -p'password' -e "show binlog events in 'binlog.000002'"|grep -i 'DROP TABLE'
    로그인 후 복사

    실행 결과는 다음과 같습니다.

    binlog.000002 820474948 Query 1 820475111 use `loongwind_ base`; * 서버에서 생성됨 */ /* xid=11790691 */

    즉, 삭제된 위치는 820474948

    이거나 위의 명령을 통해 키워드를 교체하여 마지막 백업의 위치 지점을 찾습니다

    3.

    3.1 시간별 복원

    mysqlbinlog --no-defaults --database=loongwind_base --start-datetime="2021-06-07 09:00:00" --stop-datetime="2021-06-10 16:37:58" binlog.000005 | mysql -uroot -p'password' -s -N -f -D loongwind_base
    로그인 후 복사

    여기서 dxmh_base_hzsy는 데이터베이스 이름

    3.2 위치별 복원

    mysqlbinlog --start-position=1178 --stop-position=2751 -d dxmh-sy binlog.000002|mysql -uroot -p'password' -s -N -f -D loongwind_base loongwind_base 为数据库名称
    로그인 후 복사
    정말로 시작 시간이나 시작 위치를 찾을 수 없다면 --start-datetime 또는 쓸 필요가 없습니다. --start-position이므로 이것을 사용합니다. 기존 데이터와의 충돌을 방지하기 위해 로그 파일을 처음부터 끝까지 복원해야 합니다. 즉, 오류를 건너뛰고 계속 실행하도록 -f를 추가해야 합니다.

    위 내용은 로그 파일을 통해 MySQL 데이터를 복원하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    관련 라벨:
    원천:yisu.com
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!