갈레라 클러스터 WSREP GTID



갈레라 클러스터 WSREP GTID

 

갈레라 클러스터는 마리아DB의 리플리케이션과는 상당히 다른, 인증기반의 리플리케이션 방식을 가지고 있습니다. 갈레라의 GTID가 각각의 노드에 대해서만 일관성을 가지지 않고 전체 노드에 유니크한 값을 가진 쓰기셋으로 갈레라 클러스터에 연동된다면 충분히 갈레라 GTID 사용의 이점이 있겠지만, 현재는 그렇지 않습니다. 갈레라 클러스터는 MariaDB의 오리지널 GTID를 지원하지 않고, 슬레이브 SQL 스레드 단에서 트랜잭션을 할 경우에만 일관성을 유지합니다. 각각의 노드가 가진 GTID 정보가 다른 노드로 전송되지 않습니다.

MariaDB 10.1 이상에는 wsrep GTID 모드라는 기능이 있습니다. 이 모드가 활성화되면 MariaDB는 몇 가지 트릭을 사용하여 모든 갈레라 클러스터 노드에 각 노드의 쓰기 세트와 일치하는 유니크한 GTID 값을 연동하려고 합니다. 이러한 트릭은 경우에 따라 작동하지만 GTID는 여전히 클러스터 노드간에 데이터 정합성에 있어 완벽한 동기화를 보장하지는 않습니다.

  • wsrep_gtid_mode: 클러스터의 모든 노드에서 wsrep_gtid_mode = ON을 설정해야합니다.
  • wsrep_gtid_domain_id: Galera Cluster의 쓰기 세트에 GTID를 할당 할 때 각 클러스터 노드가 동일한 도메인을 사용하도록 특정 클러스터의 모든 노드에서 동일한 값으로 설정해야합니다. 두 클러스터간에 복제 할 때 각 클러스터는이 값을 다른 값으로 설정해야하므로 쓰기 세트에 GTID를 지정할 때 각 클러스터가 다른 도메인을 사용합니다.
  • log_slave_updates: 클러스터의 모든 노드에서 활성화해야합니다. 이에 대해서는 MDEV-9855를 참조하십시오.
  • log_bin: 클러스터의 모든 노드에서 동일한 경로로 설정해야합니다. 이에 대해서는 MDEV-9856을 참조하십시오.

그리고 추가적인 안전 조치로 :

gtid_domain_id는 지정된 클러스터의 모든 노드에서 서로 다른 값으로 설정되어야하며 이러한 각 값은 구성된 wsrep_gtid_domain_id 값과 달라야합니다. 이는 wsrep_sst_method = RSU 세트로 실행 된 DDL, 또는 wsrep_on = OFF 세트로 실행 된 DML과 같이, 비갈레라 트랜잭션에 GTID를 할당 할 때 노드가 Galera Cluster의 쓰기 세트에 사용 된 동일한 도메인을 사용하지 못하도록합니다.
server_id 설정에 대한 자세한 내용은 MariaDB Galera Cluster에서 MariaDB 리프리케이션을 사용할때 클러스터 노드의 server_id 설정을 참조하시기 바랍니다.

Wsrep GTID 모드의 알려진 문제점

Wsrep GTID 모드는 MariaDB의 GTID가 MariaDB Galera Cluster와 완벽하게 작동하도록 하는 완벽한 방식이 아닙니다. 클러스터 노드에서 GTID가 일치하지 않는 경우가 있습니다.

알려진 문제는 다음과 같습니다.

내재적으로 삭제 된 임시 테이블은 GTID가 일치하지 않을 수 있습니다. 이에 대해서는 MDEV-14153을 참조하시기 바랍니다. MDEV-14153은 알려진 문제점의 목록입니다. 이 문제점들은 wsrep GTID 모드가 다른 모든 상황에서 완벽하게 작동하지 않는다는 것을 의미합니다. 다른 문제가 발견되면 MariaDB 측에 버그를 보고해 주시기 바랍니다.

 

MariaDB 10.4.6 버전이 업데이트 되면서 Galera 4버전이 적용되었습니다.

  • Streaming replication: 트랜잭션이 계속 진행되는 동안 노드가 트랜잭션을 조각으로 나누고 모든 보조 노드에서 복제하고 인증하기 때문에 대규모 트랜잭션 지원이 크게 향상되었습니다. 스트리밍 복제에 대한 전용 설명서와 스트리밍 복제 사용에 대한 가이드를 참조하십시오 (예, 먼저 활성화해야 함).
  • Galera system tables: mysql 데이터베이스에 wsrep_cluster, wsrep_cluster_members 및 wsrep_streaming_log의 세 가지 새로운 테이블이 추가되었습니다. 데이터베이스 관리자는 클러스터 활동을 볼 수 있습니다. 스트리밍 복제를 설정하지 않으면 wsrep_streaming_log에 아무것도 표시되지 않습니다.
  • Synchronisation functions: 이 SQL 함수들은 다음 트랜잭션을 사용하기전에 마지막 쓰기 또는 마지막 트랜잭션을 기반으로 GTID를 가져와서 다음 트랜잭션을 실행하기 전에 특정 GTID가 복제 및 적용될 때까지 기다리도록 합니다.


You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *