前回の記事では、AWSのRDBからS3へEC2で一時ファイルを作成することなくdumpファイルを格納するコマンドを紹介しました。
今回はそのAzure編でAzure Database for MySQLフレキシブルサーバからBLOBコンテナーへVMに一時ファイルを作成することなくdumpファイルを格納するコマンドの紹介になります。
今回は、azcopyコマンドで実施してみます。
Mysqlフレキシブルサーバのdumpを直接BLOBコンテナーへ出力する
以下は、mysqlのdumpをgzip圧縮しazcopyコマンドで直接BLOBコンテナーに出力する例です。--from-toオプションでPipeBlobを指定します。
mysqldump -p -h <Server Name>.mysql.database.azure.com -u <USERNAME> <DB Name> | gzip | azcopy cp https://[account].blob.core.windows.net/[container]/[path/to/directory]/<dumpfile>.sql.gz --from-to PipeBlob
SASトークンが必要な場合は、BLOBのURLの後ろにSASの文字列を追加します。
BLOBコンテナーからdumpを直接MySQLフレキシブルサーバへ直接インポートする
BLOBコンテナーに保管しているgzip圧縮されたdumpファイルをMysqlフレキシブルサーバにインポートする例です。 --from-toオプションでBlobPipeを指定します。
azcopy cp https://[account].blob.core.windows.net/[container]/[path/to/directory]/<dumpfile>.sql.gz --from-to BlobPipe | zcat | mysql -p -h <Server Name>.mysql.database.azure.com -u <USERNAME> <DB Name>
補足
上記の処理が使用できるのは比較的最近のバージョンのようです。当初 version 10.6.0を使用していましたが、上手くいかず、記事を書いている時点で最新の10.18.1で実行したところ実行できました。