<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                **現象** mysql5.5,通過命令show variables like '%pid_file%'; 可以查到pid文件位置,例如/home/mysql/xx.pid。但發現在此目錄下找不到此pid文件。 **背景知識** mysql pid文件記錄的是當前mysqld進程的pid。 通過mysqld_safe啟動mysqld時,mysqld_safe會檢查PID文件,未指定PID文件時,pid文件默認名為$DATADIR/`hostname`.pid * pid文件不存在,不做處理 * 文件存在,且pid已占用則報錯"A mysqld process already exists";文件存在,但pid未占用,則刪除pid文件。 mysqld啟動后會通過create_pid_file函數新建pid文件,通過getpid()獲取當前進程pid并將pid寫入pid文件。 因此,通過mysqld_safe啟動時,pid文件的作用是為了防止同一個數據庫被啟動多次(數據文件是同一份,但端口不同的情況)。 另一個事實是mysqld在正常關閉時或通過SIGQUIT,SIGKILL,SIGTERM信號來kill mysqld時,會調用clean_up函數將pid文件刪除。而mysqld異常crash時,pid文件是保留的。 另外mysqld_safe有一個功能是當mysqld異常crash時,后臺會自動重啟mysqld。mysqld關閉后,mysqld_safe會檢查pid文件是否存在。如果存在則認為mysqld是異常crash, 需要自動重啟;如果不存在則認為是正常關閉的,不需要自動重啟,mysqld_safe程序也退出。 **原因分析** 查看error log發現數據庫在相近的時間內啟動了兩次 ~~~ 141128 23:16:15 mysqld_safe Starting mysqld daemon with databases from ….. 141128 23:16:23 mysqld_safe Starting mysqld daemon with databases from ~~~ 前面說到mysqld_safe啟動mysqld時,會根據pid文件來判斷避免重復啟動mysqld.然而,由于兩次啟動時間較近,導致第一次mysqld啟動生成pid文件之前,第二個mysqld就已開始啟動了,從而繞過了這個判斷。第一次mysqld啟動會成功,而第二次mysqld啟動會因為文件鎖而導致啟動失敗。 ~~~ InnoDB: Unable to lock ./ibdata1, error: 11 ~~~ 第二次啟動的mysqld關閉時會將第一次啟動時產生的pid文件刪除,從而導致pid文件丟失。 通過mysqld_safe啟動mysqld來重現pid文件丟失有一定的概率性,必須是同時啟動mysqld_safe。 如果是直接通過mysqld啟動,同時指定相同的參數啟動兩次,那么就很容易重現了。 **修復** 參考5.6 官方的修復方法,在上述場景下刪除pid文件時,需判斷是否是自己新建的pid文件,同時文件中的pid是否和自身pid一致,否則不能刪除。參考[補丁](https://github.com/mysql/mysql-server/commit/db3763cd6983b1462a6ef4717083c79fd7d7c6b3)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看