18.4.20 ndb_restore - MySQL Cluster 백업 복원
클러스터 복원 프로그램은 별도의 명령 행 유틸리티 ndb_restore로 구현되어 있으며 일반적으로 MySQL의 bin
디렉토리에 있습니다. 이 프로그램은 백업의 결과로 작성된 파일을 읽고 저장되어있는 정보를 데이터베이스에 삽입합니다.
ndb_restore는 백업을 만드는 데 사용되는 START BACKUP
명령 ( 섹션 18.5.3.2 "MySQL Cluster 관리 클라이언트를 사용하여 백업 만들기" 를 참조하십시오)에 의해 생성 된 백업 파일에 대해 한 번 실행 해야합니다. 이것은 백업이 생성 된 시점의 클러스터의 데이터 노드 수와 동일합니다.
여러 데이터 노드를 병렬로 복원하는 경우를 제외하고 ndb_restore를 사용하기 전에 클러스터를 단일 사용자 모드로 실행하는 것이 좋습니다. 자세한 내용은 섹션 18.5.8 "MySQL Cluster의 단일 사용자 모드" 를 참조하십시오.
다음 표는 MySQL Cluster 기본 백업 복원 프로그램 ndb_restore 고유의 옵션이 포함되어 있습니다. 추가 설명이 표 다음에 있습니다. 대부분의 MySQL Cluster 프로그램 (ndb_restore 포함)에 공통되는 옵션은 섹션 18.4.27 "MySQL Cluster 프로그램에 공통 옵션 - MySQL Cluster 일반적인 프로그램 옵션" 을 참조하십시오.
표 18.90이 표는 ndb_restore 프로그램의 명령 행 옵션에 대해 설명하고 있습니다
형식 | 설명 | 추가 또는 삭제 |
---|---|---|
| --connectstring의 별칭. | 모든 MySQL 5.6 기반 자료 |
| 이 ID의 노드에서 파일을 백업합니다 | 모든 MySQL 5.6 기반 자료 |
| 지정된 ID의 백업에서 복원합니다 | 모든 MySQL 5.6 기반 자료 |
| NDB API를 사용하여 테이블 데이터 및 로그를 NDB Cluster에 복원합니다 | 모든 MySQL 5.6 기반 자료 |
| NDB API를 사용하여 메타 데이터를 NDB Cluster에 복원합니다 | 모든 MySQL 5.6 기반 자료 |
| VAR 데이터가 아직 크기 변경되지 않은 가변 크기 속성의 배열 유형을 업그레이드하지 않고 컬럼 속성을 변경하지 않습니다 | 모든 MySQL 5.6 기반 자료 |
| 백업에서 데이터를 복원 할 때 속성 승격을 허용합니다 | 모든 MySQL 5.6 기반 자료 |
| 고정 폭 문자열을 가변 폭 형에 올릴 때 후행 공백 (패딩 포함)을 유지하는 것을 허용합니다 | 모든 MySQL 5.6 기반 자료 |
| 디스크 데이터 관련 개체를 복원하지 않습니다 | 모든 MySQL 5.6 기반 자료 |
| 신기원 정보를 상태 테이블로 복원합니다. MySQL Cluster 리플리케이션 슬레이브에서 복제를 시작하는 경우에 유용합니다. mysql.ndb_apply_status의 ID 0 행이 갱신 / 삽입됩니다. | 모든 MySQL 5.6 기반 자료 |
| 데이터 복원 중에 테이블 구조 검사를 생략합니다 | 모든 MySQL 5.6 기반 자료 |
| 데이터 복원시 사용하는 병렬 트랜잭션 수 | 모든 MySQL 5.6 기반 자료 |
| 메타 데이터, 데이터 및 로그를 stdout에 출력합니다 (--print_meta --print_data --print_log와 동일합니다) | 모든 MySQL 5.6 기반 자료 |
| 메타 데이터를 stdout에 출력합니다 | 모든 MySQL 5.6 기반 자료 |
| 데이터를 stdout에 출력합니다 | 모든 MySQL 5.6 기반 자료 |
| stdout에 출력합니다 | 모든 MySQL 5.6 기반 자료 |
| 백업 파일 디렉토리 경로 | 모든 MySQL 5.6 기반 자료 |
| 복원 중에 시스템 테이블을 무시하지 않습니다. 실험용이며 실전에서 사용하기위한 것이 아닙니다 | 모든 MySQL 5.6 기반 자료 |
| NDBCLUSTER 스토리지 엔진을위한 노드 그룹지도. 구문 : (source_nodegroup, destination_nodegroup) 목록 | 모든 MySQL 5.6 기반 자료 |
| 필드가 지정된 문자로 둘러싸여 있습니다 | 모든 MySQL 5.6 기반 자료 |
| 필드가 지정된 문자로 끝납니다 | 모든 MySQL 5.6 기반 자료 |
| 필드는 필요에 따라 지정된 문자로 둘러싸여 있습니다 | 모든 MySQL 5.6 기반 자료 |
| 지정된 문자 행이 종료합니다 | 모든 MySQL 5.6 기반 자료 |
| 바이너리 형식을 16 진수 형식으로 출력합니다 | 모든 MySQL 5.6 기반 자료 |
| 지정된 경로에있는 각 테이블의 탭으로 구분 된 .txt 파일을 만듭니다 | 모든 MySQL 5.6 기반 자료 |
| 탭으로 구분 된 파일에 데이터를 추가합니다 | 모든 MySQL 5.6 기반 자료 |
| 지정된 초 간격으로 복원 상태를 출력합니다 | 모든 MySQL 5.6 기반 자료 |
| mysqld가 연결되어 있고, 바이너리 로깅을 사용하는 경우 복원 된 데이터를 기록하지 않습니다 | 모든 MySQL 5.6 기반 자료 |
| 출력 중복 수준 | 모든 MySQL 5.6 기반 자료 |
| 하나 이상의 복원 할 데이터베이스의 목록 (지정되지 않은 것을 제외합니다) | 모든 MySQL 5.6 기반 자료 |
| 하나 이상의 제외 데이터베이스 목록 (지정되지 않은 것을 포함합니다) | 모든 MySQL 5.6 기반 자료 |
| 복원 할 하나 이상의 테이블 목록 (동일한 데이터베이스의 지정된 않은 것을 제외합니다). 각 테이블 참조는 데이터베이스 이름이 포함되어 있어야합니다 | 모든 MySQL 5.6 기반 자료 |
| 제외 하나 이상의 테이블 목록 (같은 데이터베이스 지정되지 않은 것을 포함합니다). 각 테이블 참조는 데이터베이스 이름이 포함되어 있어야합니다 | 모든 MySQL 5.6 기반 자료 |
| 백업 버전의 테이블에서 데이터베이스의 버전 테이블에없는 열이 무시됩니다. | 모든 MySQL 5.6 기반 자료 |
| 백업에서 데이터베이스에없는 테이블이 무시됩니다. | 추가 : NDB 7.3.7 |
| 백업의 인덱스가 무시됩니다. 데이터 복구에 필요한 시간이 단축 될 수 있습니다. | 모든 MySQL 5.6 기반 자료 |
| 백업에서 발견 된 순서화 된 인덱스를 멀티 스레드로 재구성합니다. 사용되는 스레드 수는 BuildIndexThreads 매개 변수를 설정하여 결정됩니다. | 모든 MySQL 5.6 기반 자료 |
| 백업 파일에서 누락 된 BLOB 테이블이 무시됩니다. | 모든 MySQL 5.6 기반 자료 |
| 새로운 버전의 MySQL Cluster에서 생성 된 백업을 이전 버전으로 복원 할 때 ndb_restore 의해 인식되지 않는 스키마 개체가 무시됩니다. | 모든 MySQL 5.6 기반 자료 |
| 원래의 이름과 다른 이름의 데이터베이스에 복원합니다 | 모든 MySQL 5.6 기반 자료 |
| 백업에서 데이터를 복원 할 때 컬럼 값의 비가 역적 변환 (형식 상승 또는 부호 변경)을 허용합니다 | 모든 MySQL 5.6 기반 자료 |
| 이전 NDB로 이동 된 MySQL 권한 테이블을 복원합니다. | 모든 MySQL 5.6 기반 자료 |
| TRUE (디폴트)의 경우, ALTER TABLE 복사 작업에 남겨진 중간 테이블 (이름 앞에 '# sql- "가 붙어 있습니다)가 복원되지 않습니다. | 추가 : NDB 7.3.6 |
이 유틸리티의 일반적인 옵션을 보여줍니다.
일반적으로 MySQL Cluster의 백업에서 복원하는 경우 ndb_restore는 --nodeid
(약어 : -n
) --backupid
(약어 : -b
) 및 --backup_path
옵션이 있어야합니다.
ndb_restore [-cconnection_string
] -nnode_id
-bbackup_id
\ [-m] -r --backup_path=/path/to/backup/files
-c
옵션은 ndb_restore
클러스터 관리 서버를 찾는 위치를 알 연결 문자열을 지정하는 데 사용합니다. (연결 문자열 내용은 섹션 18.3.2.3 "MySQL Cluster의 연결 문자열" 을 참조하십시오). 이 옵션을 사용하지 않는 경우, ndb_restore는 localhost:1186
관리 서버에 연결을 시도합니다. 이 유틸리티는 클러스터 API 노드로 동작하기 때문에, 클러스터 관리 서버에 연결하기위한 여유 연결 "슬롯"이 필요합니다. 이것은 클러스터 config.ini
파일에 그것을 사용할 수있는 [api]
섹션 또는 [mysqld]
섹션이 하나 이상 존재해야 함을 의미합니다. 따라서 MySQL 서버 또는 다른 응용 프로그램에 사용되지 않은 빈 [api]
섹션 또는 [mysqld]
섹션을 config.ini
에 적어도 하나 준비하는 것이 좋습니다 ( 섹션 18.3.2.7 "MySQL Cluster의 SQL 노드 및 기타 API 노드의 정의 " 를 참조하십시오).
ndb_restore가 클러스터에 연결되어 있는지 확인하려면 ndb_mgm 관리 클라이언트에서 SHOW 명령을 사용합니다. 시스템 쉘에서 다음과 같이함으로써이를 수 있습니다.
shell> ndb_mgm -e "SHOW"
-n
는 백업이 취득 된 데이터 노드의 ID를 지정하는 데 사용합니다.
ndb_restore 복구 프로그램을 처음 실행할 때 메타 데이터도 복원해야합니다. 즉, 데이터베이스 테이블을 다시 작성해야합니다. 이것은 --restore_meta
( -m
) 옵션을 지정하여 실행함으로써 할 수 있습니다. 메타 데이터를 복원 할 필요가있는 것은 단일 데이터 노드뿐입니다. 이것으로 충분 전체 클러스터에 복원 할 수 있습니다. 백업의 복원을 시작할 때 클러스터에 새 데이터베이스가 있어야합니다 (즉, 복원을 수행하기 전에 --initial
을 지정하고 ndbd를 시작하십시오).
테이블 메타 데이터를 복원하지 않고 데이터를 복원 할 수 있습니다. 이렇게하면 기본 동작은 테이블 데이터가 테이블 스키마와 일치하지 않는 경우에 ndb_restore가 오류와 함께 실패하는 것입니다. 이것은 --skip-table-check
옵션 또는 -s
옵션을 사용하여 재정의 할 수 있습니다.
ndb_restore를 사용하여 데이터를 복원 할 때 컬럼 정의의 불일치 제한의 일부가 완화되고 있습니다. 그 유형 불일치 중 하나가 발생하면, ndb_restore는 이전처럼 오류로 중지하지 않고, 대신 데이터를 받아 대상 테이블에 삽입하고이 이루어지고 있다는 경고를 사용자에게 발행 합니다. 이 동작은 --skip-table-check
옵션 또는 --promote-attributes
옵션이 사용되었는지 여부에 관계없이 실행됩니다. 컬럼 정의에서의 이러한 차이는 다음과 같은 유형이 있습니다.
다른
COLUMN_FORMAT
설정 (FIXED
,DYNAMIC
,DEFAULT
)다른
STORAGE
설정 (MEMORY
,DISK
)다른 기본값
다른 배포 키 설정
ndb_restore는 MySQL 복제에서 지원되는 것과 거의 마찬가지로, 속성 승격을 제한적으로 지원합니다. 즉, 특정 형태의 컬럼에서 백업 된 데이터는 일반적으로 "더 큰 같은"형을 사용하여 컬럼에 복원 할 수 있습니다. 예를 들어, CHAR(20)
컬럼의 데이터는 VARCHAR(20)
, VARCHAR(30)
또는 CHAR(30)
으로 선언 된 컬럼에 복원하고 MEDIUMINT
컬럼의 데이터는 INT
또는 BIGINT
형태의 컬럼에 복원 할 수 합니다. 속성 승격하여 현재 지원되는 형식 변환 표는 섹션 17.4.1.9.2 "데이터 유형이 다른 컬럼 복제" 를 참조하십시오.
ndb_restore 의한 속성 승격은 다음과 같이 명시 적으로 활성화해야합니다.
백업을 복원 할 테이블을 준비합니다. ndb_restore를 사용하여 원본과 다른 정의에 테이블을 다시 만들 수 없습니다. 이것은 테이블을 수동으로 작성하거나 테이블 메타 데이터를 복원 한 후에하고 데이터를 복원하기 전에 승격 컬럼을
ALTER TABLE
을 사용하여 변경해야한다는 것을 의미합니다.테이블 데이터를 복원 할 때
--promote-attributes
옵션 (약어 :-A
)를 지정하고 ndb_restore를 호출합니다. 이 옵션을 사용하지 않는 경우, 속성 승격되지 않고 복원 작업이 오류와 함께 실패합니다.
MySQL Cluster NDB 7.3.3 이전에는 문자 데이터 형과 TEXT
또는 BLOB
사이의 변환이 올바르게 처리되지 않았습니다 (Bug # 17325051).
MySQL Cluster NDB 7.3.7 이전에는 TEXT
에서 TINYTEXT
에 강등이 제대로 처리되지 못했습니다 (Bug # 18875137).
문자 데이터 형과 TEXT
또는 BLOB
사이의 변환하려면 문자 ( CHAR
및 VARCHAR
)와 이진 ( BINARY
및 VARBINARY
) 사이의 변환만을 동시에 실행할 수 있습니다. 예를 들어, 같은 ndb_restore 호출에서 VARCHAR
컬럼을 TEXT
로 승격 할 때 INT
컬럼을 BIGINT
로 승격 할 수 없습니다.
다른 문자 집합을 사용하는 TEXT
컬럼 사이의 변환은 지원되지 않습니다. MySQL Cluster NDB 7.3.7 이상에서는이 명시 적으로 허용되지 않습니다 (Bug # 18875137).
ndb_restore를 사용하여 문자 또는 바이너리 형식에서 TEXT
또는 BLOB
로 변환을 수행 할 때
라는 하나 이상의 스테이징 테이블이 생성되고 사용되는 것을 알 수 있습니다. 이 테이블은 그 필요 없게되므로 일반적으로 리스토어 한 후에 ndb_restore에 의해 삭제됩니다. table_name
$ST node_id
--lossy-conversions
, -L
명령 줄 형식 | --lossy-conversions | ||
허용되는 값 | 유형 | boolean | |
기본 | FALSE |
이 옵션은 --promote-attributes
옵션을 보완하기위한 것입니다. --lossy-conversions
를 사용할 때는 백업에서 데이터를 복원 할 때 컬럼 값의 비가 역적 변환 (유형 강등 또는 부호의 변경)이 허용됩니다. 몇 가지 예외는 있지만 강등을 제어하는 규칙은 MySQL 복제의 경우와 동일합니다. 속성 강등에 의해 현재 지원되는 유형 변환은 섹션 17.4.1.9.2 "데이터 유형이 다른 컬럼 복제" 를 참조하십시오.
ndb_restore는 돌이킬 변환하는 동안 실행되는 데이터가 절단 특성 및 열마다보고합니다.
--preserve-trailing-spaces
옵션 (약어 : -R
)을 사용하면 고정 폭 문자 데이터 형식을 가변 폭 동등한 형태에 올릴 때 (즉, CHAR
컬럼 값을 VARCHAR
로 또는 BINARY
컬럼 값 를 VARBINARY
에 올릴 때)에 후행 공백이 유지됩니다. 그렇지 않으면 새로운 컬럼에 삽입 될 때 후행 공백은 그런 컬럼 값에서 제거됩니다.
CHAR
컬럼을 VARCHAR
, 그리고 BINARY
컬럼을 VARBINARY
로 승격 할 수 있지만 VARCHAR
컬럼을 CHAR
로 또는 VARBINARY
컬럼을 BINARY
로 승격 할 수 없습니다.
-b
옵션은 백업 ID 또는 시퀀스 번호를 지정하는 데 사용하고 백업 완료시 표시되는 「Backup
메시지에서 관리 클라이언트에 의해 나타나는 번호와 같은 번호입니다. ( 섹션 18.5.3.2 "MySQL Cluster 관리 클라이언트를 사용하여 백업 만들기" 를 참조하십시오). backup_id
completed」
클러스터 백업을 복원 할 때 동일한 백업 ID를 가진 백업에서 모든 데이터 노드를 복원해야합니다. 다른 백업 파일을 사용하여 클러스터를 복원해도 불일치 상태에서 즉 실패 할 수 있습니다.
--restore_epoch
(약어 : -e
)은 신기원 정보를 클러스터 복제 상태 테이블에 추가 (또는 복원)합니다. 이것은 MySQL Cluster 리플리케이션 슬레이브에서 복제를 시작하는 경우에 유용합니다. 이 옵션을 사용하면 id
컬럼이 0
인 mysql.ndb_apply_status
의 행이 갱신됩니다 (존재하는 경우). 존재하지 않는 경우 그러한 행이 삽입됩니다 ( 섹션 18.6.9 "MySQL Cluster 복제를 사용한 MySQL Cluster 백업" 을 참조하십시오).
--restore_data
이 옵션을 지정하면 ndb_restore가 NDB
테이블 데이터 및 로그를 출력합니다.
--restore_meta
이 옵션을 지정하면 ndb_restore가 NDB
테이블 메타 데이터를 출력합니다. 일반적으로이 옵션을 사용할 필요가있는 것은 클러스터의 첫 번째 데이터 노드를 복원하는 경우입니다. 추가 데이터 노드는 첫 번째에서 메타 데이터를 검색 할 수 있습니다.
--restore-privilege-tables
기본적으로 ndb_restore는 배포 된 MySQL 권한 테이블을 복원하지 않습니다. 이 옵션을 지정하면 ndb_restore가 권한 테이블을 복원합니다.
이것이 작동하는 것은 백업이 수행되기 전에 권한 테이블이 NDB
로 변환 된 경우입니다. 자세한 내용은 섹션 18.5.14 "MySQL Cluster 배포 된 MySQL 권한" 을 참조하십시오.
--backup_path
백업 디렉토리 경로가 필요합니다. 이것은 --backup_path
옵션을 사용하여 ndb_restore로 지정하여 복원 할 백업의 백업 ID에 해당하는 하위 디렉토리가 포함되어 있어야합니다. 예를 들어, 데이터 노드의 DataDir
가 /var/lib/mysql-cluster
인 경우, 백업 디렉토리는 /var/lib/mysql-cluster/BACKUP
이며, ID 3 백업의 백업 파일은 /var/lib/mysql-cluster/BACKUP/BACKUP-3
에 있습니다. 경로는 절대 경로 또는 ndb_restore 실행 파일이있는 디렉토리의 상대 경로를 지정할 수 있으며 필요에 따라 backup_path=
를 앞에 붙일 수 있습니다.
생성 된 데이터베이스와 다른 구성 데이터베이스 백업을 복원 할 수 있습니다. 예를 들어, 노드 ID 2
및 3
의 2 개의 데이터베이스 노드가 클러스터에 작성된 백업 ID 12
백업을 4 노드 클러스터에 복구합니다. 이 경우 ndb_restore를 두 번 실행해야합니다 (백업을 취득한 클러스터 데이터베이스 노드마다 1 회). 그러나 ndb_restore는 버전의 MySQL에서 실행되는 클러스터에서 생성 된 백업을 다른 버전의 MySQL에서 실행되는 클러스터에 항상 복구 할 수 있다고는 아닙니다. 자세한 내용은 섹션 18.2.8 "MySQL Cluster NDB 7.3 업그레이드 및 다운 그레이드" 를 참조하십시오.
새로운 버전의 MySQL Cluster에서 만든 백업을 이전 버전의 ndb_restore를 사용하여 복원 할 수 없습니다. 새로운 버전의 MySQL에서 만든 백업을 기존 클러스터에 복원 할 수 있지만, 그렇게는 새로운 버전의 MySQL Cluster의 ndb_restore 사본을 사용해야합니다.
예를 들어, MySQL Cluster NDB 7.2.5을 실행하는 클러스터에서 취득한 클러스터 백업 MySQL Cluster NDB 7.1.21를 실행하는 클러스터로 복원하려면 MySQL Cluster NDB 7.2.5 배포에 포함 된 ndb_restore를 사용해야합니다.
복원을 더 빠르게하기 위해 충분한 수의 클러스터 연결이 사용 가능한 경우, 데이터를 병렬로 복원 할 수 있습니다. 더 정확하게 말하면 여러 노드를 병렬로 복원하는 경우 각 병렬 ndb_restore 프로세스에 사용할 수있는 [api]
또는 [mysqld]
섹션이 클러스터 config.ini
파일에 존재해야합니다. 그러나 데이터 파일은 항상 로그 전에 적용해야합니다.
--no-upgrade
ndb_restore를 사용하여 백업을 복원하면 기존 고정 형식을 사용하여 생성 된 VARCHAR
컬럼은 현재 사용되는 가변 폭 형식을 사용하여 크기 조정 및 재 작성됩니다. 이 동작은 ndb_restore를 수행 할 때 --no-upgrade
옵션 (약어 : -u
)를 사용하여 재정의 할 수 있습니다.
--print_data
--print_data
옵션을 지정하면 ndb_restore가 출력을 stdout
로 리디렉션합니다.
TEXT
및 BLOB
컬럼 값은 항상 잘립니다.
MySQL Cluster NDB 7.3.7 이전 버전에서는 그러한 값은 출력에서 첫 번째 240 바이트에 잘리고 MySQL
Cluster NDB 7.3.8 이상에서 256 바이트로 잘립니다 (Bug # 14571512, Bug # 65467). 이것은 현재 --print_data
를 사용하여도 무시할 수 없습니다.
데이터 덤프를 stdout
또는 파일 생성 할 때 몇 가지 추가 옵션을 --print_data
옵션과 함께 사용할 수 있습니다. 이들은 mysqldump에서 사용되는 일부 옵션과 유사하며 다음 목록에 나와 있습니다.
--tab
,-T
명령 줄 형식 --tab=dir_name
이 옵션을 사용하면
--print_data
은 테이블마다 각각
라는 이름이 붙은 덤프 파일을 만듭니다. 파일을 저장해야 할 디렉토리 경로를 인수가 필요합니다. 현재 디렉토리의 경우tbl_name
.txt.
을 사용합니다.--fields-enclosed-by =
string
명령 줄 형식 --fields-enclosed-by = char
허용되는 값 유형 string
기본 각 컬럼 값이 옵션에 전달 된 문자열에 의해 포위됩니다 (데이터 유형은 관계 없습니다. 다음 항목을 참조하십시오).
--fields-optionally-enclosed-by =
string
명령 줄 형식 --fields-optionally-enclosed-by
허용되는 값 유형 string
기본 이 옵션에 전달 된 문자열은 문자 데이터가 들어있는 컬럼 값 (
CHAR
,VARCHAR
,BINARY
,TEXT
,ENUM
등)를 묶는 데 사용됩니다.--fields-terminated-by =
string
명령 줄 형식 --fields-terminated-by = char
허용되는 값 유형 string
기본 \ t (tab)
이 옵션에 전달 된 문자열은 컬럼 값을 구분하는 데 사용됩니다. 기본값은 탭 문자 (
\t
)입니다.--hex
명령 줄 형식 --hex
이 옵션을 사용하면 모든 바이너리 값은 16 진수로 출력됩니다.
--fields-terminated-by =
string
명령 줄 형식 --fields-terminated-by = char
허용되는 값 유형 string
기본 \ t (tab)
이 옵션은 출력의 각 행을 종료하는 데 사용되는 문자열을 지정합니다. 기본값은 개행 문자 (
\n
)입니다.--append
명령 줄 형식 --append
--tab
옵션 및--print_data
옵션과 함께 사용하면 동일한 이름을 가진 기존 파일에 데이터가 추가됩니다.
테이블에 명시적인 기본 키가없는 경우 --print_data
옵션을 사용하여 생성되는 출력에는 테이블의 숨겨진 기본 키가 포함됩니다.
--print_meta
이 옵션을 지정하면 ndb_restore가 모든 메타 데이터를 stdout
에 출력합니다.
--print_log
--print_log
옵션을 지정하면 ndb_restore가 로그를 stdout
에 출력합니다.
--print
ndb_restore이 모든 데이터, 메타 데이터 및 로그를 stdout
에 출력합니다. --print_data
, --print_meta
및 --print_log
옵션을 함께 사용하는 것과 같습니다.
--print
또는 --print_*
옵션 중 하나를 사용하는 경우 임시 실행을 할 때 사용됩니다. 이러한 옵션 중 하나 이상을 포함하면 출력이 stdout
로 리디렉션됩니다. 그런 경우 ndb_restore는 데이터 또는 메타 데이터를 MySQL Cluster에 복원하려고하지 않습니다.
--dont_ignore_systab_0
일반적으로 테이블 데이터 및 메타 데이터를 복원 할 때 ndb_restore는 백업에 존재하는 NDB
시스템 테이블의 복사본을 무시합니다. --dont_ignore_systab_0
를 지정하면 시스템 테이블이 복원됩니다. 이 옵션은 실험 및 개발에서만 사용이 의도되고 프로덕션 환경에는 권장되지 않습니다.
--ndb-nodegroup-map
, -z
이 옵션은 노드 그룹에서 취득 된 백업을 다른 노드 그룹에 복원하는 데 사용할 수 있습니다. 인수는
형식의 목록입니다. source_node_group
, target_node_group
--no-binlog
이 옵션은 연결되어있는 SQL 노드가 ndb_restore에 의해 복원 된 데이터를 바이너리 로그에 기록하지 못하게합니다.
--no-restore-disk-objects
, -d
이 옵션을 지정하면 ndb_restore가 MySQL Cluster 디스크 데이터 오브젝트 (테이블 공간, 로그 파일 그룹 등)을 복원하는 것을 금지합니다. 이러한 내용은 섹션 18.5.12 "MySQL Cluster 디스크 데이터 테이블" 을 참조하십시오.
--parallelism=#
# -p
ndb_restore가 사용을 시도 할 수있는 병렬 트랜잭션의 최대 개수를 결정합니다. 기본적으로 이것은 128이고, 최소값은 1이고 최대 값은 1024입니다.
--progress-frequency =
N
백업 진행 중 상태 보고서를 N
초마다 출력합니다. 0 (기본값)을 지정하면 상태 보고서가 출력되지 않습니다. 최대 값은 65535입니다.
--verbose = #
출력 중복 수준을 설정합니다. 최소값은 0이고 최대 값은 255입니다. 기본값은 1입니다.
다음 구문을 사용하면 선택한 데이터베이스에만 또는 단일 데이터베이스의 선택한 테이블 만 복원 할 수 있습니다.
ndb_restore other_options
db_name
, db_name
[...] | tbl_name
[, tbl_name
] [...]
즉, 다음 중 하나를 복원하는 것을 지정할 수 있습니다.
하나 이상의 데이터베이스의 모든 테이블
단일 데이터베이스의 하나 이상의 테이블
--include-databases =
db_name
[, db_name
] [...]
명령 줄 형식 | --include-databases = db-list | ||
허용되는 값 | 유형 | string | |
기본 |
|
--include-tables =
db_name.tbl_name
[, db_name.tbl_name
] [...]
명령 줄 형식 | --include-tables = table-list | ||
허용되는 값 | 유형 | string | |
기본 |
|
특정 데이터베이스 또는 테이블 만 복원하려면 --include-databases
옵션 또는 --include-tables
옵션을 각각 사용합니다. --include-databases
는 복원 할 데이터베이스의 쉼표로 구분 된 목록을 받아들입니다. --include-tables
복원 할 테이블의 쉼표로 구분 된 목록 (
형식)을 받아들입니다. database
. table
--include-databases
또는 --include-tables
를 사용할 때 그 옵션에 의해 지정된 데이터베이스 또는 테이블 만 복원됩니다. 다른 모든 데이터베이스 및 테이블은 ndb_restore에 의해 제외 된 복원되지 않습니다.
다음 표는 --include-*
옵션 (필요한 수있는 다른 옵션은 이해를 돕기 위해 생략합니다)를 사용한 ndb_restore 여러 호출 및 MySQL Cluster 백업에서 복원 할 경우 그 효과를 보여줍니다.
사용하는 옵션 | 결과 |
---|---|
--include-databases = db1 | 데이터베이스 db1 의 테이블 만 복원됩니다. 다른 모든 데이터베이스의 모든 테이블은 무시됩니다 |
--include-databases=db1,db2 (또는 --include-databases=db1 --include-databases=db2 ) | 데이터베이스 db1 및 db2 의 테이블 만 복원됩니다. 다른 모든 데이터베이스의 모든 테이블은 무시됩니다 |
--include-tables = db1.t1 | 데이터베이스 db1 의 테이블 t1 만 복원됩니다. db1 또는 기타 데이터베이스의 다른 테이블은 복원되지 않습니다 |
--include-tables=db1.t2,db2.t1 (또는 --include-tables=db1.t2 --include-tables=db2.t1 ) | 데이터베이스 db1 의 테이블 t2 및 데이터베이스 db2 의 테이블 t1 만 복원됩니다. db1 , db2 또는 기타 데이터베이스의 다른 테이블은 복원되지 않습니다 |
이 두 옵션은 함께 사용할 수 있습니다. 예를 들어, 다음의 경우 데이터베이스 db1
및 db2
의 모든 테이블 이외에 데이터베이스 db3
의 테이블 t1
및 t2
가 복원됩니다 (다른 데이터베이스 또는 테이블은 복원되지 않습니다).
shell> ndb_restore [...] --include-databases=db1,db2 --include-tables=db3.t1,db3.t2
(이 경우에도 필요한 수있는 다른 옵션을 생략합니다.)
--exclude-databases =
db_name
[, db_name
] [...]
명령 줄 형식 | --exclude-databases = db-list | ||
허용되는 값 | 유형 | string | |
기본 |
|
--exclude-tables =
db_name.tbl_name
[, db_name.tbl_name
] [...]
명령 줄 형식 | --exclude-tables = table-list | ||
허용되는 값 | 유형 | string | |
기본 |
|
하나 이상의 데이터베이스 또는 테이블이 복원되지 않도록하려면 ndb_restore의 --exclude-databases
및 --exclude-tables
옵션을 사용합니다. --exclude-databases
는 복원하지 말아야 하나 이상의 데이터베이스의 쉼표로 구분 된 목록을 받아들입니다. --exclude-tables
은 복원하지 말아야 하나 이상의 테이블의 쉼표로 구분 된 목록 (
형식을 사용합니다)를 받아들입니다. database
. table
--exclude-databases
또는 --exclude-tables
를 사용할 때 이러한 옵션은 지정된 데이터베이스 또는 테이블 만 제외됩니다.다른 모든 데이터베이스 및 테이블은 ndb_restore 의해 복원됩니다.
다음 표는 --exclude- *
옵션 (필요한 수있는 다른 옵션은 이해를 돕기 위해 생략합니다)를 사용한 일부 ndb_restore 호출 및 MySQL Cluster 백업에서 복원 경우에 이러한 옵션이 가지는 효과를 보여줍니다.
사용하는 옵션 | 결과 |
---|---|
--exclude-databases = db1 | db1 을 제외한 모든 데이터베이스의 모든 테이블이 복원됩니다. db1 의 테이블은 복원되지 않습니다 |
--exclude-databases = db1, db2 (또는 --exclude-databases = DB1 --exclude-databases = db2 ) | db1 및 db2 를 제외한 모든 데이터베이스의 모든 테이블이 복원됩니다. db1 또는 db2 의 테이블은 복원되지 않습니다 |
--exclude-tables = db1.t1 | 데이터베이스 db1 의 t1 을 제외한 모든 테이블이 복원됩니다. db1 의 다른 모든 테이블은 복원됩니다. 다른 모든 데이터베이스의 모든 테이블은 복원됩니다 |
--exclude-tables = db1.t2, db2.t1 (또는 --exclude-tables = db1.t2 --exclude-tables = db2.t1) | 데이터베이스 db1 의 t2 를 제외한 모든 테이블 및 데이터베이스 db2 의 t1 을 제외한 모든 테이블이 복원됩니다. db1 또는 db2 의 다른 테이블은 복원되지 않습니다. 다른 모든 데이터베이스의 모든 테이블은 복원됩니다 |
이 두 옵션은 함께 사용할 수 있습니다. 예를 들어, 다음의 경우 데이터베이스 db1
과 db2
및 데이터베이스 db3
의 테이블 t1
과 t2
를 제외한 모든 데이터베이스의 모든 테이블이 복원 되지 않습니다 .
shell> ndb_restore [...] --exclude-databases=db1,db2 --exclude-tables=db3.t1,db3.t2
(이 경우도 알기 쉽고 간결하게하기 위해 필요한 수있는 다른 옵션을 생략합니다).
--include- *
옵션 및 --exclude- *
옵션은 다음 규칙에 따라 함께 사용할 수 있습니다.
모든
--include- *
그리고--exclude- *
옵션의 액션은 누적됩니다.모든
--include- *
그리고--exclude- *
옵션은 ndb_restore에 전달 된 순서대로 왼쪽에서 오른쪽으로 평가됩니다.충돌하는 옵션이 있으면 처음 (가장 오른쪽) 옵션이 우선됩니다. 즉, 대상이되는 데이터베이스 또는 테이블과 일치하는 첫 번째 옵션 (오른쪽에서 왼쪽으로 적용 해)가 " 적용됩니다 " .
예를 들어 다음과 같은 일련의 옵션을 지정하면 ndb_restore 가 데이터베이스 db1
의 db1.t1
을 제외한 모든 테이블을 복원하고 다른 데이터베이스의 다른 테이블은 복원하지 않습니다.
--include-databases=db1 --exclude-tables=db1.t1
그러나 위의 옵션의 순서를 반대로하면 데이터베이스 db1
의 모든 테이블이 복원됩니다 ( db1.t1
는 포함되지만 다른 데이터베이스의 테이블은 포함되지 않습니다). 이것은 가장 오른쪽에있는 --include-databases
옵션이 데이터베이스 db1
에 최초로 일치하고 db1
또는 db1
의 테이블과 일치하는 다른 옵션보다 우선하기 때문입니다.
--exclude-tables=db1.t1 --include-databases=db1
--exclude-missing-columns
명령 줄 형식 | --exclude-missing-columns |
--exclude-missing-columns
옵션을 사용하면 선택한 테이블 컬럼만을 복원 할 수 있습니다. 이 옵션을 사용하는 경우, ndb_restore 는 백업에서 발견 된 테이블의 버전과 비교하여 복원되는 테이블에서 누락 된 컬럼을 무시합니다. 이 옵션은 복원되는 모든 테이블에 적용됩니다. 선택한 테이블 또는 데이터베이스에만이 옵션을 적용 할 경우, 그것을 실행할 때 이전 단락에서 설명한 옵션 중 하나 이상을 조합하여 사용할 수 있습니다. 즉, 나머지 테이블에는 이러한 옵션 세트를 보완 적으로 사용하여 데이터를 복원 할 수 있습니다.
--exclude-missing-tables
도입 | 5.6.21-ndb-7.3.7 | ||
명령 줄 형식 | --exclude-missing-tables |
MySQL Cluster NDB 7.3.7 이상에서는이 옵션을 사용하여 선택한 테이블 컬럼만을 복원 할 수도있어 그 경우 ndb_restore 는 백업 대상 데이터베이스에없는 테이블을 무시합니다.
--disable-indexes
명령 줄 형식 | --disable-indexes |
기본 NDB 백업에서 데이터를 복원하는 동안 인덱스의 복원을 비활성화합니다. 나중에 --rebuild-indexes
를 사용하여 멀티 스레드에서 인덱스를 구축하여 모든 테이블의 인덱스를 한 번에 복원 할 수 있습니다. 매우 큰 테이블의 경우에는 인덱스를 동시에 재구성하는 것보다이 편이 빠른 것입니다.
--rebuild-indexes
명령 줄 형식 | --rebuild-indexes |
ndb_restore 에서이 옵션을 사용하면 기본 NDB
백업의 리스토어 할 때 정렬 된 인덱스가 멀티 스레드로 재구성됩니다. 이 옵션이있는 ndb_restore 으로 정렬 된 인덱스를 구축하는 데 사용되는 스레드 수는 BuildIndexThreads
데이터 노드 구성 매개 변수에 의해 제어됩니다.
이 옵션을 사용할 필요가있는 것은, ndb_restore 의 첫 번째 실행의 경우뿐입니다. 그러면 이후의 노드를 복원 할 때 --rebuild-indexes
를 다시 사용하지 않고 모든 순서 붙은 인덱스가 다시 작성됩니다. 이 옵션은 데이터베이스에 새 행을 삽입하기 전에 사용하십시오. 그렇지 않으면 인덱스를 재 구축하려고 할 때 삽입되는 행이 나중에 고유 제약 조건 위반이 될 수 있습니다.
고유 인덱스의 재구성에서는 Redo 로그 및 로컬 체크 포인트 처리의 디스크 쓰기 대역폭이 사용됩니다. 이 대역폭이 충분하지 않은 경우, Redo 버퍼 오버로드 오류 또는 로그 오버로드 오류가 될 수 있습니다. 그런 경우는 ndb_restore --rebuild-indexes
를 다시 실행할 수 있습니다. 이 작업은 실패가 발생한 상황에서 재개됩니다. 이것은 일시적인 오류가 발생했을 때도 할 수 있습니다. ndb_restore --rebuild-indexes
실행은 무한히 반복 할 수 있습니다. DiskCheckpointSpeed
값을 줄여 Redo 로그에 추가 디스크 대역폭을 제공함으로써 이러한 오류를 그만 할 수 있습니다.
--skip-broken-objects
명령 줄 형식 | --skip-broken-objects |
이 옵션을 지정하면 ndb_restore 가 기본 NDB
백업을 읽을 때 손상된 테이블을 무시하고 나머지 테이블 (손상되지 않은)의 복원을 계속합니다. 현재 --skip-broken-objects
옵션은 BLOB 부품 테이블이 누락 된 경우에만 작동합니다.
--skip-unknown-objects
명령 줄 형식 | --skip-unknown-objects |
이 옵션을 지정하면 ndb_restore 가 기본 NDB
백업을 읽을 때 인식되지 않는 스키마 객체를 무시합니다. 이것은 MySQL Cluster NDB 7.3을 실행하는 클러스터에서 만든 백업을 MySQL Cluster NDB 7.2을 실행하는 클러스터로 복원하는 데 사용할 수 있습니다.
--rewrite-database =
old_dbname
, new_dbname
명령 줄 형식 | --rewrite-database = olddb, newdb | ||
허용되는 값 | 유형 | string | |
기본 | none |
이 옵션을 지정하면 백업에 사용 된 이름과 다른 이름을 가진 데이터베이스로 복원 할 수 있습니다. 예를 들어, 백업 products
라는 데이터베이스에서 생성 된 경우이 옵션을 다음과 같이 사용하여 (필요한 수있는 다른 옵션을 생략합니다) 포함 된 데이터를 inventory
라는 데이터베이스로 복원 할 수 있습니다.
shell> ndb_restore --rewrite-database=product,inventory
이 옵션은 ndb_restore 의 단일 호출로 여러 번 지정할 수 있습니다. 따라서 --rewrite-database = db1, db2 --rewrite-database = db3, db4
를 사용하여 db1
라는 데이터베이스에서 db2
라는 데이터베이스에 및 db3
라는 데이터베이스에서 db4
라는 데이터베이스에 동시에 복원 할 수 있습니다. 여러 --rewrite-database
발생 부분 사이에 다른 ndb_restore 옵션을 지정할 수 있습니다.
여러 --rewrite-database
옵션에서 충돌이 발생한 경우는 왼쪽에서 오른쪽으로 읽고 마지막에 사용되는 --rewrite-database
옵션이 활성화됩니다. 예를 들어, --rewrite-database = db1, db2 --rewrite-database = db1, db3
가 사용 된 경우 --rewrite-database = db1, db3
만 유효하며 --rewrite-database = db1, db2
은 무시됩니다. 여러 데이터베이스에서 단일 데이터베이스로 복원 할 수 있기 때문에 --rewrite-database = db1, db3 --rewrite-database = db2, db3
를 지정하면 데이터베이스 db1
및 db2
의 모든 테이블 및 데이터가 데이터베이스 db3
에 복원됩니다.
--rewrite-database
를 사용하여 여러 백업 데이터베이스에서 단일 대상 데이터베이스로 리스토어 할 때 테이블 이름 또는 기타 객체 이름 간의 충돌은 확인되지 않고 행이 복원되는 순서는 보장되지 않습니다. 이것은 그런 경우 행을 덮어 업데이트가 손실 될 수 있음을 의미합니다.
--exclude-intermediate-sql-tables [= TRUE | FALSE]
도입 | 5.6.17-ndb-7.3.6 | ||
명령 줄 형식 | --exclude-intermediate-sql-tables [= TRUE | FALSE] | ||
허용되는 값 | 유형 | boolean | |
기본 | TRUE |
ALTER TABLE
의 복사 작업을 수행 할 때 mysqld 는 중간 테이블을 만듭니다 (이름 앞에 # sql-
를 붙일 수 있습니다). TRUE
를 지정하면 --exclude-intermediate-sql-tables
옵션을 사용하면 ndb_restore 가 이러한 작업에 남겨진 가능성이있는 테이블을 복원하지 않습니다. 이 옵션은 기본적으로 TRUE
입니다.
--exclude-intermediate-sql-tables
옵션은 MySQL Cluster NDB 7.3.6에서 도입되었습니다. (Bug # 17882305)
오류보고 ndb_restore 는 임시 및 영구 오류를 모두보고합니다. 일시적 오류의 경우는 그들로부터 복구 할 수 있으며, 그런 경우에는 "Restore successful, but encountered temporary error, please look at configuration"
보고됩니다.
ndb_restore 를 사용하여 순환 복제에 사용하기 위해 MySQL Cluster를 초기화 한 후에 리플리케이션 슬레이브로 동작하는 SQL 노드의 바이너리 로그는 자동으로 생성되지 않기 때문에 그들을 생성하도록 수동으로 조작하는 해야합니다. 바이너리 로그를 작성하려면 START SLAVE
를 실행하기 전에 SQL 노드에서 SHOW TABLES
문을 실행합니다. 이것은 MySQL Cluster의 알려진 문제입니다.