【速報】Amazon Auroraでも一時的な停止がサポートされました
2018年9月21日 15:35 初版 2018年9月25日 10:30 料金、注意事項について追記 2018年9月25日 11:50 Management Consoleの操作について追記
大栗です。
AWS CLIのコマンドリファレンスを見ていたら見慣れぬコマンドが増えていたと思ったのですが、Auroraクラスタの停止ができるようだったので試してみました。
- stop-db-cluster
- start-db-cluster
- Stopping and Starting an Amazon Aurora DB Cluster
- Amazon Aurora Now Supports Stopping and Starting of Database Clusters
Auroraクラスタの停止
Amazon RDSではAurora以外のDBエンジンでは一時的な停止をサポートしています。しかしAuroraについては一時的な停止ができず開発/検証環境で可動していない夜間などの利用費が無駄になっていました。
今までもDBインスタンスだけを削除してDBクラスタ(ストレージ)だけ残すことで同様のことができましたが、停止を行うことで簡単に使用していない時の料金を削減できるようになります。
停止中の料金
停止中はクラスタストレージ、手動スナップショット、自動バックアップストレージのみ料金は発生して、DBインスタンスには料金が発生しません。
注意事項
Auroraには以下の4種類がありますが、Aurora Serverlessは停止をサポートしていない模様1です。なお、本日Aurora MySQL 1.18.0がリリースされましたが、旧バージョンでも停止可能でした。
- Aurora MySQL 1系 (MySQL 5.6互換) <- 停止をサポート
- Aurora MySQL 2系 (MySQL 5.7互換) <- 停止をサポート
- Aurora Serverless (MySQL 5.6互換) <- 停止をサポートせず
- Aurora PostgreSQL <- 停止をサポート
DBクラスタを停止し続けられる期間は7日間です。DBクラスタは7日後に自動的に起動します。
DBクラスタの停止中は構成の変更やDBインスタンス/DBクラスタの削除を行えません。
DBクラスタの停止中は自動バックアップが取得されません。またバックアップの保持期間も伸びません。そのため停止の長さによってはバックアップが無くなることがあるのでご注意ください。
やってみた
Auroraの停止/再開を行ってみます。ここではAurora MySQL 1.14.4を前提としています。
AWS CLI版
AWS CLIは最新のバージョン1.16.18とします。古いバージョンのAWS CLIにはコマンドがないのでご注意ください。
$ aws --version aws-cli/1.16.18 Python/2.7.10 Darwin/17.7.0 botocore/1.12.8
クラスタ名がcluster-1-14-4
で作成しています。
DBインスタンスは2台起動しています。
クラスタを指定してstop-db-cluster
コマンドを実行します。
$ aws rds stop-db-cluster --db-cluster-identifier cluster-1-14-4 { "DBCluster": { "MasterUsername": "awsuser", "ReaderEndpoint": "cluster-1-14-4.cluster-ro-abcdefghijkl.ap-northeast-1.rds.amazonaws.com", "ReadReplicaIdentifiers": [], "VpcSecurityGroups": [ { "Status": "active", "VpcSecurityGroupId": "sg-12345678" } ], "HostedZoneId": "ABCDEFGHIJKLMN", "EngineMode": "provisioned", "Status": "available", "MultiAZ": true, "LatestRestorableTime": "2018-09-21T05:37:28.179Z", "PreferredBackupWindow": "19:31-20:01", "DBSubnetGroup": "default", "AllocatedStorage": 1, "BackupRetentionPeriod": 1, "PreferredMaintenanceWindow": "sat:18:28-sat:18:58", "Engine": "aurora", "Endpoint": "cluster-1-14-4.cluster-abcdefghijkl.ap-northeast-1.rds.amazonaws.com", "EarliestRestorableTime": "2018-09-21T04:40:27.352Z", "IAMDatabaseAuthenticationEnabled": false, "ClusterCreateTime": "2018-09-21T04:39:52.693Z", "EngineVersion": "5.6.10a", "DBClusterIdentifier": "cluster-1-14-4", "DbClusterResourceId": "cluster-ABCDEFGHIJKLMNOPQRSTUVWXYZ", "DBClusterMembers": [ { "IsClusterWriter": true, "DBClusterParameterGroupStatus": "in-sync", "PromotionTier": 1, "DBInstanceIdentifier": "db-1-14-4" }, { "IsClusterWriter": false, "DBClusterParameterGroupStatus": "in-sync", "PromotionTier": 1, "DBInstanceIdentifier": "db-14-4-b" } ], "DBClusterArn": "arn:aws:rds:ap-northeast-1:123456789012:cluster:cluster-1-14-4", "StorageEncrypted": false, "AssociatedRoles": [], "DBClusterParameterGroup": "default.aurora5.6", "AvailabilityZones": [ "ap-northeast-1d", "ap-northeast-1a", "ap-northeast-1c" ], "Port": 3306 } }
RDSのコンソールを確認すると以下のように停止し始めます。
DBクラスタはstopping
と表示されています。
DBクラスタは停止中
と表示されています。
しばらくすると完全に停止します。通常のRDSではレプリカやMulti-AZ構成の場合は停止できませんが、Auroraでは問題なく停止できるようです。
Auroraを再開します。再開はstart-db-cluster
コマンドを実行します。
$ aws rds start-db-cluster --db-cluster-identifier cluster-1-14-4 { "DBCluster": { "MasterUsername": "awsuser", "ReaderEndpoint": "cluster-1-14-4.cluster-ro-abcdefghijkl.ap-northeast-1.rds.amazonaws.com", "ReadReplicaIdentifiers": [], "VpcSecurityGroups": [ { "Status": "active", "VpcSecurityGroupId": "sg-12345678" } ], "HostedZoneId": "ABCDEFGHIJKLMN", "EngineMode": "provisioned", "Status": "stopped", "MultiAZ": true, "LatestRestorableTime": "2018-09-21T05:41:42.645Z", "PreferredBackupWindow": "19:31-20:01", "DBSubnetGroup": "default", "AllocatedStorage": 1, "BackupRetentionPeriod": 1, "PreferredMaintenanceWindow": "sat:18:28-sat:18:58", "Engine": "aurora", "Endpoint": "cluster-1-14-4.cluster-abcdefghijkl.ap-northeast-1.rds.amazonaws.com", "EarliestRestorableTime": "2018-09-21T04:40:27.352Z", "IAMDatabaseAuthenticationEnabled": false, "ClusterCreateTime": "2018-09-21T04:39:52.693Z", "EngineVersion": "5.6.10a", "DBClusterIdentifier": "cluster-1-14-4", "DbClusterResourceId": "cluster-ABCDEFGHIJKLMNOPQRSTUVWXYZ", "DBClusterMembers": [ { "IsClusterWriter": true, "DBClusterParameterGroupStatus": "in-sync", "PromotionTier": 1, "DBInstanceIdentifier": "db-1-14-4" }, { "IsClusterWriter": false, "DBClusterParameterGroupStatus": "in-sync", "PromotionTier": 1, "DBInstanceIdentifier": "db-14-4-b" } ], "DBClusterArn": "arn:aws:rds:ap-northeast-1:123456789012:cluster:cluster-1-14-4", "StorageEncrypted": false, "AssociatedRoles": [], "DBClusterParameterGroup": "default.aurora5.6", "AvailabilityZones": [ "ap-northeast-1d", "ap-northeast-1a", "ap-northeast-1c" ], "Port": 3306 } }
Auroraクラスタが起動し始めます。
DBインスタンスはWriter(マスタ)から先に起動するようです。
暫く待つと起動が完了しました。
ログインしてみます。特に問題ありません。
$ mysql -u awsuser -pmypassword -h db-1-14-4.abcdefghijkl.ap-northeast-1.rds.amazonaws.com Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 44 Server version: 5.6.10 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]> select @@aurora_version; +------------------+ | @@aurora_version | +------------------+ | 1.14.4 | +------------------+ 1 row in set (0.01 sec)
ちなみにAurora Serverlessで実行しようとすると以下のようなエラーメッセージが出力されます。
$ aws rds stop-db-cluster --db-cluster-identifier serverless An error occurred (InvalidDBClusterStateFault) when calling the StopDBCluster operation: Stop-db-cluster is not supported for these configurations
Management Console版
こちらではManagement ConsoleからDBクラスタの停止/起動を実施してみます。
なお、東京リージョンのManagement Consoleでは機能がデプロイされていないようだったのでバージニアリージョンで実施しています。
クラスタ名がcluster-1-14-4
で作成しています。
クラスタを選択してクラスターアクション
をクリックすると停止
というアクションが増えています。これをクリックします。
停止の確認を求められます。ここでデータベースの停止
をクリックして停止します。
DBクラスタが停止中
となります。
DBインスタンスを確認すると、こちらも停止中
となります。
次はDBクラスタを再開してみます。
まずDBインスタンスを選択してインスタンスの操作
をクリックすると開始
があるのでクリックしてみます。
DBインスタンス側で開始しようとすると、DBクラスタを起動する必要がある旨のメッセージが表示されます。
改めてDBクラスタを選択してクラスターアクション
をクリックすると開始
があるのでクリックします。
DBクラスタが開始し始めます。
DVインスタンスも開始し始めました。
Management ConsoleではDBクラスタ側で停止/開始を行う必要があります。
さいごに
開発/検証環境では24*365でDBが稼働する必要がない場合が多いです。しかしAuroraでは手軽に夜間停止などを行えませんでした。今回のアップデートでサービスの非稼働時間帯の料金の削減が図れるのではないでしょうか?
- Aurora Serverlesに対してstop-db-clusterコマンドを実行すると、コマンドをサポートしていない旨のエラーメッセージが表示されます。 ↩