🌊

AuroraからS3にエクスポートしてみる

2022/10/31に公開

2022/10/27に新しく発表されたということで、やってみました。

Amazon Aurora supports cluster export to S3

  • Auroraのクラスターを直接S3にエクスポート
    • 直接 => snapshotを作らないという意味
    • Parquetフォーマット
    • エクスポートすることで、DBのパフォーマンスに影響は無い
    • Console、CLIで実行できる

https://aws.amazon.com/jp/about-aws/whats-new/2022/10/amazon-aurora-cluster-export-s3/

やってみる

Auroraの準備

エクスポート用にDBを作ります。Aurora MySQL、サイズはsmallです。

MySQLのチュートリアルから作成して、
database: mem
table: pet
としました。(何でもOK)

Export設定

クラスターをチェックして、右上のActionsからExport to Amazon S3を選択

  • Export identifier にエクスポートの名前をつける(S3バケット内のフォルダ名になる)
  • Export data formatでは、Allも選べますが今回は1つのデータベースの1つのテーブルのみにしました。mem.petと指定しています。

続いてS3、IAM、Encryptionの設定をします。

  • S3バケットを指定
    • prefixで中のフォルダ構成を設定できます
  • IAM roleは自動で作ってくれるものを使いました
  • KMS keyはカスタマーマネージドのみ使えます 「only customer managed keys are allowed.」というエラーが出ます

開始後に出てくる画面。Startingから変わりませんでした。終了しても固まったままだったので使いにくいかもしれません。

左側のメニューからも状況を見ることができます。

上のメニューと同じ情報はCLIでも見ることができます。

aws rds describe-export-tasks

以下は終了後にCLI出力したものです。項目がxxxxとなっている部分はダミーですが、TaskStartTime、TaskEndTimeは実データです。10行のレコードで、3分30秒ほどで終わっています。"TotalExtractedDataInGB": 1は切り上げられています(あとで詳細な値が出てきます)。

{
    "ExportTasks": [
        {
            "ExportTaskIdentifier": "xxxx",
            "SourceArn": "arn:aws:rds:ap-northeast-1::cluster:xxxx",
            "TaskStartTime": "2022-10-30T00:50:15.066000+00:00",
            "TaskEndTime": "2022-10-30T00:53:45.845000+00:00",
            "S3Bucket": "xxxx",
            "S3Prefix": "",
            "IamRoleArn": "xxxx",
            "KmsKeyId": "xxxx",
            "Status": "COMPLETE",
            "PercentProgress": 100,
            "TotalExtractedDataInGB": 1
        }
    ]
}

イベント通知

エクスポート終了時に"RDS-EVENT-0236"、"Export task completed"というEventが発行されていました(EventBridgeでトリガーしてSNS通知していたもの。)timeを見ると終了後2秒くらいでEventが出ているようです。

{
    "time": "2022-10-30T00:53:47Z",
    "resources": ["arn:aws:rds:ap-northeast-1::cluster:xxxx"],
    "EventID": "RDS-EVENT-0236",
        "Message": "Export task completed"
}

S3の中身

  • 指定したバケットにExportIdentifier/database/.. という階層で入っている
  • Parquetファイルを確認するには、.gz.parquetを選択してObject Actions -> Query with S3 Selectでみるとよさそう
  • export_info...jsonにエクスポートの情報、export_tables_info...jsonにスキーマ情報がある。
    • どちらにも "totalExportedDataInGB" というエクスポートデータ量の項目がある。今回は、6.154179573059082E-6 (=> 6KB ) だった。

まとめ

  • AuroraのS3直接エクスポートをやってみました

余談: MySQLでエクスポートが速くなったらしい

投稿日: Oct 20, 2022
AWS は本日、MySQL 5.7 および 8.0 の Amazon Aurora MySQL 互換エディションで Amazon S3 へのスナップショットのエクスポートが最大 10 倍の速度になったことをお知らせします。パフォーマンスの向上は、手動スナップショット、自動システムスナップショット、AWS Backup サービスで作成したスナップショットを含む、すべてのタイプのデータベーススナップショットをエクスポートする際に自動的に適用されます。

https://aws.amazon.com/jp/about-aws/whats-new/2022/10/amazon-aurora-mysql-faster-export-s3/?nc1=h_ls

Discussion