CH#3. 복제

아직·2024년 3월 15일
0

Galera Cluster

목록 보기
1/5
post-thumbnail

MariaDB replication

1. MariaDB 복제는 1) master의 InnoDB storage engine에 commit된 transaction이 biglog 형태로 생성 2) master의 binlog를 참조해 slave의 relay log를 생성하는 I/O thread 수행 3) realy log의 내용을 slave의 InnoDB storage engine에 commit하는 SQL thread(single) 수행 의 방식으로 동작한다.
2. 복제를 위한 binlog 생성 방식은 statement/row/mixed로 구분할 수 있는데 row/mixed를 추천하고 있다.

Global Transaction Identifier(GTID)

1. MariaDB 10.0 이전의 복제는 binlog와 pos값을 분석해서 수행됐는데 이 부분은 primary dependant하다. domain id-server id-seq no로 구성된 GTID는 매 transaction commit에 부여된다고 하는데, mysql.gtid_slave_pos 테이블을 따로 운영하면서 slave 관점의 pos를 관리하는 방법으로 이해된다.
2.replica state가 relay log에 기록되는 기존 방식에 비해 data change 시점과 state update 시점이 더 가깝고, 고유값이 global하게 관리되기 때문에 복제를 비동기로 수행하더라도 slave가 어느 정도 통제권을 쥘 수 있도록 한다.
3. 우리는 MariaDB가 아닌, write set을 사용하는 Galera cluster에서 GTID를 도입하는 것인데 이는 사실 '트릭'에 가깝다고 한다. wsrep_gtid_domain_id와 gtid_domain_id 설정값 등에 주의하자. MariaDB 10.1.30/10.1.31 차이도 고려해야 한다.
4. MariaDB single-source replication을 수행하는 한 domain(혹은 data stream) id를 크게 신경 쓸 경우는 없다고 한다.

Cluster-cluster replication

1. (Galera node가 rep master일 경우) MariaDB replication은 binlog의 transaction을 참조하는데 Galera cluster의 인증 기반 복제 방식에서 write set은 binlog에 기록되지 않으므로, log_slave_update 설정을 켜준다.
2. (Galera node가 rep slave일 경우) 역시 log_slave_update 설정이 켜져야 하는 이유는 클러스터 내 다른 노드들이 참조할 수 있는 write set을 생성하기 때문이다. 1번과 같이 고려했을 때 cascade한 느낌을 준다.
3. MariaDB single-source replication과는 다르게 wsrep_gtid_domain_id 설정을 통해서 클러스터 내에서는 (노드들이) 같은 값을 갖도록, 클러스터 간에는 다른 같은 갖도록 환경을 조성한다.
4. 우리가 갖고 있는 문제의 경우 간단하게는 A master의 문제 이후, A master와 B master의 update 작업이 같이 이뤄져서라고 할 수 있는데, circular repilication과 increment 설정 변경 등으로 시도해볼 수 있을 것 같다.

참고

https://www.youtube.com/watch?v=iaFbPKhhk_c
https://www.youtube.com/watch?v=jXgQjs0QExk
https://mariadb.com/kb/en/gtid/
https://mariadb.com/kb/en/configuring-mariadb-galera-cluster/#writing-replicated-write-sets-to-the-binary-log
https://mariadb.com/kb/en/using-mariadb-gtids-with-mariadb-galera-cluster/
https://mariadb.com/kb/en/using-mariadb-replication-with-mariadb-galera-cluster-using-mariadb-replica/#setting-server_id-on-cluster-nodes
https://mariadb.com/kb/en/configuring-mariadb-replication-between-two-mariadb-galera-clusters/

0개의 댓글