Search
Duplicate

디스크 사용 최적화

문서번호 : 11-262983

1. 적용 전 정보 추정

1) transaction 로그 생성량

1.
<base-install-dir>/data/logs 하위 파일은 로테이션 로그와 유사합니다.
2.
이 파일들 중 prefix (ex : test_0_log)가 같은 것들의 수정 일시 차이는 곧 해당 사이즈 로그의 생성 주기와 같습니다.

2) 필요 시, 적정 파티션 수 감소도 검토

1.
prefix 가 일치하는 각각은 생성된 데이터베이스의 각 파티션에 해당됩니다. 파티션이 너무 많은 것도 디스크 용량을 낭비하는 것입니다.
2.
SingleStore 는 vCPU 와 일치하는 파티션 개수를 권장하지만, 최초 설정 은 8입니다 . 코어 수를 확인 하여 1/2 또는 더 적은 파티션 수로 설정할 수 있습니다.
3.
파티션 수가 적을수록 성능은 조금 감소될 수도 있지만, CPU IDLE 은 향상됩니다.
4.
파티션 수는 최초 데이터베이스 생성 시 적용되며, 생성 구문에서 부여할 수도 있습니다.
singlestore> create database <database_name> partitions 8;
Bash
복사

2. 적용 절차(예시)

1) snapshot 개수 감소 : 2 → 1

관련 디렉토리 : <base-install-dir>/data/snapshots
재기동 되어야 적용됨
명령어 예시
sdb-admin update-config --key snapshots_to_keep --value 1 --set-global --all
Bash
복사
장애 복구 실패를 방지하기 위해, production에는 snapshot 축소를 권장하지 않습니다.

2) transaction log 사이즈 감소 : 4 분의 1

관련 디렉토리 : <base-install-dir>/data/logs
신규 생성하는 데이터베이스에 적용되며, 이전에 생성된 데이터베이스는 적용되지 않습니다.
각 파티션별로 로그파일은 미리 2개씩 해당사이즈로 생성(확보)되어 있습니다.
미리 생성된 개수는 줄일 수 없으며 최대 snapshot_trigger_size 만큼 생성될 것입니다. (아래 설정일 경우 512/64 = 8개까지)
명령어 예시
1.
일반 파티션 로그 감소 268435456(256M) --> 67108864 (64M)
sdb-admin update-config --key log_file_size_partitions --value 67108864 --set-global --all
Bash
복사
2.
참조 파티션 로그 감소 : 67108864(64M) --> 16777216 (16M)
sdb-admin update-config --key log_file_size_ref_dbs --value 16777216 --set-global --all
Bash
복사
3.
snapshot trigger 사이즈 감소 : 2147483648(2G) --> 536870912 (512M)
sdb-admin update-config --key snapshot_trigger_size --value 536870912 --set-global --all
Bash
복사

3. 이전 데이터베이스에 대한 적용

이전에 생성된 데이터베이스를 old_db 라 가정하여 절차를 설명합니다.

1) 트랜잭션 차단 (필요시)

필요시 old_db 에 대한 트랜잭션 차단 또는 클라이언트 서비스를 중지 합니다.

2) 디스크 공간 확보

백업을 위한 충분한 디스크 공간을 확보하시기 바랍니다. 만약, 디스크 공간이 부족할 경우 해당 데이터베이스의 트랜잭션 로그를 삭제하는 방법도 있습니다.
주의, 트랜잭션 로그를 삭제한 후, 반드시 백업후 복원 절차를 완료해야 합니다.
rm -f <base-install-dir>/data/logs/old_db* # 모든 노드에서 실행
Bash
복사

3) 백업 후 복원

1.
백업 디렉토리 생성
mkdir <base-install-dir> /backup_old_db # 모든 노드에서 실행
Bash
복사
CLI 에서 다음 명령어 수행 (MA 노드에서 실행)
2.
backup old_db
singlestore> backup database old_db to '<base-install-dir>/backup_old_db/';
Bash
복사
3.
old_db partitions 수 확인
singlestore> show partitions on old_db;
Bash
복사
4.
drop old_db
singlestore> drop database old_db
Bash
복사
5.
restore old_db
singlestore> restore database old_db from '<base-install-dir>/backup_old_db/';
Bash
복사

4. 백업 파일 삭제

rm -rf <base-install-dir>/backup_old_db # 모든 노드에서 실행
Bash
복사
일자
작성자
비고
2022.5.19
min