본문으로 바로가기
반응형

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