我在 5.5.23-1~dotdeb.0(Debian)上遇到了 innodb_buffer_pool_size 配置的一个奇怪问题:
无论我在 my.cnf 中为 innodb_buffer_pool_size 选择什么新值(例如 3G、4G、8000M),重新启动 mysql 后我仍然得到 innodb_buffer_pool_size = 128 M。
其他 my.cnf 参数的值可以更改,不会出现任何问题。
我还检查了文件系统上除了 /etc/mysql/my.dnf 之外没有其他 my.cnf。那么这是否意味着 innodb_buffer_pool_size = 128 M 是在编译时硬编码的?如果是,我该如何解决这个问题?如果不是,那么问题可能是什么原因造成的?谢谢
PS首先问这个问题在 dba 论坛上出现,但是那里的人们似乎对 mysql debian 包没有什么了解。
答案1
我需要将配置放在 my.cnf 中的 [mysqld] 块内才能生效。
更多细节这里
答案2
数字“128”和“M”之间有空格吗?至少在我的 mysql 安装中,它们之间禁止有空格,尽管我只在 5.1.x 版本上检查了这一点。
答案3
就我而言,问题是innodb_buffer_pool_instances
。
由于我正在减少innodb_buffer_pool_size
,所以每个实例变为少于 1GB,所以最终将其四舍五入。
当我还减少了实例,它最终改变了池大小!