WordPress(AWS+Bitnami) – PowerShellでMySQLのバックアップをとる方法

phpMyAdminとか開いてバックアップをとるのは非常に面倒くさい。
今回はPowerShellを使って、MySQLに登録されたデータの取り出しの簡易化を試みます。
対象はBitnamiで立ち上げたWordpressです。
ご参考まで。

手順

  • PowerShellの処理を作る
  • 起動用のバッチを作る
  • バッチを起動し必要な情報を入力する

PowerShellの処理を作る

ファイル名:mysql_backup.ps1

以下の内容をコピーしてmysql_backup.ps1という名前で保存。

# **** 移行元のサーバー情報 ****
# ユーザーID
$user_name=Read-Host "接続先のユーザーIDを指定してください"
# ドメイン情報
$domain=Read-Host "接続先のドメインを指定してください。"
# 秘密鍵(.pem)ファイルパス(C:\Users以下に配置しないとアクセス権の問題で失敗します) ex."C:\Users\WordpressKeyPair.pem"
$pemfile_path=Read-Host "秘密鍵(.pem)ファイルの保存先を指定してください。C:\Users\の以下に配置されている必要があります"
# バックアップファイルを保存する先 ex."C:\backup\dump.sql.tar.gz"
$backup_path=Read-Host "SQLのdumpファイルの保存先を指定してください。ex.C:\backup"
# MySQLのログイン名を指定してください
$mysql_user=Read-Host "MySQLのログイン名を指定してください"
# MySQLのパスワードを指定してください
$mysql_pass=Read-Host "MySQLのパスワードを指定してください"

# ログイン情報の作成
$login_info=$user_name+"@"+$domain

# dump処理を実行する
ssh -i $pemfile_path $login_info "mysqldump -u $mysql_user -p$mysql_pass -h localhost bitnami_wordpress | gzip > /tmp/dump.sql.gz"

# SCP接続先情報を作成
$dump_tar_path=$login_info+":"+"/tmp/dump.sql.gz"

# SCP接続を使用してデータを取得
scp -i $pemfile_path $dump_tar_path $backup_path

# 圧縮ディレクトリを削除
"不要になった圧縮ディレクトリを削除しています。"
ssh -i $pemfile_path $login_info "rm -f /tmp/dump.sql.gz;exit;"

起動用のバッチを作る

ファイル名:mysql_backup.bat

以下の内容をコピーしてバッチファイルを作成する。

powershell -NoProfile -ExecutionPolicy Unrestricted .\mysql_backup.ps1
pause

必要な情報を入力する

以下の順で情報の入力を求めてきます。
事前に調べておきましょう。

  1. 接続先のユーザーID
    • 接続先のユーザーIDは最近のものであればおそらくbitnami。
  2. 秘密鍵(.pem)ファイルの保存先
    • .pemファイルはWordpress作成時に保存した秘密鍵ファイル
  3. SQLのdumpファイルの保存先
    • 自分のPCのお好きなところで
  4. MySQLのユーザーID
  5. MySQLのパスワード

ダウンロード

mysql_dump

課題

作ってはみましたが、2点ほど課題を残しています。

  1. warningが出る
  2. 不要なディレクトリを削除しています、で止まる

1.については諦めます。
こんな感じの警告。コマンドラインでパスワード使うのはセキュアじゃないらしい。

mysqldump: [Warning] Using a password on the command line interface can be insecure.

2.については・・・結構悩んだのですが解決できませんでした。
わかる人がいたら修正方法を教えてください。
ちゃんと削除されてますし、Enterを押せば終了できます。

まとめ

次は自動でリストアか・・・。

おわり

コメントを残す

メールアドレスが公開されることはありません。