📘
MariaDBでデータベース間コピーをSSH切断後も継続実行する方法
MariaDB(MySQL)でデータベース間のデータコピーを行う際、処理が長時間になることがあります。SSHの接続を切断してもコピーを継続したい場合の方法について解説します。
コマンド例
SSH切断後も処理を継続させるために、nohup
を使用します。
nohup sh -c "mysqldump -h 127.0.0.1 -u your_user -p'your_password' source_db | mysql -h 127.0.0.1 -u your_user -p'your_password' target_db" > db_copy.log 2>&1 &
コマンドの説明
-
nohup
: SSH切断後もコマンドを継続実行。 -
mysqldump
: データベースをダンプ。 -
|
: ダンプデータを次のmysqlコマンドに渡す。 -
mysql
: ターゲットDBへデータを投入。 -
> db_copy.log 2>&1
: ログファイルに標準出力と標準エラーを出力。 -
&
: バックグラウンド実行。
実行状況の確認方法
① ログをリアルタイムで確認
次のコマンドでログを確認できます。
tail -f db_copy.log
Ctrl+C
でログのリアルタイム表示を停止できます。
② プロセスの状態確認
プロセスが実行中であるか確認する方法です。
ps aux | grep mysql
mysqldump
やmysql
のプロセスが表示されれば実行中です。
③ nohup.outを確認する方法
ログファイルを指定しなかった場合、デフォルトで生成されるnohup.out
を確認できます。
tail -f nohup.out
④ データベース側での進行状況を確認
ターゲットDBにログインし、コピーの進行状況を確認する方法です。
テーブル一覧確認:
mysql -u your_user -p'your_password' target_db -e "SHOW TABLES;"
テーブルのレコード数確認:
mysql -u your_user -p'your_password' target_db -e "SELECT COUNT(*) FROM table_name;"
まとめ
nohup
を利用すると、SSH接続を切断しても長時間にわたるデータベース間のコピー作業を継続できます。処理状況の確認方法を併せて覚えておくと、管理が効率化できます。
Discussion