Mysql

如何正確更改 mysql 的“innodb_buffer_pool_size”值?

  • April 6, 2016

我有以下環境:

# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
# rpm -qa | grep ^mysql-community-
mysql-community-common-5.5.48-2.el7.x86_64
mysql-community-libs-5.5.48-2.el7.x86_64
mysql-community-client-5.5.48-2.el7.x86_64
mysql-community-release-el7-5.noarch
mysql-community-server-5.5.48-2.el7.x86_64
# 

我需要調整innodb_buffer_pool_size的值mysql,但是上次當我嘗試這樣做時,有些事情發生了,我最終從備份中恢復了數據庫(數據庫約為 100G,所以理想情況下我不想再走那條路了。

我上次採取的步驟:

  • 停止 mysqld
  • 調整 my.cnf 中 innodb_buffer_pool_size 的值
  • 殺死 ib_logfile*
  • 啟動mysqld

我做錯了什麼?這次我應該做些什麼不同的事情?

更改innodb_buffer_pool_size不需要您核對 ib_logfiles。這很可能是您必須恢復數據庫 (*) 的原因。

只需停止 mysql -> 更改 my.cnf 中的設置 -> 啟動 mysql。

(*) ib_logfiles 保存恢復數據,尚未檢查點到表空間的頁面。如果在沒有確保完全關閉的情況下刪除它們,則可能會失去數據並損壞數據庫。

不要刪除 iblog 文件*。*您可能有innodb_fast_shutdown = 1,它可以讓您快速關閉,但需要在啟動時付出一些額外的努力。這些文件是必需的。

  1. 更改-在該部分中my.cnf添加或增加設置。innodb_buffer_pool_size``[mysqld]
  2. 停止 mysqld
  3. 啟動 mysqld

通常 70% 的可用 RAM 是一個不錯的值。

5.7.5 版實現了innodb_buffer_pool_size. 使用此版本(或更高版本),您可以

  1. 更改my.cnf以使其在任何重新啟動後生效。
  2. SET GLOBAL...在系統執行時。

不需要反彈。大小的變化將在正在執行的系統中優雅地執行。

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