[新機能]RDSのスナップショットがS3にエクスポートできるようになりました。
まいど、大阪の市田です。
先日RDSのスナップショットを「Apache Parquet」形式でS3にエクスポートできる機能がリリースされました。
Announcing Amazon Relational Database Service (RDS) Snapshot Export to S3
対象のサービスとバージョン
現時点の対象は下記になります。
- Amazon RDS for PostgreSQL
- Amazon RDS for MariaDB
- Amazon RDS for MySQL
- Amazon Aurora PostgreSQL
- Amazon Aurora MySQL
また、利用できるエンジンのバージョンも指定があります。
- MariaDB
- 10.0.32以降
- 10.1.26以降
- 10.2.12以降
- 10.3
- MySQL
- 5.6.40以降
- 5.7.24以降
- 8.0.13以降
- PostgreSQL
- 9.4.21以降
- 9.5.16以降
- 9.6.12以降
- 10.7以降
- 11.2以降
利用可能なリージョンもまだ部分的ですが、最初から東京リージョンでも使えます!!
- 米国東部(バージニア北部)
- 米国東部(オハイオ)
- 米国西部(オレゴン)
- ヨーロッパ(アイルランド)
- アジア太平洋(東京)
試してみた
今回は「RDS for MySQL」で確認します。作成の際、対応しているバージョンを間違えずに選びましょう。
データは「FillDB」というサービスを利用したダミーデータを使っています。
FillDB - Dummy data for MYSQL database
MySQLのインスタンスが作成できたら、下記のように「mydb」というデータベースに2つのテーブル「authors」「posts」を用意しました。
次に手動でスナップショットを取得します。
これで準備が整いましたので、取得したスナップショットをS3にエクスポートしてみます。
プルダウンから「Export to Amazon S3」をクリックします。
次にエクスポートするための設定を行っていきます。長いので分割した画面ショットになっています。
(なお、作業にはGoogle chromeを使っていたのですが、私の場合だとコンソールが日本語では画面が表示されなかったので、同じ現象に遭遇されたら、英語表記にしてみてください)
名前は適当に入れます。
エクスポートするデータを「全て」か「一部」か選択することができます。今回は「全て」を選択しました。
特定のテーブルだけエクスポートしたい場合は、下記のようにテーブルを指定します。
次にエクスポート先のS3の設定を行います。バケット、prefixを指定します。またS3にアクセスするためのIAM Roleも指定します。今回はウィザードの中で新規に作成しました。
最後にエクスポートしたデータを暗号化するためにKMSのキーを選択します。今回は既存のものを指定しました。
最後に「Export To Amazon S3」をクリックしてエクスポート開始です。
処理の状況もコンソールから確認可能です。
エクスポートが完了すると、S3に下記のようにParquet形式のデータが保存されていました。
元のダミーデータ(.sql形式のテキストファイル)のサイズは「約19KB」でしたが、エクスポートしたデータは「4.5KB」と非常に小さくなっていることも確認できました。
(ダミーデータは「authors」テーブルにしか入れてない状態です)
$ aws s3 ls s3://rds-export-blog-test/ --recursive --human-readable --sum (抜粋) 2020-01-25 00:10:37 4.5 KiB exports/2020/01/24/myexport/mydb/mydb.authors/part-00000-xxxx-xxxx-xxxx-xxxx-xxxx-c000.gz.parquet
Parquet形式なので、エクスポートしたデータは分析などに利用することが多いと思います。
せっかくなので、Glueを使ってAthenaでクエリを投げてみました。
最後に
簡単にですが、スナップショットのエクスポートから分析までをざっくりとなぞってみました。何も作業せずにParquet形式でエクスポートできるのは便利だなと感じました。
是非活用いただければと思います。
以上です。