[新機能]RDSのスナップショットがS3にエクスポートできるようになりました。

RDSのスナップショットがS3にエクスポートできるようになりました。Parquet形式でエクスポートできるのでユーザ側で変換処理しなくてよくて便利です。
2020.01.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

まいど、大阪の市田です。
先日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」で確認します。作成の際、対応しているバージョンを間違えずに選びましょう。

07-mysql-version

データは「FillDB」というサービスを利用したダミーデータを使っています。

FillDB - Dummy data for MYSQL database

MySQLのインスタンスが作成できたら、下記のように「mydb」というデータベースに2つのテーブル「authors」「posts」を用意しました。

01-rds-operation

次に手動でスナップショットを取得します。

02-rds-snapshot-manual

これで準備が整いましたので、取得したスナップショットをS3にエクスポートしてみます。
プルダウンから「Export to Amazon S3」をクリックします。

03-take-snapshot

次にエクスポートするための設定を行っていきます。長いので分割した画面ショットになっています。
(なお、作業にはGoogle chromeを使っていたのですが、私の場合だとコンソールが日本語では画面が表示されなかったので、同じ現象に遭遇されたら、英語表記にしてみてください)

名前は適当に入れます。
エクスポートするデータを「全て」か「一部」か選択することができます。今回は「全て」を選択しました。

04-export-s3-settings-01

特定のテーブルだけエクスポートしたい場合は、下記のようにテーブルを指定します。

08-part-export

次にエクスポート先のS3の設定を行います。バケット、prefixを指定します。またS3にアクセスするためのIAM Roleも指定します。今回はウィザードの中で新規に作成しました。

05-export-s3-settings-02

最後にエクスポートしたデータを暗号化するためにKMSのキーを選択します。今回は既存のものを指定しました。
最後に「Export To Amazon S3」をクリックしてエクスポート開始です。

06-export-s3-settings-03

処理の状況もコンソールから確認可能です。

09-monitoring-snapshot

エクスポートが完了すると、S3に下記のようにParquet形式のデータが保存されていました。

11-s3-export-data

元のダミーデータ(.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でクエリを投げてみました。

10-athena

最後に

簡単にですが、スナップショットのエクスポートから分析までをざっくりとなぞってみました。何も作業せずにParquet形式でエクスポートできるのは便利だなと感じました。
是非活用いただければと思います。

以上です。