• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 1. MySQL Cluster 개요
    2. MySQL Cluster 설치
    3. MySQL Cluster 설정
    4. MySQL Cluster 프로그램
    1. ndbd - MySQL Cluster 데이터 노드 데몬
    2. ndbinfo_select_all - ndbinfo 테이블에서 선택
    3. ndbmtd - MySQL Cluster 데이터 노드 데몬 (멀티 스레드)
    4. ndb_mgmd - MySQL Cluster 관리 서버 데몬
    5. ndb_mgm - MySQL Cluster 관리 클라이언트
    6. ndb_blob_tool - MySQL Cluster 테이블의 BLOB 및 TEXT 컬럼의 체크 및 복구
    7. ndb_config - MySQL Cluster 구성 정보의 추출
    8. ndb_cpcd - NDB 개발을위한 테스트 자동화
    9. ndb_delete_all - NDB 테이블에서 모든 행 삭제
    10. ndb_desc - NDB 테이블 표시
    11. ndb_drop_index - NDB 테이블에서 인덱스 삭제
    12. ndb_drop_table - NDB 테이블 삭제
    13. ndb_error_reporter - NDB 오류보고 유틸리티
    14. ndb_index_stat - NDB 인덱스 통계 유틸리티
    15. ndb_print_backup_file - NDB 백업 파일의 내용을 출력
    16. ndb_print_file - NDB 디스크 데이터 파일 내용 출력
    17. ndb_print_schema_file - NDB 스키마 파일 내용 출력
    18. ndb_print_sys_file - NDB 시스템 파일 내용 출력
    19. ndbd_redo_log_reader - 클러스터 Redo 로그 내용의 확인 및 출력
    20. ndb_restore - MySQL Cluster 백업 복원
    21. ndb_select_all - NDB 테이블의 행의 출력
    22. ndb_select_count - NDB 테이블의 행수 출력
    23. ndb_setup.py - MySQL Cluster의 브라우저 기반 자동 설치 프로그램 시작
    24. ndb_show_tables - NDB 테이블 목록보기
    25. ndb_size.pl - NDBCLUSTER 크기 요구 사항 추정기
    26. ndb_waiter - MySQL Cluster가 지정한 상태가 될 때까지 대기
    27. MySQL Cluster 프로그램에 공통 옵션 - MySQL Cluster 프로그램에 공통 옵션
    5. MySQL Cluster 관리
    6. MySQL Cluster Replication
    7. MySQL Cluster Release Notes
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

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 프로그램의 명령 행 옵션에 대해 설명하고 있습니다

형식 설명 추가 또는 삭제

--connect ,

-c

--connectstring의 별칭.

모든 MySQL 5.6 기반 자료

--nodeid=# #

-n

이 ID의 노드에서 파일을 백업합니다

모든 MySQL 5.6 기반 자료

--backupid=# #

-b

지정된 ID의 백업에서 복원합니다

모든 MySQL 5.6 기반 자료

--restore_data ,

-r

NDB API를 사용하여 테이블 데이터 및 로그를 NDB Cluster에 복원합니다

모든 MySQL 5.6 기반 자료

--restore_meta ,

-m

NDB API를 사용하여 메타 데이터를 NDB Cluster에 복원합니다

모든 MySQL 5.6 기반 자료

--no-upgrade ,

-u

VAR 데이터가 아직 크기 변경되지 않은 가변 크기 속성의 배열 유형을 업그레이드하지 않고 컬럼 속성을 변경하지 않습니다

모든 MySQL 5.6 기반 자료

--promote-attributes ,

-A

백업에서 데이터를 복원 할 때 속성 승격을 허용합니다

모든 MySQL 5.6 기반 자료

--preserve-trailing-spaces ,

-P

고정 폭 문자열을 가변 폭 형에 올릴 때 후행 공백 (패딩 포함)을 유지하는 것을 허용합니다

