「サーバーにSSH接続して、MySQLデータベースをローカルにダンプ出力する」処理を、実行ファイル(バッチとも言いますが)にしてみました。
実際に、エックスサーバー(XServer)のレンタルサーバーにSSH接続して、WordPressのMySQLデータベースをダンプ出力しました。
エックスサーバーには、簡単にMySQLのバックアップをダンプファイルで取得できる機能が用意されています。このような実行ファイルは無くても大丈夫なのですが、サーバーパネルでの操作が不要な分だけ、ちょっと便利かもしれません。
エックスサーバーのバックアップ機能については、次の記事で詳しく使い方を紹介しています。
SSHクライアントにはRLoginを使用しています。SSHサーバー(この記事ではレンタルサーバーのこと)に接続後、ポートフォワードの設定でMySQLのホストにアクセスしています。
サーバーのSSHの有効化や、RLoginの設定については、次の記事で詳しく説明しています。
実行ファイルの仕様
MySQLへのPATHを追加
最初に、どのディレクトリからでもコマンドが実行できるよう、環境変数のPATHの先頭に、MySQLとRLoginへのパスを追加します。SET文で追加したパスは、バッチを実行しているあいだだけ有効です。
rem PATHの先頭にMySQLとRLoginへのパスを追加します。
set PATH=C:¥bitnami¥redmine¥mysql¥bin;D:¥Users¥owner¥A1Style¥RLogin;%PATH%
%PATH% | 現在の変数PATHを表します。 |
合わせて、カレントディレクトリを、ダンプファイルを保存したい「実行ファイル(.bat)が置かれている場所」に変更しておきます。
rem カレントディレクトリを実行ファイルが置かれている場所に変更します。
cd /d %~dp0
RLoginの実行
指定したエントリの設定で、RLoginをコマンドラインから非同期で起動します。「start “” /min」で実行すると、最小化されたウインドウで起動した後、終了を待たずに次の処理に移る「非同期」になります。
rem RLoginをコマンドラインから非同期で起動します。
START "" /min RLogin /entry XServer /inuse /usea /inpane
start “” /min RLogin | RLoginを最小化した別ウインドウで実行します。 |
/entry <Entry Name> | サーバー選択で登録したエントリーの設定で接続。 |
/inuse | すでに起動中のRLoginがあれば、そのウインドウのタブとしてオープンします。 |
/usea | 上記の/inuseに最小化したRLoginも対象にします。 |
また、SSH接続が開始されるあいだ、3秒待つようにしています。
rem SSH接続が開始されるあいだ、3秒待ちます。
timeout 3 /nobreak >nul
timeout | 制限時間付きでコマンドを実行します。 |
/nobreak >nul | 通常のキー入力による待機終了を無効化して、メッセージを非表示にします。 |
MySQLのダンプ出力
次のコマンドでダンプ出力します。実行時に、ユーザーのパスワードが求められます。
rem データベースをダンプ出力します。 mysqldump --no-tablespaces --single-transaction -u ***_wpadmin -p ^ ***_wpdb > wpdb.sql
mysqldump | データベースをダンプ出力します。 |
–no-tablespaces | CREATE LOGFILE GROUP ステートメントおよび CREATE TABLESPACE ステートメントを出力しません。ユーザーに必要な権限が無いため指定します。 |
–single-transaction | 内部的にスナップショットを取って、整合性のとれた状態をダンプ出力します。 |
-u ***_wpadmin | ユーザー名。 |
***_wpdb | データベース名。 |
> wpdb.sql | 出力ファイル名。 |
以下が実行ファイルの全文です。
● wordpress_mysqldump.bat
@echo off rem DOS窓への出力をオフにします。 rem PATHの先頭にMySQLとRLoginへのパスを追加します。 set PATH=C:¥bitnami¥redmine¥mysql¥bin;D:¥Users¥owner¥A1Style¥RLogin;%PATH% rem カレントディレクトリを実行ファイルが置かれている場所に変更します。 cd /d %~dp0 rem RLoginをコマンドラインから非同期で起動します。 start "" /min RLogin /entry XServer /inuse /usea rem SSH接続が開始されるあいだ、3秒待ちます。 timeout 3 /nobreak >nul rem データベースをダンプ出力します。 rem 実行時にパスワードが必要です。 mysqldump --no-tablespaces --single-transaction -u ***_wpadmin -p ^ ***_wpdb > wpdb.sql echo. echo 何かキーを押すと終了します。 echo. pause > nul
実行ファイルの使用方法
ファイルの起動
「wordpress_mysqldump.bat」をダブルクリックまたはEnterで起動します。
SSH接続の開始
RLoginが最小化されたウインドウで起動します。
ダンプ出力の実行
パスワードを入力して、ダンプ出力を実行します。
終了するとメッセージが表示されます。
何かキーを押すとウインドウが閉じます。
SSH接続の終了
RLoginのウインドウを開き、右上の「X」をクリックします。
メッセージが表示されるので「はい」をクリックします。
※ いろいろ終了方法はありますが、この方法が一番速そうです。
出力結果の確認
フォルダにダンプファイルが作成されています。
最後までご覧いただき、ありがとうございます。
起動してパスワードを入力するだけで、バックアップ(ダンプファイル)を取得できるので、意外と便利かもしれません。
では、また。
コメント