문서번호 : 11-297911
보조 클러스터를 구성하는 절차입니다.
[정보]
•
사용자(user), 역할(role), 그룹(group), 권한(grant)과 같은 보안정보는 복제하지 않습니다.
•
다음 정보로 예를 듭니다.
◦
기본 클러스터 사용자 : dr_user@192.168.0.10 / dr_pw
◦
기본 클러스터 노드들 : MA 192.168.0.10 / LF1 192.168.0.11 / LF2 192.168.0.12
◦
보조 클러스터 사용자 : dr_user@192.168.0.20 / dr_pw
◦
보조 클러스터 노드들 : MA 192.168.0.20 / LF1 192.168.0.21 / LF2 192.168.0.22
◦
DB 포트 : 3306 (모두 같음)
◦
대상 데이터베이스 : test
[주의]
•
기본 클러스터와 보조 클러스터의 모든 노드들은 서로 연결이 가능해야 합니다. 클러스터의
노드 보기 (SHOW AGGREGATORS; SHOW LEAVES)를 통해 보여지는 노드의 IP/PORT 와 통신이 가능한지 사전에 확인하십시오.
1. 클러스터 버전 간 복제 호환성 확인
일반적으로 기본(소스) 클러스터의 SingleStore DB 버전이 보조(타겟) 클러스터의 버전보다 이전
인 경우 데이터를 복제할 수 있습니다 . 그러나 다음과 같은 몇 가지 예외가 있습니다.
1.
5.8 이전에서 6.0 이상으로 복제할 수 없습니다. 소스 클러스터를 6.0 이상으로 업그레이드해야
합니다.
2.
6.8 이하에서 7.0 이상으로 복 제할 수 없습니다. 소스 클러스터를 7.0 이상으로 업그레이드해야
합니다. (참고, 7.0 부터 복제 방식이 변경됨)
3.
7.0 ( 또는 7.1) 이상 에서 6.8 이하로 복제할 수 없습니다. 대상 클러스터를 소스 클러스터 버전
이상으로 업그레이드해야 합니다.
2. 클러스터 간 네트워크 연결 확인
기본 클러스터와 보조 클러스터의 모든 노드들은 서로 연결이 가능해야 합니다.
1) 노드의 아이피, 포트 확인
클러스터의 모든 노드의 아이피와 포트를 확인합니다.
•
명령어 : SHOW AGGREGATORS; 와 SHOW LEAVES;
•
예시
singlestore> show aggregators;
+--------------+------+…+
| Host | Port |…|
+--------------+------+…+
| 192.168.0.10 | 3306 |…|
+--------------+------+…+
singlestore> show leaves;
+--------------+------+…+
| Host | Port |…|
+--------------+------+…+
| 192.168.0.11 | 3306 |…|
| 192.168.0.12 | 3306 |…|
+--------------+------+…+
Bash
복사
2) 노드 간 통신 확인
보조 클러스터의 모든 노드에서 기본 클러스터의 모든 노드와 연결이 가능한지 확인합니다.
•
명령어 : telnet <IP> <PORT>
•
예시(연결됨) : Trying 다음 라인의 로그를 확인하십시오.
telnet 192.168.0.11 3306
Trying 192.168.0.11...
Connected to 192.168.1.200.
Escape character is '^]'.
Bash
복사
•
예시(연결 안됨) :
telnet 192.168.0.11 3306
Trying 192.168.0.11...
Bash
복사
3. 복제 설정
데이터베이스의 복제를 위한 설정을 추가하고 확인합니다.
[정보]
•
사용자 생성 및 권한 부여는 최소한의 범위로 설정하는 것을 권장하며, 호스트(host)는 실제
접속되는 정보를 확인하여 설정하십시오.
•
이미 권한이 부여된 사용자 (root 등)일 경우 생략될 수 있습니다.
1) 기본 클러스터의 사용자 생성 및 권한 부여
기본 클러스터에 기본 데이터베이스에 접속 할 사용자를 생성하고 REPLICATION SLAVE 권한을
부여 합니다.
1.
기본 클러스터의 MA 접속
2.
사용자 생성
•
명령어 : CREATE USER '<user_id>'@'<host>' IDENTIFIED BY '<user_password>';
•
예시
singlestore> CREATE USER dr_user@192.168.0.10 IDENTIFIED BY 'dr_pw;
Bash
복사
3.
권한 부여
•
명령어 : GRANT CREATE DATABASE ON * TO '<user_id>'@'<host>';
•
예시
singlestore> GRANT REPLICATION SLAVE ON * TO dr_user@192.168.0.10;
Bash
복사
2) 보조 클러스터의 사용자 생성 및 권한 부여
보조 클러스터에 REPLICATE DATABASE 명령을 실행할 사용자를 생성하고 CREATE DATABASE 권
한을 부여합니다.
1.
보조 클러스터의 MA 접속
2.
사용자 생성
•
명령어 : CREATE USER '<user_id>'@'<host>' IDENTIFIED BY '<user_password>';
•
예시
singlestore> CREATE USER dr_user@192.168.0.20 IDENTIFIED BY 'dr_pw;
Bash
복사
3.
권한 부여
•
명령어 : GRANT CREATE DATABASE ON * TO '<user_id>'@'<host>';
•
예시
singlestore> GRANT CREATE DATABASE ON * TO dr_user@192.168.0.20;
Bash
복사
3) 사용자 권한 부여 (참고)
사용자에 부여된 권한은 다음 명령어로 확인할 수 있습니다.
•
명령어 : SHOW GRANTS FOR '<user_id>'@'<host>';
•
예시
singlestore> SHOW GRANTS FOR dr_user@192.168.0.20;
Bash
복사
4. 데이터베이스 복제 시작
1) 보조 클러스터 MA 접속
•
명령어 : singlestore -p<db_root_password>
•
예시
singlestore -proot_pw
Bash
복사
2) 데이터베이스 복제 시작
•
명령어 : REPLICATE DATABASE db_name [WITH FORCE DIFFERENTIAL] FROM master_user[:'master_password']@master_host[:master_port][/master_db_name];
•
예시
singlestore> replicate database test from dr_user:'dr_pw'@'192.168.0.10':3306/test;
Bash
복사
5. 데이터베이스 복제 상태 확인
1) 방법 1 : SHOW DATABASES EXTENDED
•
명령어 : SHOW DATABASES EXTENDED;
•
예시
singlestore> show databases extended;
+----------+ …중략…
| Database | Commits | Role | State | Position | Details | AsyncSlaves |
SyncSlaves | ConsensusSlaves | CommittedPosition | HardenedPosition | ReplayPosition |
Term | LastPageTerm | Memory (MBs) | Pending IOs | Pending blob fsyncs |
+----------+ …중략…
| test | 0 | async slave | replicating | 0:162 | | 2 | 0
| 0 | 0:161 | 0:162 | 0:161 | 1206001419 | 1206001419 | 0.53 | 0 |
…생략…
Bash
복사
2) 방법 2 : SHOW REPLICATION STATUS
•
명령어 : SHOW REPLICATION STATUS;
•
예시
singlestore> show replication status;
+-------------+ …중략…
| Role | Database | Master_URI | Master_State | Master_CommitLSN | Master_HardenedLSN | Master_ReplayLSN | Master_TailLSN | Master_Commits | Connected | Throttling | Slave_URI | Slave_State | Slave_CommitLSN | Slave_HardenedLSN | Slave_ReplayLSN | Slave_TailLSN | Slave_Commits |
+-------------+ …중략…
| async slave | test | 192.168.0.10:3306/test | online | 0:162 | 0:162 | 0:160 | 0:162 | NULL | yes | no | NULL | replicating | 0:161 | 0:162 | 0:161 | 0:162 | NULL |
| master | test | NULL | replicating | 0:161 | 0:162 | 0:161 | 0:162 | NULL | yes | no | 192.168.0.21:3306/test | replicating | 0:161 | 0:162 | 0:161 | 0:162 | NULL |
| master | test | NULL | replicating | 0:161 | 0:162 | 0:161 | 0:162 | NULL | yes | no | 192.168.0.22:3306/test | replicating | 0:161 | 0:162 | 0:161 | 0:162 | NULL |
Bash
복사
3) 방법 3 : information_schema.DISTRIBUTED_DATABASES 뷰 확인
•
명령어 : SELECT * FROM information_schema.DISTRIBUTED_DATABASES;
•
예시
singlestore> select * from information_schema.distributed_databases;
+-------------+ …중략…
| DATABASE_ID | DATABASE_NAME | NUM_PARTITIONS | CLUSTER_ID | REMOTE_NAME | IS_SYNC | IS_SYNC_DURABILITY | IS_PAUSED | SITE_ID |
+-------------+ …중략…
| 2035 | cluster_14276742266378600454 | 0 | 14276742266378600454 | cluster | 0 | 0 | 0 | 0 | | 2036 | test | 8 | 14276742266378600454 | test | 1 | 0 | 0 | 1 |
…생략…
Bash
복사
4) 방법 4 : SHOW CLUSTER STATUS
•
명령어/예시 : SHOW CLUSTER STATUS;
•
일시 정지(PAUSE)에 대한 상태를 확인할 수는 없습니다.
일자 | 작성자 | 비고 |
2022.5.20 | min | |