18.6.9 MySQL Cluster 복제를 사용한 MySQL Cluster 백업
- 18.6.9.1 MySQL Cluster 복제 : 복제 슬레이브와 마스터의 바이너리 로그의 자동 동기화
- 18.6.9.2 MySQL Cluster 복제를 사용한 시점 복구
이 섹션에서는 백업을 만들고 백업에서 MySQL Cluster 복제를 사용하여 복원에 대해 설명합니다. 복제 서버는 앞에서 설명한대로 이미 구성된 것으로합니다 ( 섹션 18.6.5 "복제를위한 MySQL Cluster의 준비」 및 그 직후의 섹션을 참조하십시오). 이것이 이미 이루어지고있는 경우 백업하고 백업에서 복원하는 방법은 다음과 같습니다.
백업을 시작하려면 2 가지 방법이 있습니다.
방법 A이 방법은 복제 프로세스를 시작하기 전에 클러스터 백업 프로세스가 마스터 서버에서 활성화되어 있어야합니다. 이렇게에는
my.cnf file
의[mysql_cluster]
섹션에 다음 줄을 추가합니다. 여기에서management_host
마스터 클러스터에 대한NDB
관리 서버의 IP 주소 또는 호스트 이름이며port
는 관리 서버의 포트 번호입니다.ndb-connectstring=
management_host
[:port
]참고포트 번호는 기본 포트 (1186)가 사용되지 않은 경우에만 지정해야합니다. MySQL Cluster의 포트 및 포트 할당에 대한 자세한 내용은 섹션 18.2.4 "MySQL Cluster의 초기 구성" 을 참조하십시오.
이 경우 백업이 문을 복제 마스터에서 실행하면 시작할 수 있습니다.
shell
M
>ndb_mgm -e "START BACKUP"
방법 B
my.cnf
파일에서 관리 호스트를 검색 할 위치가 지정되어 있지 않은 경우,START BACKUP
명령의 일부로이 정보를NDB
관리 클라이언트에 전달하여 백업 프로세스를 시작할 수 있습니다. 여기에서 같이 작업을 수행 할 수 있습니다. 여기에서management_host
와port
는 관리 서버의 호스트 이름과 포트 번호입니다.shell
M
>ndb_mgm
management_host
:port
-e "START BACKUP"전에 언급 한 시나리오 ( 섹션 18.6.5 "복제를위한 MySQL Cluster 준비" 를 참조하십시오) 이것은 다음과 같이 실행됩니다.
shell
M
>ndb_mgm rep-master:1186 -e "START BACKUP"
온라인되어있는 슬레이브 클러스터 백업 파일을 복사합니다. 마스터 클러스터 ndbd 프로세스를 실행하는 각 시스템에는 시스템에서 클러스터 백업 파일이 배치되고, 이러한 모든 파일을 슬레이브에 복사되어 성공적인 복원을 보장해야합니다. 백업 파일은 슬레이브 관리 호스트가있는 컴퓨터의 어떤 디렉토리에 복사 할 수 있습니다 만, MySQL 및 NDB 바이너리가 해당 디렉토리에 대한 읽기 권한을 가지고있는 경우에 한합니다. 이 경우에는이 파일이 디렉토리
/var/BACKUPS/BACKUP-1
에 복사 된 것으로합니다.슬레이브 클러스터는 마스터와 같은 ndbd 프로세스 (데이터 노드) 번호를 가질 필요는 없지만이 번호를 같은 번호로하는 것이 좋습니다. 복제 프로세스의 잘못된 시작을 방지하려면 슬레이브를
--skip-slave-start
옵션에서 시작해야합니다.마스터 클러스터에 존재하는 슬레이브에 복제 데이터베이스를 슬레이브 클러스터에 만듭니다.
중요복제하는 각 데이터베이스에 대한
CREATE DATABASE
(또는CREATE SCHEMA
) 문은 슬레이브 클러스터의 각 SQL 노드에서 실행합니다.MySQL Monitor에서이 문을 사용하여 슬레이브 클러스터를 재설정합니다.
mysql
S
>RESET SLAVE;
복원 프로세스를 실행하기 전에 슬레이브
ndb_apply_status
테이블에 레코드가 포함되어 있지 않은지 확인하는 것이 중요합니다. 이렇게 슬레이브에서이 SQL 문을 실행합니다.MySQL
S
>DELETE FROM mysql.ndb_apply_status;
이제 각 백업 파일에 순서대로 ndb_restore 명령을 사용하여 복제 슬레이브에서 클러스터 복구 프로세스를 시작할 수 있습니다. 이 과정의 첫 클러스터의 메타 데이터를 복원하기위한
-m
옵션을 추가해야합니다.shell
S
>ndb_restore -c
slave_host
:port
-nnode-id
\-b
backup-id
-m -rdir
dir
은 백업 파일이 복제 슬레이브에 놓인 디렉토리 경로입니다. 나머지 백업 파일에 해당하는 ndb_restore 명령에-m
옵션을 사용하지 마십시오.백업 파일이 디렉토리
/var/BACKUPS/BACKUP-1
에 복사 된 장소이다 4 개의 데이터 노드 ( 섹션 18.6 "MySQL Cluster 복제" 의 그림에 표시된 바와 같습니다)를 사용하여 마스터 클러스터에서 복원 경우, 슬레이브에서 실행되는 명령의 올바른 순서는 다음과 같습니다.shell
S
>ndb_restore -c rep-slave:1186 -n 2 -b 1 -m \
-r ./var/BACKUPS/BACKUP-1
shellS
>ndb_restore -c rep-slave:1186 -n 3 -b 1 \
-r ./var/BACKUPS/BACKUP-1
shellS
>ndb_restore -c rep-slave:1186 -n 4 -b 1 \
-r ./var/BACKUPS/BACKUP-1
shellS
>ndb_restore -c rep-slave:1186 -n 5 -b 1 -e \
-r ./var/BACKUPS/BACKUP-1
중요시대가 슬레이브
mysql.ndb_apply_status
에 기록 된이 예의 ndb_restore의 마지막 시작에-e
(또는--restore_epoch
) 옵션이 필요합니다. 이 정보가 없으면 슬레이브는 마스터와 적절히 동기를 취할 수 없게됩니다. ( 섹션 18.4.20 "ndb_restore - MySQL Cluster 백업 복원" 을 참조하십시오.)여기에서 노예
ndb_apply_status
테이블에서 최신 신기원을 취득해야합니다 ( 섹션 18.6.8 "MySQL Cluster 복제를 사용한 장애 조치 구현" 에서 설명한 같습니다).mysql
S
>SELECT @latest:=MAX(epoch)
FROM mysql.ndb_apply_status;
이전 단계에서 얻은 에포크 값으로
@latest
을 사용하면 여기에 나와있는 쿼리를 사용하여 마스터mysql.ndb_binlog_index
테이블에서 올바른 바이너리 로그 파일@file
의 올바른 시작 위치@pos
을 얻을 수 있습니다.mysql
M
>SELECT
->@file:=SUBSTRING_INDEX(File, '/', -1),
->@pos:=Position
->FROM mysql.ndb_binlog_index
->WHERE epoch > @latest
->ORDER BY epoch ASC LIMIT 1;
현재 복제 트래픽이없는 경우 마스터에서
SHOW MASTER STATUS
를 실행하여File
컬럼에 표시되는 모든 파일에 대해 가장 큰 값의 접미사를 가진 이름의 파일Position
컬럼의 값을 사용하면이 정보 를 얻을 수 있습니다. 그러나이 경우이를 지정하고 그 내용을 다음 단계에서 수동으로 지정하거나 스크립트에서 출력을 분석하여 지정해야합니다.이전 단계에서 얻은 값을 사용하면 슬레이브의 mysql 클라이언트에서 적당한
CHANGE MASTER TO
문을 발행 할 수 있습니다.mysql
S
>CHANGE MASTER TO
->MASTER_LOG_FILE='@file',
->MASTER_LOG_POS=@pos;
슬레이브는 어떤 바이너리 로그 파일의 어떤 점에서 읽기를 시작하거나 마스터에서 "알"하게되므로, 슬레이브는이 표준 MySQL 문에서 복제를 시작할 수 있습니다.
mysql
S
>START SLAVE;
보조 복제 채널에서 백업 및 복원을 수행하기 위해 필요한 것은 필요한 기본 마스터와 슬레이브 복제 서버의 호스트 이름과 ID를 대신하여 보조 마스터와 슬레이브의 호스트 이름과 ID를 사용하고 위 명령문을 실행하는 단계를 반복 할뿐입니다.
클러스터의 백업과 백업에서 클러스터의 복원에 관한 자세한 내용은 섹션 18.5.3 "MySQL Cluster의 온라인 백업" 을 참조하십시오.