スマートスタイル TECH BLOG

データベース&クラウド技術情報

MySQL Shell で AWS S3 を活用してみる

はじめに

バックアップやリストアをパラレルに実行できたりと、何かと便利な MySQL Shell ですが、過去の弊ブログでは、バックアップファイルの保存先に OCI のオブジェクトストレージを活用する方法をご紹介しました。

MySQL Shellリファレンスには、OCI のオブジェクトストレージだけではなく、Amazon Web Services S3 (以降 S3 と表記)に対してもテストされているということが記載されております。

ということで、S3にバックアップを保存し、そのバックアップからデータを復元できるか確認してみました。

検証サーバ

  • Red Hat Enterprise Linux release 8.6
  • MySQL Server 8.0.31
  • MySQL Shell 8.0.31

検証

AWS CLIのインストール

まずは、サーバに AWS CLI をインストールします。

AWS CLIの設定

インストール後は、CLIを使用する為の設定を行います。

念のため、設定された内容を確認しておきます。

S3 バケットの作成

CLI の設定が完了すれば、バックアップファイルを保存する S3バケット を作成します。
バケット名は mysqlsh としています。

※ 予め S3 への書き込み、読み込みが行えるようポリシーを付与しておく必要があります。

バックアップ

ここまでで準備は完了です。
それでは、早速 MySQL Shell でログインし、 util.dumpInstance を使用してバックアップを S3 に保存してみます。

OCI のオブジェクトストレージでは、osBucketNameosNamespace を設定しましたが、S3 を対象とする場合は、以下のリファレンスのオプションを指定するようです。

試しに、MySQL のサンプルデータベースとなる sakila をロードしたMySQLサーバに対して、 第一引数には保存先となるバケット内のフォルダ名を、s3BucketName に保存先のバケット名を指定して実行します。

正常終了しましたので、S3 のバケットを確認します。

問題なく指定したバケットのフォルダ内にバックアップオブジェクトが保存されているようです。

次は、同一サーバの sakila データベースを削除して、先程のバックアップをロードしてみます。
ついでに、ロードする際に必要な設定 local_infile=ON を設定しておきます。

それでは util.loadDump を使用してロードしてみます。
バックアップ時と同様に S3 のバケット名と保存先フォルダを指定しておきます。

正常にロードが完了したようなので、実際のテーブルとデータを確認してみましょう。

問題なく、ロードされているようです。

まとめ

MySQL Shell のユーティリティには、パラレルでデータのダンプ、ロードを行える機能があり、大いに活用できるツールであると思います。
また、バックアップのストレージとして、OCI のオブジェクトストレージだけでなく、S3 を使用することも可能ですので、機会があれば、触ってみて下さい。

Return Top