增加InnoDB缓冲池大小


11

我在设置MySql InnoDB的缓冲池大小和日志文件大小时遇到​​困难。我距离MySql专家还很远,但是一直在阅读,看来要更改此设置,只需将这些行添加到我的/etc/mysql/my.cnf

# Set buffer pool size to 50-80% of your computer's memory
innodb_buffer_pool_size=2048M
innodb_additional_mem_pool_size=512M
#
# Set the log file size to about 25% of the buffer pool size
innodb_log_file_size=256M
innodb_log_buffer_size=128M

该服务器大约有7GB的内存,并且还在运行Web服务器,因此我认为这些数字应该是一个不错的起点。保存并重新启动服务器后,更改似乎没有生效。我尝试运行Mysqltuner,该数据库报告缓冲池仍为16.0M。知道我在做什么错吗?如果您想了解更多配置文件,请告诉我。谢谢!


什么分布?您在使用发行版的软件包还是其他?您如何启动mysql?简而言之,您安装了什么?安装了什么?如何安装?
navaho 2012年

它是Ubuntu服务器x64顶部的默认灯堆
tgrosinger 2012年

我认为/ opt / lampp / etc中还有另一个配置文件,我认为它可以正常工作。
tgrosinger 2012年

Answers:


7

确保这些行在该[mysqld]节内,即在[mysqld]其他任何行之后([section]例如之前)[mysqldump]


它们在正确的部分中,在[mysqldump]之前的[mysqld]中
tgrosinger 2012年

2

检查您的MySQL错误日志以获取信息-很可能位于该信息中/var/lib/mysql-另外,这是具有bigmem内核的32位系统吗?如果是这样,MySQL的地址不能超过2GB。

另外-您需要从MySQL本身确认缓冲池的大小-考虑到默认值为128M ,16MB的声音有点小。您可以通过在该服务器的MySQL会话中键入“ SHOW VARIABLES LIKE'innodb_buffer_pool_size”来确认。结果以字节为单位。


由于某种原因,我无法进入该目录。当我在/ var / lib上执行ls时,我可以看到它,但是当我尝试cd进入它时,我得到“权限被拒绝”。如果我尝试以sudo的身份进入cd,则显示“无此文件或目录”。有什么想法吗?它是Ubuntu Server的64位安装。
tgrosinger 2012年

你应该张贴您的my.cnf(/etc/my.cnf中或在Debian可能/etc/mysql/my.cnf)
thinice

另外-您需要从MySQL本身确认缓冲池的大小-考虑到默认值为128M ,16MB的声音有点小。您可以通过在该服务器的MySQL会话中键入“ SHOW VARIABLES LIKE'innodb_buffer_pool_size”来确认。结果以字节为单位。
Thinice 2012年

1
sudo cd将无法使用,因为sudo会创建具有正确权限的子shell并在完成后将其关闭,从而使您离开开始的位置。试试吧sudo -s
Ladadadada 2012年

因此,当我使用SHOW VARIABLES LIKE ...时,它说缓冲池大小为16777216,我相信实际上是16M。这是my.cnf:hastebin.com/binaqeforu.vala 非常感谢!
tgrosinger 2012年

2

就我而言,问题是innodb_buffer_pool_instances

由于我正在减少innodb_buffer_pool_size磁盘空间,因此每个实例不足1GB,因此最终四舍五入。

当我还减少实例时,它最终改变了池的大小


0

可能是您使用--no-defaults或(-no-defaults)启动mysql,这导致它根本不加载配置。还有--defaults-file(或-default-file,不确定),这会导致它加载特定的配置。还要检查该配置是否与您编辑的配置不同。

您可以尝试从开始:

--innodb_buffer_pool_size=2048M --innodb_log_buffer_size=512M

或者检查已经开始使用的参数,然后查看其中一个是否导致其省略了配置。


我如何查看它在ubuntu中的启动方式?我习惯于将其添加到rc.d文件中,但是我在这里看不到任何类似内容。
tgrosinger 2012年

Arch使用BSD Style Init,而Ubuntu使用SysV Init。因此,/ etc / init.d中有一个文件可以启动它,而/ etc / defaults中可能有一个设置了选项的文件。通过使用类似于'ps -ef |的东西 grep mysql”,您可以看到它当前正在使用哪些选项。
juwi 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.