문서번호 : 11-537587
유의 사항
클러스터에 미치는 영향 검토하기
공통사항
•
HA가 활성화 된 클러스터의 경우 2개 가용그룹의 균형을 고려하시기 바랍니다.
Scale-out
•
기존 노드의 partition을 새로운 노드로 재분배하는 rebalance가 발생합니다.
•
파티션 재조정(rebalance)으로 인한 일시적인 네트웍 트레픽과 디스크 I/O가 증가하며, 시스템에 따라 성능의 변화가 발생할 수 있습니다.
•
reblance 과정 중 업무 중단은 없으며, rebalance 종료시점에 약 1초의 Lock 발생이 발생합니다.
•
rebalance시 CPU 부하는 거의 없지만(5%이내), 노드간 네트웍 트래픽이 증가합니다. 스키마(데이터베이스) 단위로 작업을 할 수 있으므로 작업을 분산할 수 있습니다.
Scale-in
•
Scale-out 과 같이 rebalance가 묵시적으로 발생하며, 삭제 대상 노드의 partition을 나머지 노드로 옮기며, 동일하게 lock time은 약 1초입니다.
•
클러스터 전체의 저장소와 처리 능력이 삭제되는 노드만큼 축소되기에, 기존 노드의 저장소와 CPU / Network 등 resource의 여유를 사전 점검해야 한다.
•
물리적 용량뿐 만 아니라, 엔진에 설정된 maximum_memory, maximum_table_memory 변수의 설정도 확인하시기 바랍니다.
Scale-in
1. 제거 대상 노드의 MEMSQL ID 확인
제거할 노드의 MEMSQL ID를 확인합니다. (아래는 예시입니다.)
$ sdb-admin list-nodes
+------------+------------+---------------+------+---------------+--------------+---------+----------------+--------------------+--------------+
| MemSQL ID | Role | Host | Port | Process State | Connectable? | Version | Recovery State | Availability Group | Bind Address |
+------------+------------+---------------+------+---------------+--------------+---------+----------------+--------------------+--------------+
| 2E42499AE3 | Master | 10.41.227.222 | 3306 | Running | True | 7.8.2 | Online | | 0.0.0.0 |
| 3B1746D521 | Aggregator | 10.41.38.230 | 3306 | Running | True | 7.8.2 | Online | | 0.0.0.0 |
| E726A01B66 | Leaf | 10.41.153.177 | 3306 | Running | True | 7.8.2 | Online | 1 | 0.0.0.0 |
| A96032D8E5 | Leaf | 10.41.30.194 | 3306 | Running | True | 7.8.2 | Online | 1 | 0.0.0.0 |
| 042473BB83 | Leaf | 10.41.33.105 | 3306 | Running | True | 7.8.2 | Online | 1 | 0.0.0.0 |
| 72E348C418 | Leaf | 10.41.34.134 | 3306 | Running | True | 7.8.2 | Online | 1 | 0.0.0.0 |
+------------+------------+---------------+------+---------------+--------------+---------+----------------+--------------------+--------------+
SQL
복사
2. 노드 제거
제거할 노드의 <MemSQL ID> 를 인자로 (10 자리 이상) 복사하여 넣어 줍니다. 다음은 2개 노드를 제거하는 예시입니다.
$ sdb-admin delete-node --memsql-id 042473BB83 --stop -y
$ sdb-admin delete-node --memsql-id 72E348C418 --stop -y
Bash
복사
3. 클러스터 확인하기
$ sdb-admin list-nodes
+------------+------------+---------------+------+---------------+--------------+---------+----------------+--------------------+--------------+
| MemSQL ID | Role | Host | Port | Process State | Connectable? | Version | Recovery State | Availability Group | Bind Address |
+------------+------------+---------------+------+---------------+--------------+---------+----------------+--------------------+--------------+
| 2E42499AE3 | Master | 10.41.227.222 | 3306 | Running | True | 7.8.2 | Online | | 0.0.0.0 |
| 3B1746D521 | Aggregator | 10.41.38.230 | 3306 | Running | True | 7.8.2 | Online | | 0.0.0.0 |
| E726A01B66 | Leaf | 10.41.153.177 | 3306 | Running | True | 7.8.2 | Online | 1 | 0.0.0.0 |
| A96032D8E5 | Leaf | 10.41.30.194 | 3306 | Running | True | 7.8.2 | Online | 1 | 0.0.0.0 |
+------------+------------+---------------+------+---------------+--------------+---------+----------------+--------------------+--------------+
SQL
복사
3. 클러스터의 호스트 목록 제거 및 확인 (필요시)
노드가 탑재된 호스트에 더 이상 운영되는 노드가 없을 경우 다음 절차를 수행합니다.
•
호스트 제거
$ sdb-toolbox-config uregister-host 10.41.33.105 --yes
$ sdb-toolbox-config uregister-host 10.41.34.134 --yes
SQL
복사
•
호스트 목록 확인
$ sdb-toolbox-config list-hosts
+---------------+------------+---------------+---------------+
| Host | Local Host | SSH address | Identity File |
+---------------+------------+---------------+---------------+
| 10.41.227.211 | Yes | | |
| 10.41.155.54 | No | 10.41.155.54 | |
| 10.41.223.33 | No | 10.41.223.33 | |
| 10.41.226.182 | No | 10.41.226.182 | |
+---------------+------------+---------------+---------------+
SQL
복사
Scale-out
아래 절차는 노드를 하나씩 [노드생성] → [역할 부여] 순으로 반복하여 추가하는 예시입니다.
1. 노드 생성
•
availability-group <1 or 2> : HA 가 활성화 된 경우 추가할 가용그룹 1 또는 2 선택
$ sdb-admin create-node --host <NEW_LF1_IP> --port <NEW_LF1_PORT> --password <dbpw> --availability-group <1 or 2> --base-install-dir ~/memsql/nodes/NEW_LF1 -y
… 출력 생략 …
Bash
복사
2. 역할 부여
$ sdb-admin add-leaf --memsql-id `sdb-admin list-nodes -q -r unknown` --password <dbpw> -y
Bash
복사
<문제 해결>
만약, 이미 여러 노드를 생성한 경우라면, 해당 노드의 <MemSQL ID> 를 인자로 (10 자리 이상) 복사하여 넣어 줍니다.
$ sdb-admin add-leaf --memsql-id <MEMSQL_ID> --password <dbpw> ...기타 옵션 중략... -y
Bash
복사
3. 추가할 노드가 더 있을 경우 1. ~ 2. 를 반복
4. 파티션 재조정(rebalance)
클러스터에 부하 발생과 partition의 반복 이동을 피하기 위해, 모든 노드를 추가한 후 마지막에 수행하는 것을 권장합니다
1.
클러스터 접속
$ singlestore -uroot -p<dbpw>
Bash
복사
2.
rebalance 작업 평가해 보기 (선택사항)
•
특정 데이터베이스에 대해 실행
singlestore> explain rebalance partitions on <db_name>;
SQL
복사
•
모든 데이터베이스에 대해 일괄 실행
singlestore> explain rebalance all databases;
SQL
복사
3.
rebalance 실행
•
특정 데이터베이스에 대해 실행
singlestore> rebalance partitions on <db_name>;
SQL
복사
•
모든 데이터베이스에 대해 일괄 실행
singlestore> rebalance all databases;
SQL
복사
4.
rebalance 상태 확인
•
특정 데이터베이스에 대해 실행
singlestore> show rebalance status on <db_name>;
SQL
복사
•
모든 데이터베이스에 대해 일괄 실행
singlestore> show rebalance all databases status;
SQL
복사
일자 | 작성자 | 비고 |
2022.09.15 | khkum | 최초작성 |
2022.09.19 | jnshin | 유의사항 수정 |