모든 MySQL 5.6 기반 자료

--no-restore-disk-objects ,

-d

디스크 데이터 관련 개체를 복원하지 않습니다

모든 MySQL 5.6 기반 자료

--restore_epoch ,

-e

신기원 정보를 상태 테이블로 복원합니다. MySQL Cluster 리플리케이션 슬레이브에서 복제를 시작하는 경우에 유용합니다. mysql.ndb_apply_status의 ID 0 행이 갱신 / 삽입됩니다.

모든 MySQL 5.6 기반 자료

--skip-table-check ,

-s

데이터 복원 중에 테이블 구조 검사를 생략합니다

모든 MySQL 5.6 기반 자료

--parallelism=# #

-p

데이터 복원시 사용하는 병렬 트랜잭션 수

모든 MySQL 5.6 기반 자료

--print

메타 데이터, 데이터 및 로그를 stdout에 출력합니다 (--print_meta --print_data --print_log와 동일합니다)

모든 MySQL 5.6 기반 자료

--print_meta

메타 데이터를 stdout에 출력합니다

모든 MySQL 5.6 기반 자료

--print_data

데이터를 stdout에 출력합니다

모든 MySQL 5.6 기반 자료

--print_log

stdout에 출력합니다

모든 MySQL 5.6 기반 자료

--backup_path = path

백업 파일 디렉토리 경로

모든 MySQL 5.6 기반 자료

--dont_ignore_systab_0 ,

-f

복원 중에 시스템 테이블을 무시하지 않습니다. 실험용이며 실전에서 사용하기위한 것이 아닙니다

모든 MySQL 5.6 기반 자료

--ndb-nodegroup-map=map ,

-z

NDBCLUSTER 스토리지 엔진을위한 노드 그룹지도. 구문 : (source_nodegroup, destination_nodegroup) 목록

모든 MySQL 5.6 기반 자료

--fields-enclosed-by = char

필드가 지정된 문자로 둘러싸여 있습니다

모든 MySQL 5.6 기반 자료

--fields-terminated-by = char

필드가 지정된 문자로 끝납니다

모든 MySQL 5.6 기반 자료

--fields-optionally-enclosed-by

필드는 필요에 따라 지정된 문자로 둘러싸여 있습니다

모든 MySQL 5.6 기반 자료

--lines-terminated-by = char

지정된 문자 행이 종료합니다

모든 MySQL 5.6 기반 자료

--hex

바이너리 형식을 16 진수 형식으로 출력합니다

모든 MySQL 5.6 기반 자료

--tab=path ,

-T

지정된 경로에있는 각 테이블의 탭으로 구분 된 .txt 파일을 만듭니다

모든 MySQL 5.6 기반 자료

--append

탭으로 구분 된 파일에 데이터를 추가합니다

모든 MySQL 5.6 기반 자료

--progress-frequency = #

지정된 초 간격으로 복원 상태를 출력합니다

모든 MySQL 5.6 기반 자료

--no-binlog

mysqld가 연결되어 있고, 바이너리 로깅을 사용하는 경우 복원 된 데이터를 기록하지 않습니다

모든 MySQL 5.6 기반 자료

--verbose = #

출력 중복 수준

모든 MySQL 5.6 기반 자료

--include-databases = db-list

하나 이상의 복원 할 데이터베이스의 목록 (지정되지 않은 것을 제외합니다)

모든 MySQL 5.6 기반 자료

--exclude-databases = db-list

하나 이상의 제외 데이터베이스 목록 (지정되지 않은 것을 포함합니다)

모든 MySQL 5.6 기반 자료

--include-tables = table-list

복원 할 하나 이상의 테이블 목록 (동일한 데이터베이스의 지정된 않은 것을 제외합니다). 각 테이블 참조는 데이터베이스 이름이 포함되어 있어야합니다

모든 MySQL 5.6 기반 자료

--exclude-tables = table-list

