我使用 MySQL 5.5.23-1~dotdeb.0 (Debian),这里是 my.cnf 的相关部分
default-storage-engine = innodb
innodb_buffer_pool_size = 3G
innodb_log_file_size = 256M
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 4M
innodb_additional_mem_pool_size = 20M
问题是,无论我为 innodb_buffer_pool_size 选择什么值(我也尝试了 4G、8G 和 8000M)。我得到以下信息mysql> SHOW global VARIABLES;
| innodb_buffer_pool_size | 134217728
调优入门脚本的结果:
INNODB STATUS
Current InnoDB index space = 621 M
Current InnoDB data space = 3.82 G
Current InnoDB buffer pool free = 0 %
Current innodb_buffer_pool_size = 128 M
Depending on how much space your innodb indexes take up it may be safe
to increase this value to up to 2 / 3 of total system memory
感谢您提供解决此问题的提示。
好的,感谢这个答案我发现我需要将配置 WITHIN [mysqld] 块放在 my.cnf 中才能生效。
我的错误是我刚刚在 my.cnf 文件的末尾附加了命令。
然后在 mysql restart 我遇到
要解决此错误,我需要删除日志
并按照 Rolando 所说的重新开始。
免责声明:不是 Debian 用户
根据评论,我建议以下
如果在制作了这些 my.cnf 文件并重新启动 mysql 之后,您仍然无法更改 innodb_buffer_pool_size,那么我会怀疑 mysql 二进制文件 mysqld。它很可能是源代码编译的,并且可能具有 InnoDB 硬编码的值。
要验证 mysqld 是否经过源代码编译,请在 mysqld 启动并运行时检查操作系统的进程列表。如果你看到几十个 mysqld 连接,很可能 mysqld 是源代码编译的。
从那里,我建议卸载 mysql 并下载 RPM 或 tar installltion。然后,查看 my.cnf 是否响应。
如果你想让 MySQL 理解你在 My.cnf 文件中的新参数,你必须重新启动 mySQL。