[MySQL] サーバーにSSH接続してダンプ出力する作業をバッチにしてみました

MySQL / MariaDB

「サーバーに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 RLoginRLoginを最小化した別ウインドウで実行します。
/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-tablespacesCREATE 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」をクリックします。
メッセージが表示されるので「はい」をクリックします。
※ いろいろ終了方法はありますが、この方法が一番速そうです。

 

出力結果の確認

フォルダにダンプファイルが作成されています。

 

最後までご覧いただき、ありがとうございます。

起動してパスワードを入力するだけで、バックアップ(ダンプファイル)を取得できるので、意外と便利かもしれません。

では、また。