문서번호 : 11-262551
노드 데이터 디렉토리 (대상 노드가 데이터를 저장하는 root 디렉토리) 를 변경하는 절차입니다.
[주의]
•
대상 노드가 리프일 경우만 [서비스 무중단] 변경이 가능합니다. [서비스 무중단] 이 요구되는 클
러스터라면, 각 절차에서 분기된 [서비스 무중단] 절차를 추가로 수행해야 합니다.
•
[서비스 무중단] 이 필요 없다면, 관련 절차를 생략하여, 보다 빠르게 처리할 수 있습니다.
•
[변경 후 데이터 디렉토리]에 대해 SingleStore DB 를 기동하는 사용자 (기본 : memsql)가 소유자이며, 읽기 /쓰기 /실행 권한을 가져야 합니다.
[정보]
•
노드의 역할(role)에 따른 절차의 차이는 없습니다. (단, 리프의 [서비스 무중단] 절차 제외)
•
복수 노드에 대한 변경은 [2) 노드 중지] ~ [5) 노드 기동 ] 4 개 절차를 반복하면 됩니다.
•
다음 정보로 예를 듭니다.
◦
변경할 노드 ID : 4CFA0BE1C6
◦
memsql.cnf 경로 :
▪
default : /var/lib/memsql/LF1/memsql.cnf
▪
예시 : /home/<user_id>/singlestore/nodes/lf1
◦
변경 전 데이터 디렉토리 경로 : /home/<user_id>/singlestore/nodes/lf1
◦
변경 후 데이터 디렉토리 경로 : /singlestore_data/lf1
※ 절차 요약
1.
memsql.cnf 파일 및 데이터 디렉토리 경로 확인
2.
노드 중지 (복수 노드 가능)
3.
memsql.cnf 파일 편집 (복수 노드 가능)
4.
노드 데이터 디렉토리 이동 (복수 노드 가능)
5.
노드 기동 (복수 노드 가능)
6.
노드 상태 확인
※ 전체 명령어 예시
sdb-admin describe-node --memsql-id 4CFA0BE1C6| egrep "memsqlConfig|datadir"
| memsqlConfig | /home/<user_id>/singlestore/nodes/lf1/memsql.cnf |
| datadir | /home/<user_id>/singlestore/nodes/lf1/data |
sdb-admin remove-leaf --memsql-id 4CFA0BE1C6 # LF 노드
sdb-admin remove-aggregator --memsql-id <aggregator_id> # aggregator
sdb-admin stop-node --memsql-id 4CFA0BE1C6
vi /home/<user_id>singlestore/nodes/lf1/memsql.cnf
(변경 전) datadir = data
(변경 후) datadir = /singlestore_data/lf1
mkdir -p /singlestore_data/lf1
chown -R <user_id>:<user_id> /singlestore_data/LF1/
mv /home/<user_id>/singlestore/nodes/lf1/data /singlestore_data/LF1/
sdb-admin start-node --memsql-id 4CFA0BE1C6
sdb-admin add-leaf --memsql-id 4CFA0BE1C6 --password <db_root_pw>
singlestore -p<db_root_pw>
singlestore> REBALANCE ALL DATABASES;
singlestore> EXPLAIN REBALANCE ALL DATABASES;
Bash
복사
1. memsql.cnf 파일 및 데이터 디렉토리 경로 확인
대상 노드의 memsql.cnf 파일 경로 및 데이터 디렉토리를 확인합니다.
•
명령어 : sdb-admin describe-node --memsql-id <memsql-id> | egrep “memsqlConfig|datadir”
•
예시
sdb-admin describe-node --memsql-id 4CFA0BE1C6| egrep "memsqlConfig|datadir"
| memsqlConfig | /home/<user_id>/singlestore/nodes/lf1/memsql.cnf |
| datadir | /home/<user_id>/singlestore/nodes/lf1/data |
Bash
복사
2. 노드 중지
리프 노드는 노드 역할 제거를 선행할 경우 [서비스 무중단] 이 가능합니다.
1) 노드 역할 제거 (서비스 무중단)
•
명령어 : sdb-admin remove-leaf --memsql-id <memsql-id>
•
예시
sdb-admin remove-leaf --memsql-id 4CFA0BE1C6
...
✓ Successfully ran 'memsqlctl remove-leaf'
Operation completed successfully
Bash
복사
2) 노드 중지
•
명령어 : sdb-admin stop-node --memsql-id <memsql-id>
•
예시
sdb-admin stop-node --memsql-id 4CFA0BE1C6
...
✓ Stopped Unknown nodes on 192.168.56.108 (1/1)
✓ Successfully stopped Unknown nodes on 1 host
✓ Stopped Unknown node
✓ Stopped node on 192.168.56.108
Operation completed successfully
Bash
복사
3. memsql.cnf 파일 편집
[정보]
•
본 절차는 완전한 디렉토리 이동을 예로 들었으며, 디렉토리 이동 후 이전 경로에 파일 링크
를 생성한다면 , 본 절차를 생략할 수 있습니다.
•
하지만, 설정 확인을 통해 데이터 디렉토리 경로를 정확히 알 수 있도록 링크 생성 보다는 실
제 경로로 설정을 변경하는 것을 권장합니다.
※ memsql.cnf 파일 에서 해당 노드의 데이터 디렉토리 경로인 datadir 을 변경합니다.
•
예시
vi /home/<user_id>singlestore/nodes/lf1/memsql.cnf
(변경 전) datadir = data
(변경 후) datadir = /singlestore_data/lf1
Bash
복사
4. 노드 데이터 디렉토리 이동
[주의]
•
[변경 후 데이터 디렉토리] 에 대해 SingleStore DB 를 기동하는 사용자 (기본 : memsql)가 소유
자이며, 읽기 /쓰기 /실행 권한을 가져야 합니다.
1) 디렉토리 생성 (선택)
•
명령어 : mkdir -p <변경 후 데이터 디렉토리 경로 root>
•
예시
mkdir -p /singlestore_data/LF1/
Bash
복사
2) 디렉토리 소유자 변경 (디렉토리 생성시 필수)
•
명령어 : chown -R <user_id>:<user_id> <변경 후 데이터 디렉토리 경로 root>
•
예시
chown -R <user_id>:<user_id> /singlestore_data/LF1/
Bash
복사
3) 데이터 디렉토리 이동
•
명령어 : mv <변경 전 데이터 디렉토리 경로> <변경 후 데이터 디렉토리 경로 root>
•
예시
mv /home/<user_id>/singlestore/nodes/lf1/data /singlestore_data/LF1/
Bash
복사
[정보]
•
본 절차는 완전한 디렉토리 이동을 예로 들었으며, 디렉토리 이동 후 이전 경로에 파일 링크
를 생성한다면 , 본 절차를 생략할 수 있습니다.
(명령어 참고 : ln -s /singlestore_data/lf1/data /home/<user_id>singlestore/nodes/lf1/data)
•
하지만, 설정 확인을 통해 데이터 디렉토리 경로를 정확히 알 수 있도록 링크 생성 보다는 실
제 경로로 설정을 변경하는 것을 권장합니다.
5. 노드 기동
1) 노드 기동
•
명령어 : sdb-admin start-node --memsql-id <memsql-id>
•
예시
sdb-admin start-node --memsql-id 4CFA0BE1C6
...
✓ Started nodes on 192.168.56.108 (1/1)
✓ Successfully started nodes on 1 host
✓ Successfully connected to node
Operation completed successfully
Bash
복사
2) 노드 역할 부여 및 재조정 (서비스 무중단)
이전 절차에서 [서비스 무중단] 절차를 수행했다면, 반드시 본 절차를 진행해야 합니다.
1.
노드 역할 부여
•
명령어 : sdb-admin add-leaf --memsql-id <memsql-id> --password <db_root_pw>
•
예시
sdb-admin add-leaf --memsql-id 4CFA0BE1C6 --password <db_root_pw>
...
✓ Successfully ran 'memsqlctl add-leaf'
Operation completed successfully
Bash
복사
2.
재조정 (LF 일 경우만)
a.
CLI 접속 : singlestore -p<db_root_password>
b.
rebalance 실행 : REBALANCE ALL DATABASES;
c.
rebalance 확인 : EXPLAIN REBALANCE ALL DATABASES; (목록 없음을 확인)
•
예시
singlestore -p<db_root_pw>
singlestore> REBALANCE ALL DATABASES;
Query OK, 3 rows affected (8.80 sec)
singlestore> EXPLAIN REBALANCE ALL DATABASES;
Empty set (0.01 sec)
Bash
복사
6. 노드 상태 확인 (선택)
노드의 변경 정보와 상태를 확인합니다.
•
명령어 : sdb-admin describe-node --memsql-id <memsql-id>
•
예시
sdb-admin describe-node --memsql-id 4CFA0BE1C6
...
| datadir | /singlestore_data/lf1/data |
...
| recoveryState | Online |
Bash
복사
일자 | 작성자 | 비고 |
2022.5.19 | min | |