Alibaba Cloud MySQL 데이터 백업 및 로컬 MySQL로 데이터 복원 (백업 + Binlog)

참조 : https://help.aliyun.com/knowledge_detail/41817.html?spm=a2c4g.11186623.4.3.49bf4292RNNrSC

원인 : 타이밍 작업으로 인해 프로덕션 환경이 닫히지 않았습니다. 실행해서는 안되는 시간이 지정된 작업이 실행됩니다. 중요한 비즈니스 데이터의 손실로 이어집니다!

1. 백업 상황 확인

인시던트 시간이 1 월 5 일 1:30 (타스크 실행 시간)이기 때문입니다.

Alibaba Cloud 백업을 확인하십시오. 가장 최근 백업은 1 월 2 일 7:43이었습니다 (1 월 5 일 백업은 사용할 수 없음).

따라서 1 월 2 일 7:43부터 1 월 5 일 1:30까지 binlog 로그를 찾습니다.

이제 다운로드해야하는 binlog (mysql-bin.000667-000678)를 잠그고 그림과 같이 위의 전체 백업도 다운로드해야합니다.

2. 데이터 복원 시작

준비 : mysql 서비스 및 Percona XtraBackup 소프트웨어가 설치된 Linux 환경을 찾아야합니다.

mysql 설치 단계 : https://blog.csdn.net/sumengnan/article/details/108736935

Percona XtraBackup을 설치하는 단계 :

1 、 yum 설치 https://repo.percona.com/yum/percona-release-latest.noarch.rpm

  • MySQL 5.6 및 이전 버전을 사용하려면 Percona XtraBackup 2.3을 설치해야합니다.
  • MySQL 5.7 버전을 사용하려면 Percona XtraBackup 2.4를 설치해야합니다.

2 、 yum 설치 percona-xtrabackup-24

rpm이 설치된 경우 종속 패키지는 다음과 같습니다. yum install cmake gcc gcc-c ++ libaio libaio-devel automake autoconf \ bison libtool ncurses-devel libgcrypt-devel libev-devel libcurl-devel \ vim-common

(1) 먼저 전체 백업을 복원하십시오.

 1. Linux 환경에 전체 백업 업로드

2 、 解 包 : cat hins14138181_data_20210102074244_qp.xb | xbstream -x -v -C / home / sumengnan / data2

3 、 解压 : innobackupex --decompress --remove-original / home / sumengnan / data2

4 、 恢复 : innobackupex --defaults-file = / home / sumengnan / data2 / backup-my.cnf --apply-log / home / sumengnan / data2

5. /home/sumengnan/data2/backup-my.cnf 파일을 수정합니다.

다음 매개 변수를 추가하십시오.

lower_case_table_names=1
skip-grant-tables

다음 매개 변수에 주석을 추가하십시오.

 
#innodb_log_checksum_algorithm
#innodb_fast_checksum
#innodb_log_block_size
#innodb_doublewrite_file
#innodb_encrypt_algorithm
#rds_encrypt_data
#redo_log_version
#master_key_id
#server_uuid

6 、 Mysql 실행 절차 : mysqld --defaults-file = / home / sumengnan / data2 / backup-my.cnf --user = mysql --datadir = / home / sumengnan / data2

7. mysql -uroot (비밀번호 없음)를 사용하여 데이터베이스에 연결하고 결과를 확인하거나 Navicat에 연결합니다.

질문 : Navicat이 mysql 서비스에 연결할 때 오류를보고하는 경우 : Table'performance_schema.session_variables '가 존재하지 않습니다.

my.cnf에 구성을 추가하고 mysql을 다시 시작해야합니다.

[mysqld]
show_compatibility_56 = ON
performance_schema
 

(2) binlog 백업을 다시 복원하십시오.

1. 먼저 binlog를 로컬에서 sql 파일로 변환합니다 (로컬에서 mysql 명령을 사용하거나 동일한 명령을 실행하려면 Linux 환경에 넣어야합니다).

Mac을 사용하기 때문에 recover_data.sh 스크립트를 직접 작성했습니다.

000667의 binlog를 선택하여 시작 시간을 설정하고 recover_data.sql을 만듭니다 . 다른 binlog는 recover_data.sql에 추가로 기록됩니다. 000678의 마지막 binlog는 종료 시간을 선택합니다.

mysqlbinlog mysql-bin.000667 --start-datetime='2021-01-02 07:43:36' > recover_data.sql
mysqlbinlog mysql-bin.000668 >> recover_data.sql
mysqlbinlog mysql-bin.000669 >> recover_data.sql
mysqlbinlog mysql-bin.000670 >> recover_data.sql
mysqlbinlog mysql-bin.000671 >> recover_data.sql
mysqlbinlog mysql-bin.000672 >> recover_data.sql
mysqlbinlog mysql-bin.000673 >> recover_data.sql
mysqlbinlog mysql-bin.000674 >> recover_data.sql
mysqlbinlog mysql-bin.000675 >> recover_data.sql
mysqlbinlog mysql-bin.000676 >> recover_data.sql
mysqlbinlog mysql-bin.000677 >> recover_data.sql
mysqlbinlog mysql-bin.000678 --stop-datetime='2021-01-05 01:30:00' >> recover_data.sql
gzip recover_data.sql

스크립트 실행 후 결과

2. Linux 환경에 업로드 후 압축 해제

  • mysql -uroot를 실행하여 mysql에 로그인합니다.
  • set @@ GLOBAL.GTID_MODE = OFF_PERMISSIVE 실행
  • 소스 recover_data.sql을 실행하여 SQL 파일 가져 오기

3. 검증 결과

 

완전한

 

 

추천

출처blog.csdn.net/sumengnan/article/details/112241306