システム運用をしているとs3にデータベースのバックアップを定期にアップロードをするケースがあります。
ただ、データベースのサイズがある程度大規模になってくると、もし一旦ローカルにファイルを保存してバックアップを行う場合、そもそもサーバーにバックアップファイルを置く容量がない事態が発生してしまいがちです。
そこで、今回はローカルにファイルを作成せず直接s3にアップロードすることで、サーバーの容量を圧迫せずにバックアップ&リストアを行う方法をご紹介します。

mysqldumpをローカルにファイルを保存せずs3に保存する方法

以下コマンドで、データベースとテーブルを指定してs3の特定の場所にバックアップをアップロードできます。
本サンプルはDBの入っているサーバーローカル上での実行例です。 (圧縮方法はbzip2)

mysqldump -u root db_name table_name | bzip2 | aws s3 cp - s3://test-bucket/test/xxx.bz2

s3上のバックアップをローカルにファイルを保存せずにリストアする方法

逆にs3上に保存したバックアップをリストアする場合は以下コマンドで行えます。

aws s3 cp s3://test-bucket/test/xxx.bz2 - | bzip2 -d | mysql -u root db_name table_name

まとめ

上記の方法であれば、サーバーのメモリをあまり圧迫せずバックアップ&リストアを行うことができます。
以上、簡単でしたが参考していただければ幸いです。