📘

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

mysqldumpmysqlのプロセスが表示されれば実行中です。

③ 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