18.6.9.2 MySQL Cluster Replication를 사용한 시점 복구
시점 복구 (즉, 특정 시점보다 뒤에 열린 데이터 변경 복구) 서버를 백업이 수행 된 시점의 상태로 복원 전체 백업 복원 후에 실행됩니다. MySQL Cluster와 MySQL Cluster 복제를 사용한 MySQL Cluster 테이블의 특정 시점 복구를 실행하면 기본 NDB
데이터 백업 (ndb_mgm 클라이언트에서 CREATE BACKUP
을 발행하여 검색됩니다)를 사용하여 ndb_binlog_index
테이블 (mysqldump를 사용 하여 만들어진 덤프)를 복원하여 실행할 수 있습니다.
MySQL Cluster의 시점 복구를 실행하려면이 절의 단계를 수행해야합니다.
ndb_mgm 클라이언트에서
START BACKUP
명령을 사용하여 클러스터의 모든NDB
데이터베이스를 백업합니다 ( 섹션 18.5.3 "MySQL Cluster의 온라인 백업" 을 참조하십시오).그 시점에서 클러스터를 복원하기 전에
mysql.ndb_binlog_index
테이블의 백업을 만듭니다. 이 작업에 mysqldump를 사용하는 것이 아마도 가장 쉽습니다. 이 때 바이너리 로그 파일도 백업합니다.이 백업은 필요에 따라 정기적으로 (간격으로 1 시간마다)으로 업데이트하십시오.
(심각한 손상 또는 오류가 발생합니다.)
최신 양호한 백업을 찾습니다.
데이터 노드의 파일 시스템을 지 웁니다 (ndbd
--initial
또는 ndbmtd--initial
을 사용합니다).참고MySQL Cluster 디스크 데이터 테이블 스페이스 및 로그 파일은
--initial
는 삭제되지 않습니다. 이러한 수동으로 제거해야합니다.mysql.ndb_binlog_index
테이블에서DROP TABLE
또는TRUNCATE TABLE
을 사용합니다.ndb_restore를 실행하여 모든 데이터를 복원합니다.
ndb_apply_status
테이블이 제대로 채워되도록 ndb_restore를 실행할 때--restore_epoch
을 추가해야합니다. (자세한 내용은 섹션 18.4.20 "ndb_restore - MySQL Cluster 백업 복원" 을 참조하십시오.)필요에 따라 mysqldump의 출력에서
ndb_binlog_index
테이블을 복원하거나 백업에서 바이너리 로그 파일을 복원하거나합니다.마지막으로 적용된 신기원 (즉,
ndb_apply_status
테이블의epoch
컬럼의 최대 값)을 사용자 변수@LATEST_EPOCH
로 검색합니다 (중요).SELECT @LATEST_EPOCH:=MAX(epoch) FROM mysql.ndb_apply_status;
ndb_binlog_index
테이블@LATEST_EPOCH
에 대응하는 최신 바이너리 로그 파일 (@FIRST_FILE
)와 위치 (Position
컬럼 값)을이 파일에서 검색합니다.SELECT Position, @FIRST_FILE:=File FROM mysql.ndb_binlog_index WHERE epoch > @LATEST_EPOCH ORDER BY epoch ASC LIMIT 1;
mysqlbinlog를 사용하여 오류가 발생한 시점까지 특정 파일 위치에서 바이너리 로그 이벤트를 재현합니다. ( 섹션 4.6.8 "mysqlbinlog - 바이너리 로그 파일을 처리하기위한 유틸리티" 를 참조하십시오.)
바이너리 로그 복제 및 증분 복구에 대한 자세한 내용은 섹션 7.5 "바이너리 로그를 사용한 시점 (증분) 복구" 를 참조하십시오.