본문 바로가기
연구노트

SingleStore 디폴트 Data 디렉토리 변경

by 에이플랫폼 [Team SingleStore Korea] 2023. 10. 26.

■ 개요

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

■ 설치 시 Directory 지정

설치 과정 중에 Data 를 비롯한 다른 Directory 를 변경하려면 sdb-deploy setup-cluster 명령어를 사용합니다.

이 때 두가지 중 하나를 선택하여 설치할 수 있습니다.

 

1. 플래그(Flag) 를 명시해서 SingleStore 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 와 대응됩니다.

 

2. YAML 파일을 사용하여 각 Node 별로 필요한 설정을 다르게 지정

 

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"

■ 설치 후 Directory 변경

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 의 위치를 변경해야 할 필요가 있을 때 설치 도중 지정하는 방법과 설치 후 변경하는 방법 두가지를 살펴 보았습니다.