SingleStore 를 cluster-in-a-box 형태로 설치하면 디폴트로 /var/lib/memsql 아래에 데이터 및 설정 파일이 위치하게 됩니다. 이 경우 O/S 의 Root 디렉토리가 사용하는 디스크 파티션을 함께 사용하기 때문에 용량 문제가 발생할 수 있습니다. 이번 포스트에서는 설치할 때 Data Directory 를 지정하는 방법과 이미 설치하고 난 뒤에 Data Directory 를 변경하는 방법을 알아보겠습니다.
이 포스트는 다음 글을 참조했습니다.
https://support.singlestore.com/hc/en-us/articles/360057955312-Change-default-data-directory-path
설치 과정 중에 Data 를 비롯한 다른 Directory 를 변경하려면 sdb-deploy setup-cluster 명령어를 사용합니다.
이 때 두가지 중 하나를 선택하여 설치할 수 있습니다.
sdb-deploy setup-cluster \
--base-install-dir /base_dir --data-dir /data_dir \
--master-host 10.0.0.182 \
--leaf-hosts 10.0.0.165 \
--password 1234 \
--high-availability=false \
--license <LICENSE KEY>
2개의 host에 --base-install-dir 및 --data-dir 플래그를 각각 지정했습니다.
Master Aggregator 및 Leaf 모두 동일한 Directory Layout 을 갖고 있으므로 Leaf 노드 하나만 체크하여 중요 정보만 편집하여 보면 다음과 같습니다.
$ sdb-admin describe-node --memsql-id E324982F8E
+--------------------+-------------------------------------------------------+
| memsqlId | E324982F8EE2096672CE86104F2A4D308EFEB1D8 |
| host | 10.0.0.165 |
| role | Leaf |
| port | 3306 |
| memsqlConfig | /base_dir/memsql.cnf |
| datadir | /data_dir |
| plancachedir | /base_dir/plancache |
| tracelogsdir | /base_dir/tracelogs |
| auditlogsdir | /base_dir/auditlogs |
| memsqld | /opt/singlestoredb-server-7.8.15-4c5fbd0f27/memsqld |
+--------------------+-------------------------------------------------------+
base-install-dir 은 /base_dir 로 디폴트로 설치했을 때 /var/lib/memsql 과 대응됩니다.
data-dir 은 /data_dir 로 디폴트로 설치했을 때 /var/lib/memsql/data 와 대응됩니다.
sdb-deploy setup-cluster --cluster-file setup.yaml
명령어 플래그 값으로 디렉토리등 설정 항목을 지정하는 대신 YAML 형식의 파일로 SingleStore Cluster 구성을 정의하고 Install 하는 방식입니다. 특히 하나의 장비에 Port 를 달리해 여러 노드를 설치할 때 노드별로 설정을 상이하게 구성하고 싶다면 반드시 사용해야 하는 설치 방법입니다.
위에서 명령어로 설치할 때와 동일한 설정의 YAML 파일의 내용은 다음과 같습니다.
license: <LICENSE KEY>
memsql_server_version: 7.8.15
root_password: 1234
hosts:
- hostname: 10.0.0.165
ssh:
host: 10.0.0.165
nodes:
- role: Leaf
availability_group: 1
config:
auditlogsdir: /base_dir/auditlogs
configpath: /base_dir/memsql.cnf
datadir: /data_dir
plancachedir: /base_dir/plancache
port: 3306
tracelogsdir: /base_dir/tracelogs
bind_address: 0.0.0.0
ssl_fips_mode: "OFF"
- hostname: 10.0.0.182
ssh:
host: 10.0.0.182
nodes:
- role: Master
config:
auditlogsdir: /base_dir/auditlogs
configpath: /base_dir/memsql.cnf
datadir: /data_dir
plancachedir: /base_dir/plancache
port: 3306
tracelogsdir: /base_dir/tracelogs
bind_address: 0.0.0.0
ssl_fips_mode: "OFF"
Leaf 노드에서 현재 설정된 Data Directory 인 /data_dir 를 /leaf_data_dir 로 변경해 보겠습니다.
만일 High Availability 가 설정되어 있다면 하나의 노드만 Stop 시킨 후 작업할 수 있습니다. HA 가 설정되지 않았다면 모든 노드를 Stop 시킨 후 작업할 것을 권장합니다.
sdb-admin stop-node --all -y
sdb-admin stop-node --memsql-id <LEAF MEMSQL ID> -y #High Availability 설정인 경우
Leaf 노드에서 sudo cp -R -p <source_data_directory> <new_data_directory_path> 명령어로 Data Directory 를 복사합니다.
[Leaf Node] $ sudo cp -R -p /data_dir /leaf_data_dir
Master Aggregator 에서 다음을 진행합니다.
sdb-admin update-config 명령어로 Leaf 노드의 memsql.cnf 에 변경내용을 반영한 후 describe-node 명령어로 확인합니다. 정상적으로 변경되었다면 모든 노드를 Start 시킵니다.
sdb-admin update-config --key datadir --value /leaf_data_dir --memsql-id <LEAF MEMSQL ID> -y
sdb-admin describe-node --memsql-id <LEAF MEMSQL ID>
sdb-admin start-node --all -y
pid_file, secure_file_priv 등 기존의 Data Directory 를 참조하는 변수들이 아직 남아 있습니다.
sdb-admin update-config 명령어를 통해 같은 방법으로 변경하면 됩니다.
이번 포스트에서는 SingleStore 를 사용할 때 가장 많은 용량을 차지하는 Data Directory 의 위치를 변경해야 할 필요가 있을 때 설치 도중 지정하는 방법과 설치 후 변경하는 방법 두가지를 살펴 보았습니다.