RDSの手動フェイルオーバ

(1) RDS(MySQL)
構成:マルチ AZ+リードレプリカ1個

マルチ AZ 配置をサポートするデータベースエンジンの場合、
DB インスタンスが単一アベイラビリティーゾーンで設定されていてもマルチ AZ で設定されていても、
そのインスタンスを停止して再度起動することができます。
マルチ AZ 設定の Amazon RDS for SQL Server DB インスタンスは停止できません。

リードレプリカが含まれているか、リードレプリカである DB インスタンスは停止できません。


-- プライマリインスタンス作成
aws rds create-db-instance \
--db-instance-identifier mysql01 \
--allocated-storage 20 \
--db-instance-class db.t3.micro \
--engine mysql \
--master-username root \
--master-user-password 'password' \
--multi-az \
--engine-version 8.0.25 \
--storage-type gp2 \
--no-publicly-accessible \
--no-enable-performance-insights \
--no-auto-minor-version-upgrade \
--backup-retention-period 1

-- リードレプリカ作成

aws rds create-db-instance-read-replica \
--db-instance-identifier mysql01-replica01 \
--region ap-northeast-1 \
--source-db-instance-identifier arn:aws:rds:ap-northeast-1:999999999999:db:mysql01


aws rds describe-db-instances

-- 手動フェイルオーバ実行
aws rds reboot-db-instance --db-instance-identifier mysql01 --force-failover


-- エンドポイント確認
mysql -h mysql01.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u root -p
mysql -h mysql01-replica01.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u root -p

 

-- プライマリインスタンス停止/起動
aws rds stop-db-instance --db-instance-identifier mysql01
aws rds start-db-instance --db-instance-identifier mysql01

★リードレプリカがある場合、停止できない


-- プライマリインスタンス再起動
aws rds reboot-db-instance --db-instance-identifier mysql01 --no-force-failover

-- リードレプリカ停止/起動
★リードレプリカは停止できない

-- リードレプリカ再起動
aws rds reboot-db-instance --db-instance-identifier mysql01-replica01 --no-force-failover


-- クリーンアップ

aws rds delete-db-instance \
--db-instance-identifier mysql01-replica01 \
--skip-final-snapshot

aws rds delete-db-instance \
--db-instance-identifier mysql01 \
--skip-final-snapshot


(2) Aurora(MySQL)
構成:ライターインスタンス+リーダーインスタンス

Aurora MySQL バージョン 2.10 以降では、クラスター内のリーダーインスタンスを再起動せずに、
Aurora MySQL クラスターのライターインスタンスを再起動できます。

 

-- クラスタ作成
aws rds create-db-cluster \
--db-cluster-identifier cluster01 \
--engine aurora-mysql \
--engine-version 5.7.mysql_aurora.2.10.0 \
--master-username root \
--master-user-password 'password'

aws rds create-db-instance \
--db-instance-identifier cluster01-instance01 \
--db-cluster-identifier cluster01 \
--db-instance-class db.t3.small \
--engine aurora-mysql \
--no-auto-minor-version-upgrade

aws rds create-db-instance \
--db-instance-identifier cluster01-instance02 \
--db-cluster-identifier cluster01 \
--db-instance-class db.t3.small \
--engine aurora-mysql \
--no-auto-minor-version-upgrade


aws rds describe-db-clusters
aws rds describe-db-instances

-- 手動フェイルオーバ実行
aws rds  failover-db-cluster \
--db-cluster-identifier cluster01 \
--target-db-instance-identifier cluster01-instance02


-- エンドポイント確認
mysql -h cluster01.cluster-xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u root -p
mysql -h cluster01.cluster-ro-xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u root -p

mysql -h cluster01-instance01.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u root -p
mysql -h cluster01-instance02.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u root -p


-- ライターインスタンス停止/起動
インスタンスの停止はできない

-- ライターインスタンス再起動
aws rds reboot-db-instance --db-instance-identifier cluster01-instance02

-- リーダーインスタンス停止/起動
インスタンスの停止はできない


-- リーダーインスタンス再起動
aws rds reboot-db-instance --db-instance-identifier cluster01-instance01


-- クラスタ停止/起動
aws rds stop-db-cluster --db-cluster-identifier cluster01
aws rds start-db-cluster --db-cluster-identifier cluster01

-- クラスタ再起動
★コマンドなし


-- クリーンアップ

aws rds delete-db-instance \
--db-instance-identifier cluster01-instance02 \
--skip-final-snapshot

aws rds delete-db-instance \
--db-instance-identifier cluster01-instance01 \
--skip-final-snapshot

aws rds delete-db-cluster \
--db-cluster-identifier cluster01 \
--skip-final-snapshot

 

(3)Redshift
マルチ AZ 配置をサポートしていない


(4)Redis
構成:クラスターモードが無効、プライマリーノード+レプリカノード1個

 

-- クラスター作成

aws elasticache create-replication-group \
--replication-group-id redis01 \
--replication-group-description "redis01" \
--num-cache-clusters 2 \
--cache-node-type cache.t3.micro \
--cache-parameter-group default.redis6.x \
--engine redis \
--engine-version 6.x \
--multi-az-enabled

aws elasticache describe-replication-groups --replication-group-id redis01
aws elasticache describe-cache-clusters --cache-cluster-id redis01-001 --show-cache-node-info
aws elasticache describe-cache-clusters --cache-cluster-id redis01-002 --show-cache-node-info


-- 手動フェイルオーバ実行
aws elasticache test-failover \
--replication-group-id redis01 \
--node-group-id 0001


-- エンドポイント確認
src/redis-cli -h redis01.xxxxxx.ng.0001.apne1.cache.amazonaws.com -c -p 6379
src/redis-cli -h redis01-ro.xxxxxx.ng.0001.apne1.cache.amazonaws.com -c -p 6379

src/redis-cli -h redis01-001.xxxxxx.0001.apne1.cache.amazonaws.com -c -p 6379
src/redis-cli -h redis01-002.xxxxxx.0001.apne1.cache.amazonaws.com -c -p 6379

 

-- クリーンアップ

aws elasticache delete-replication-group \
--replication-group-id redis01 \
--no-retain-primary-cluster