大容量(数GB)のmysql DBがあり、それを介してインポートする予定です。
mysql -u root -p mydb < mydb.sql
sSHセッションで。
SSH接続が切断されるとどうなりますか?
次のようなものを実行する方が安全ですか
Nohup mysql -u root -p mydb < mydb.sql
それともmysqlは気にしないのですか?
以下を使用する
MySQLセッションを(Nohupとともに)バックグラウンドに置かずにSSHがドロップした場合、DB接続はSSHセッションのなすがままです。したがって、はい、mysqlはSSHセッションのライフサイクルを考慮します。
次のように、最後に&
を付けて起動する必要があります。
Nohup mysql -u root -p mydb < mydb.sql &
次に、プロセス1(init
)がSSHセッションの終了時にmysqlセッションを実行しているプロセスID(自発的または自発的)を取得するので、OKを感じて離れることができます(この時点で意図的にログアウトできます)。不随意)突然孤立したため(なんて素晴らしいお父さん!!!).
パーティーには少し遅れましたが、私自身はこの問題に苦労し、解決策を見つけて共有したいと思いました。
ソリューション1
端末を閉じた後でもプロセスが実行されるため、screenの使用はこの状況に最適です。
Sudo apt install screen
画面を開く
screen
ここでコマンドを実行して、mysql dbダンプをインポートできます。
mysql -u username -p database_name < sqldump.sql
またはデータベースにログインしてファイルをインポートするだけでsource /var/www/html/db/my_database.sql;
画面「ctrl + a + d」を終了するには
使用可能な画面をリストすることができます
screen -ls
とscreen -r
で画面を開くだけ
ジョブが完了したら、単に画面を開き、exit
コマンドを使用して画面を閉じます。
ソリューション2
2つ目の方法は、セッションが閉じたときにNohupも終了することに気付いたNohupを使用することです。並べ替えるには、disown
を使用する必要があります
Nohup mysql -u'root' -p'password' databasename < sqldump.sql & > sql_load.log 2>sql_load_err.log disown %1