반응형
NoSQL 중 Cassandra 의 스냅샷을 백업과 복구하여 AWS S3로 옮기는 방법을 정리
환경
linux : ubuntu
docker 기반으로 Cassandra 3 버전으로 실행
version: '3.9'
services:
cassandra:
image: cassandra:4.0
ports:
- 7000:7000
- 9042:9042
volumes:
- /data/apps/cassandra:/var/lib/cassandra
environment:
- CASSANDRA_CLUSTER_NAME=cluster-name
- CASSANDRA_USER=user
- CASSANDRA_PASSWORD=password
- CASSANDRA_DC=datacenter1
- CASSANDRA_RACK=rack0
docker-compose 로 위의 yml 파일을 실행
Python Cassandra Cli
컨테이너에 접근
docker exec -it {CONTAINER ID} /bin/bash
Update
apt-get update
Install Library
apt-get -y install python3-pip
pip3 install python-cassandra-cli
Python-cassandra-cli 사용
Backup
백업하기 위해서는 다음 옵션의 값이 필요하다
--aws-access-key-id
xxxxxxxxxxxxxxxxxxxx : aws access key id (Optional)--aws-secret-access-key
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx : aws secret access key (Optional)--environment
dev / prod : 환경 이름을 쓰면됨 예시로 dev 또는 prod 씀 (Required)--cassandra-host
123.123.123.123 : Cassandra Host (Optional)--cassandra-user
user : Cassandra User (Optional)--cassandra-password
'1234' : Cassandra Password (Optional)--keyspace
test : Keyspace 이름 (Required)--snapshot-tag
test-01-keyspace : Snapshot Tag 이름 (Required)--s3-bucket
test-cassandra : aws s3 bucket 이름 (Required)
위의 카산드라 정보는 선택값으로 명시되어 있으나 직접 명시하는 것을 추천하며 AWS 사용 시 보안을 위해 IAM 을 사용 중이라면 S3 FullAccess 권한을 가진 키 값을 사용하는 것을 추천
python-cassandra-cli store-snapshot-table --aws-access-key-id xxxxxxxxxxxxxxxx --aws-secret-access-key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --environment prod --cassandra-host 1.1.1.1 --cassandra-user test --cassandra-password 'password' --keyspace test --table-name test --snapshot-tag test-01-table --s3-bucket test
실행 후 화면에서 다음처럼 나오면 끝
Command is executing ...
Requested creating snapshot(s) for [test] with snapshot name [test-01-table] and options {skipFlush=false}
Snapshot directory: test-01-keyspace
Clearing snapshot 'test-01-keyspace' from system
Requested clearing snapshot(s) for [all keyspaces] with snapshot name [test-01-keyspace]
Folder name: 1659419813_snapshots_test-01-keyspace_test_test_prod
Restore
복구하기 위해서는 다음 옵션의 값이 필요하다
--aws-access-key-id
xxxxxxxxxxxxxxx (Optional)--aws-secret-access-key
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (Optional)--cassandra-host
1.1.1.1 (Required)--cassandra-user
test (Optional)--cassandra-password
'password'--keyspace
test (Optional)--table-name
test (Required)--s3-bucket
test (Required)--snapshot-tag
test-01-table (Required)--snapshot-folder
1659419813_snapshots_test-01-keyspace_test_test_prod (Required)
스냅샷 폴더는 백업 실행 후 마지막에 Folder name:
이후에 나온 것이므로 s3 bucket 에서 복사해오면 된다
python-cassandra-cli restore-snapshot-table --aws-access-key-id xxxxxxxxxxxxxxx --aws-secret-access-key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --cassandra-host 1.1.1.1 --cassandra-user test --cassandra-password 'password' --keyspace test --table-name test --s3-bucket test --snapshot-tag test-01-table --snapshot-folder 1659419813_snapshots_test-01-keyspace_test_test_prod
반응형
'Database > Cassandra' 카테고리의 다른 글
Cassandra SuperUser 삭제 및 생성 (0) | 2022.08.16 |
---|