web-dev-qa-db-ja.com

とにかく、MySQLインスタンスのPIDを手動で作成できますか?

MySQLをLinuxサーバーで実行しています。別のLinuxフルバックアップからコピーmysqlエンタープライズバックアップを取得しました。それから、MySQLを起動するのに問題があったことを感じたことはありませんか。問題は、MySQLがPIDファイルを更新していないことです。PIDファイルを作成することすらありません。とにかく、MySQLインスタンスのPIDを手動で作成できますか?

私が実装できた回避策の1つは、独自のpidを作成するmysql-debuggerを使用することですが、デバッガーを停止しても、PIDファイルは作成/更新されません。

2
asdf

いいえ、そこに行きたくありません。どうして ?

mysqld_safe スクリプトは、PIDファイルの作成と破棄を担当します

あなたがそれをgrepするとそれを見ることができます

$ MYSQLD_SAFE_SCRIPT=`which mysqld_safe`
$ grep -n pid_file < ${MYSQLD_SAFE_SCRIPT}
26:pid_file=
198:      --pid-file=*) pid_file="$val" ;;
638:if test -z "$pid_file"
640:  pid_file="$DATADIR/`hostname`.pid"
642:  case "$pid_file" in
644:    * )  pid_file="$DATADIR/$pid_file" ;;
647:append_arg_to_args "--pid-file=$pid_file"
720:if test -f "$pid_file"
722:  PID=`cat "$pid_file"`
731:  rm -f "$pid_file"
732:  if test -f "$pid_file"
735:$pid_file
782:  rm -f $safe_mysql_unix_port "$pid_file"   # Some extra safety
796:  if test ! -f "$pid_file"      # This is removed if normal shutdown
834:    numofproces=`ps xaww | grep -v "grep" | grep "$ledir/$MYSQLD\>" | grep -c "pid-file=$pid_file"`
840:      PROC=`ps xaww | grep "$ledir/$MYSQLD\>" | grep -v "grep" | grep "pid-file=$pid_file" | sed -n '$p'`
859:log_notice "mysqld from pid file $pid_file ended"
$

あなたがすべきことは

service mysql stop 
... delete the pid file if it is still exists after shutdown
service mysql start

MySQL Enterpriseからバックアップを復元する必要がある場合は、PIDファイルがないことを確認してください。

できれば、MySQLレプリケーションをセットアップして、スレーブでバックアップを実行できます。次に、バックアップの時間になったら、実行します

  • STOP SLAVE;
  • SET GLOBAL innodb_fast_shutdown=0;
  • service mysql stop(pidファイルはmysqld_safeによって削除されるはずです)
  • バックアップを作成
  • service mysql start(pidファイルはmysqld_safeによって作成される必要があります)

警告

service mysql stopで問題が発生し、mysqldがシャットダウンされないまま永久に時間がかかる場合は、ソケットファイルがないことをすぐに示します。 PIDファイルも同様に修正されます。

その場合は、MySQLのTCP/IPシャットダウンを実行します

まずこれをして

mysqladmin -uroot -p -h127.0.0.1 --protocol=tcp ping

これが反響する場合

mysqld is alive

その後、あなたは走ることができます

mysqladmin -uroot -p -h127.0.0.1 --protocol=tcp shutdown

試してみる !!!

1
RolandoMySQLDBA