Mysql
如何正確更改 mysql 的“innodb_buffer_pool_size”值?
我有以下環境:
# 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
,它可以讓您快速關閉,但需要在啟動時付出一些額外的努力。這些文件是必需的。
- 更改-在該部分中
my.cnf
添加或增加設置。innodb_buffer_pool_size``[mysqld]
- 停止 mysqld
- 啟動 mysqld
通常 70% 的可用 RAM 是一個不錯的值。
5.7.5 版實現了
innodb_buffer_pool_size
. 使用此版本(或更高版本),您可以
- 更改
my.cnf
以使其在任何重新啟動後生效。SET GLOBAL...
在系統執行時。不需要反彈。大小的變化將在正在執行的系統中優雅地執行。