MySQLをLinuxサーバーで実行しています。別のLinuxフルバックアップからコピーmysqlエンタープライズバックアップを取得しました。それから、MySQLを起動するのに問題があったことを感じたことはありませんか。問題は、MySQLがPIDファイルを更新していないことです。PIDファイルを作成することすらありません。とにかく、MySQLインスタンスのPIDを手動で作成できますか?
私が実装できた回避策の1つは、独自のpidを作成するmysql-debuggerを使用することですが、デバッガーを停止しても、PIDファイルは作成/更新されません。
いいえ、そこに行きたくありません。どうして ?
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