Mysql

MySQL Server 5.6 僅在製作交換文件時執行

  • December 19, 2016

我是 MySQL 伺服器的新手。我已經建立了一個專用的 MySQL 伺服器。我的目標是安裝 MySQL 伺服器 5.6 版,由於 Ubuntu 儲存庫中沒有 5.6 版,我必須自己升級它。不幸的是,升級 MySQL 伺服器很痛苦。

一切都很順利,直到使用以下命令啟動 MySQL:

sudo service mysql.server start

它會發出錯誤:

伺服器退出而不更新 PID 文件 (/var/run/mysqld/mysqld.pid)

我已經廣泛搜尋導致此錯誤的原因。不幸的是,我沒有找到。直到我的一位同事建議製作一個交換文件。謝天謝地,它奏效了!現在 MySQL 伺服器執行順利。

我只是想知道是什麼導致了錯誤,從長遠來看,這種設置有什麼缺點?

MySQL 5.6 需要更多記憶體

MySQL 5.6 可能只需要比您以前的版本更多的記憶體。

MySQL 5.6 嘗試為每個連接分配比以前版本更多的記憶體——我相信這在很大程度上歸功於性能模式,現在預設啟用

小型伺服器(尤其是 ~512MB 記憶體)或具有高max_connections設置的伺服器,即使其他設置相當保守,也可能會耗盡記憶體。

如果是這種情況,您可能會在核心日誌中看到來自OOM Killer的一些消息- 通過dmesg函式或 in /var/log/kern.log,表明它已殺死 MySQL 程序,因為它需要太多記憶體。

如果您不想使用交換文件,您可以通過減少max_connections或禁用文件performance_schema=off中的性能模式來防止這種行為my.cnf

交換空間通常是有用的東西

Percona 的 Peter Zaitsev之前在他的 MySQL 性能部落格上討論了 MySQL 伺服器上交換文件的優點。

這是一本很好的讀物,但總而言之,他自己的偏好是“我傾向於在 MySQL 伺服器上啟用交換,但當然要確保不會發生交換(VMSTAT 中的 si/so 列為零或接近於零)。”

擁有交換空間的好處是,如果記憶體不足,伺服器不會終止程序。缺點是伺服器可能會花時間進行分頁,而不是完全從記憶體中執行。這真的取決於你,但我傾向於同意作者的觀點。

引用自:https://dba.stackexchange.com/questions/62905