제외 하나 이상의 테이블 목록 (같은 데이터베이스 지정되지 않은 것을 포함합니다). 각 테이블 참조는 데이터베이스 이름이 포함되어 있어야합니다

모든 MySQL 5.6 기반 자료

--exclude-missing-columns

백업 버전의 테이블에서 데이터베이스의 버전 테이블에없는 열이 무시됩니다.

모든 MySQL 5.6 기반 자료

--exclude-missing-tables

백업에서 데이터베이스에없는 테이블이 무시됩니다.

추가 : NDB 7.3.7

--disable-indexes

백업의 인덱스가 무시됩니다. 데이터 복구에 필요한 시간이 단축 될 수 있습니다.

모든 MySQL 5.6 기반 자료

--rebuild-indexes

백업에서 발견 된 순서화 된 인덱스를 멀티 스레드로 재구성합니다. 사용되는 스레드 수는 BuildIndexThreads 매개 변수를 설정하여 결정됩니다.

모든 MySQL 5.6 기반 자료

--skip-broken-objects

백업 파일에서 누락 된 BLOB 테이블이 무시됩니다.

모든 MySQL 5.6 기반 자료

--skip-unknown-objects

새로운 버전의 MySQL Cluster에서 생성 된 백업을 이전 버전으로 복원 할 때 ndb_restore 의해 인식되지 않는 스키마 개체가 무시됩니다.

모든 MySQL 5.6 기반 자료

--rewrite-database = olddb, newdb

원래의 이름과 다른 이름의 데이터베이스에 복원합니다

모든 MySQL 5.6 기반 자료

--lossy-conversions ,

-L

백업에서 데이터를 복원 할 때 컬럼 값의 비가 역적 변환 (형식 상승 또는 부호 변경)을 허용합니다

모든 MySQL 5.6 기반 자료

--restore-privilege-tables

이전 NDB로 이동 된 MySQL 권한 테이블을 복원합니다.

모든 MySQL 5.6 기반 자료

--exclude-intermediate-sql-tables [= TRUE | FALSE]

TRUE (디폴트)의 경우, ALTER TABLE 복사 작업에 남겨진 중간 테이블 (이름 앞에 '# sql- "가 붙어 있습니다)가 복원되지 않습니다.

추가 : NDB 7.3.6


이 유틸리티의 일반적인 옵션을 보여줍니다.

일반적으로 MySQL Cluster의 백업에서 복원하는 경우 ndb_restore는 --nodeid (약어 : -n ) --backupid (약어 : -b ) 및 --backup_path 옵션이 있어야합니다.

ndb_restore [-c connection_string] -n node_id -b backup_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 의한 속성 승격은 다음과 같이 명시 적으로 활성화해야합니다.

  1. 백업을 복원 할 테이블을 준비합니다. ndb_restore를 사용하여 원본과 다른 정의에 테이블을 다시 만들 수 없습니다. 이것은 테이블을 수동으로 작성하거나 테이블 메타 데이터를 복원 한 후에하고 데이터를 복원하기 전에 승격 컬럼을 ALTER TABLE 을 사용하여 변경해야한다는 것을 의미합니다.

  2. 테이블 데이터를 복원 할 때 --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 로 변환을 수행 할 때 table_name $ST node_id 라는 하나 이상의 스테이징 테이블이 생성되고 사용되는 것을 알 수 있습니다. 이 테이블은 그 필요 없게되므로 일반적으로 리스토어 한 후에 ndb_restore에 의해 삭제됩니다.

--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 backup_id completed」 메시지에서 관리 클라이언트에 의해 나타나는 번호와 같은 번호입니다. ( 섹션 18.5.3.2 "MySQL Cluster 관리 클라이언트를 사용하여 백업 만들기" 를 참조하십시오).

중요

클러스터 백업을 복원 할 때 동일한 백업 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의 알려진 문제입니다.


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved