-- 前提: cqlshインストール済
-- 1. サービス固有の認証情報を生成する
aws iam create-service-specific-credential \
--user-name iamuser \
--service-name cassandra.amazonaws.com
-- 2. DB接続
cd /home/ec2-user/apache-cassandra-3.11.11
./bin/cqlsh cassandra.ap-northeast-1.amazonaws.com 9142 -u "iamuser-at-999999999999" -p "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" --ssl
-- 3. Keyspace の作成
CREATE KEYSPACE IF NOT EXISTS "ks01"
WITH REPLICATION = {'class': 'SingleRegionStrategy'};
SELECT * from system_schema.keyspaces ;
-- 4. テーブルの作成
USE "ks01" ;
CREATE TABLE IF NOT EXISTS "ks01".tab01 (
col1 text,
col2 text,
col3 int,
col4 text,
PRIMARY KEY (col1,col2))
WITH CLUSTERING ORDER BY (col2 ASC) ;
CREATE TABLE IF NOT EXISTS "ks01".tab02 (
col1 text,
col2 text,
col3 int,
col4 text,
PRIMARY KEY (col1,col2))
WITH CUSTOM_PROPERTIES = {
'capacity_mode':{'throughput_mode':'PAY_PER_REQUEST'},
'point_in_time_recovery':{'status':'enabled'}
} AND CLUSTERING ORDER BY("col2" ASC) ;
SELECT * from system_schema.tables WHERE keyspace_name='ks01' ;
SELECT * FROM system_schema.columns WHERE keyspace_name = 'ks01' AND table_name = 'tab01' ;
SELECT * FROM system_schema.columns WHERE keyspace_name = 'ks01' AND table_name = 'tab02' ;
-- 5. 既存テーブルのPITR有効化
ALTER TABLE "ks01".tab01
WITH custom_properties = {'point_in_time_recovery': {'status': 'enabled'}} ;
-- 6. テストデータ追加
USE "ks01" ;
CONSISTENCY LOCAL_QUORUM;
INSERT INTO "ks01".tab01 (col1, col2, col3, col4) VALUES ('000-00','Engineering',10,'200-00') ;
INSERT INTO "ks01".tab02 (col1, col2, col3, col4) VALUES ('000-00','Engineering',10,'200-00') ;
SELECT * FROM "ks01".tab01 ;
SELECT * FROM "ks01".tab02 ;
DELETE FROM "ks01".tab01 WHERE col1='000-00' AND col2='Engineering';
SELECT * FROM "ks01".tab01 ;
DROP TABLE IF EXISTS "ks01".tab02 ;
SELECT * from system_schema.tables WHERE keyspace_name='ks01' ;
-- 7. 特定時点へのテーブルの復元
SELECT custom_properties
FROM system_schema_mcs.tables
WHERE keyspace_name = 'ks01' AND table_name = 'tab01';
RESTORE TABLE ks01.tab11
FROM TABLE ks01.tab01
WITH restore_timestamp = '2021-08-30T09:04:04Z';
SELECT * FROM "ks01".tab11 ;
-- 8. 削除済みテーブルの復元
SELECT custom_properties
FROM system_schema_mcs.tables_history
WHERE keyspace_name = 'ks01' AND table_name = 'tab02';
RESTORE TABLE ks01.tab12
FROM TABLE ks01.tab02;
SELECT * FROM "ks01".tab12 ;
-- 9. クリーンアップ
-- テーブルの削除
DROP TABLE IF EXISTS "ks01".tab01 ;
DROP TABLE IF EXISTS "ks01".tab11 ;
DROP TABLE IF EXISTS "ks01".tab12 ;
SELECT * FROM system_schema.tables WHERE keyspace_name = 'ks01' ;
-- Keyspaceの削除
DROP KEYSPACE IF EXISTS "ks01" ;
SELECT * from system_schema.keyspaces ;
-- サービス固有の認証情報一覧
aws iam list-service-specific-credentials
-- サービス固有の認証情報の削除
aws iam delete-service-specific-credential \
--service-specific-credential-id XXXXXXXXXXXXXXXXXXXXX