Loading...
MySQL 9.5 Reference Manual 9.5의 25.7.2 General Requirements for NDB Cluster Replication의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
replication channel에는 replication 서버 역할을 하는 두 개의 MySQL 서버가 필요합니다(각각 source와 replica용으로 하나씩). 예를 들어, 이중화를 위한 추가 channel을 제공하기 위해 두 개의 replication channel을 사용하는 replication 구성에서는 총 네 개의 replication 노드가 필요하며, 각 cluster마다 두 개씩 있어야 합니다.
이 절 및 이후 절에서 설명하는 NDB Cluster의 replication은 row-based replication에 의존합니다. 이는 replication source MySQL 서버가 Section 25.7.6, “Starting NDB Cluster Replication (Single Replication Channel)”에 설명된 대로 --binlog-format=ROW 또는 --binlog-format=MIXED 옵션으로 실행되어야 함을 의미합니다. row-based replication에 대한 일반적인 정보는 Section 19.2.1, “Replication Formats”를 참조하십시오.
주의
--binlog-format=STATEMENT와 함께 NDB Cluster Replication을 사용하려고 시도하면, source cluster의 ndb_binlog_index 테이블과 replica cluster의 ndb_apply_status 테이블의 epoch 컬럼이 업데이트되지 않기 때문에 replication이 올바르게 동작하지 않습니다(자세한 내용은 Section 25.7.4, “NDB Cluster Replication Schema and Tables” 참조). 대신, replication source 역할을 하는 MySQL 서버에서 발생한 update만 replica로 전파되고, source cluster의 다른 SQL 노드에서 발생한 update는 전혀 replicate되지 않습니다.
--binlog-format 옵션의 기본값은 MIXED입니다.
각 cluster에서 replication에 사용되는 각 MySQL 서버는, 두 cluster에 참여하는 모든 MySQL replication 서버 사이에서 고유하게 식별될 수 있어야 합니다(source와 replica cluster 양쪽에 있는 replication 서버가 동일한 ID를 공유할 수는 없습니다). 이를 위해 각 SQL 노드를 --server-id=id 옵션으로 시작하면 되며, 여기서 id 는 고유한 정수입니다. 엄밀히 필수는 아니지만, 여기서는 설명의 편의를 위해 모든 NDB Cluster 바이너리가 동일한 릴리스 버전이라고 가정합니다.
MySQL Replication에서는 일반적으로, 관련된 두 MySQL 서버(mysqld 프로세스)가 사용 중인 replication 프로토콜 버전과 지원하는 SQL 기능 집합 양쪽 모두에 대해 서로 호환되어야 합니다(Section 19.5.2, “Replication Compatibility Between MySQL Versions” 참조). NDB Cluster 배포본과 MySQL Server 9.5 배포본 사이의 이러한 바이너리 차이로 인해, NDB Cluster Replication은 두 mysqld 바이너리가 NDB Cluster 배포본에서 제공되어야 한다는 추가 요구 사항을 가집니다. source와 replica의 모든 mysqld 바이너리에 대해 동일한 NDB Cluster 배포본을 사용하는 것이, mysqld 서버 간의 호환성을 보장하는 가장 간단하고 쉬운 방법입니다.
replica 서버 또는 cluster는 source cluster의 replication 전용이며, 그 외의 어떤 데이터도 저장하지 않는다고 가정합니다.
replication되는 모든 NDB 테이블은 MySQL 서버와 클라이언트를 사용하여 생성되어야 합니다. NDB API(예를 들어 Dictionary::createTable())를 사용하여 생성된 테이블 및 기타 데이터베이스 객체는 MySQL 서버에서 보이지 않으므로 replicate되지 않습니다. 다만, MySQL 서버를 사용하여 생성된 기존 테이블에 대해 NDB API 애플리케이션이 수행하는 update는 replicate될 수 있습니다.
참고
statement-based replication을 사용하여 NDB Cluster를 replicate하는 것도 가능합니다. 그러나 이 경우 다음과 같은 제약이 적용됩니다:
source 역할을 하는 cluster에서 데이터 row에 대한 모든 update는 단일 MySQL 서버로만 전달되어야 합니다.
여러 개의 MySQL replication 프로세스를 동시에 사용하여 하나의 cluster를 replicate하는 것은 불가능합니다.
SQL 레벨에서 이루어진 변경 사항만 replicate됩니다.
이들 제약은 row-based replication과 비교했을 때 statement-based replication에 본래 존재하는 다른 제한 사항에 추가되는 것입니다. 두 replication format 간의 차이에 대한 보다 구체적인 정보는 Section 19.2.1.1, “Advantages and Disadvantages of Statement-Based and Row-Based Replication”을 참조하십시오.
25.7.1 NDB Cluster Replication: Abbreviations and Symbols
25.7.3 Known Issues in NDB Cluster Replication