应该给 my.cnf 的变量什么内存?

Abd*_*naf 6 mysql database-recommendation mysql-5.1

安装 MySQL 服务器非常简单。但是,在安装之后,配置服务器对于 DBA 来说是一项重要的任务。

拥有 2GB 的 RAM 和 250GB 的磁盘空间,我应该如何调整 MySQL 服务器以使其性能良好?

InnoDB 引擎也应该有适当的配置。

Cra*_*ein 8

以下是我对 InnoDB 的一些建议。根据我的经验,缓冲池大小是最重要的,因为缓存中保存的数据越多,系统使用磁盘 IO 的时间就越少。

http://dev.mysql.com/doc/refman/5.5/en/innodb-buffer-pool.html 这是缓冲池,缓存数据和索引

innodb_buffer_pool_size=(In Mb, 80% of available RAM),对于 2GB,我会放 1536。

如果您开始看到交换,请仔细监控您的系统并准备减少此变量。

http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html#sysvar_innodb_additional_mem_pool_size 这是存储元数据的地方。如果你有很多表,增加它会很有用。

innodb_additional_mem_pool_size=16M
Run Code Online (Sandbox Code Playgroud)

http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html#sysvar_innodb_data_file_path 这里可以定义ibdata文件的位置。如果您可以将 ibdata 文件放在使用单独控制器的单独磁盘上,它将减少争用。小心使用此选项。在使用这个变量之前,请确保你阅读了它。如果你的 ibdata 文件需要超过 29G,MySQL 会停止它所做的一切,等待你添加空间。

innodb_data_file_path = ibdata1:128M:autoextend:max:29G
Run Code Online (Sandbox Code Playgroud)

这管理以什么增量增加 ibdata 文件。所以如果你输入一个非常小的数字,比如 10MB,那意味着如果你有很多插入,innodb 会花很多时间来增加它的 ibdata 文件。

innodb_autoextend_increment = 128M
Run Code Online (Sandbox Code Playgroud)

在哪里放置事务日志。如果您可以将事务日志放在具有单独控制器的不同磁盘上,这也将减少争用

innodb_log_group_home_dir = /tlog/
Run Code Online (Sandbox Code Playgroud)

日志文件的大小是多少

innodb_log_file_size = 500M
Run Code Online (Sandbox Code Playgroud)

缓冲池大小的 25%,允许运行大型事务而无需写入磁盘

innodb_log_buffer_size = 384M
Run Code Online (Sandbox Code Playgroud)

我还定义了临时目录的位置。定义 MySQL 创建临时文件的位置。减少争用的另一种方法。

我通常会留出足够的空间来重新索引服务器上最大的表。

tmpdir=/opt/tmp/
Run Code Online (Sandbox Code Playgroud)

并且错误日志非常有用,以防万一出现问题并且您需要进行故障排除。

log-error=/var/log/mysql.err
Run Code Online (Sandbox Code Playgroud)

另外,如果你有4个以上的cpu,这些变量可以增加 innodb_thread_concurrency = 8 innodb_file_io_threads=4

这与innodb无关。您可以使用其他与 innodb 无关的变量。我在底部添加了它们,但它们是直接从我用于测试的服务器中获取的。避免只是复制和粘贴它们。根据您使用的版本阅读 MySQL 的文档是做出正确选择的最佳方式。

# Fine Tunning
key_buffer              = 512M
max_allowed_packet      = 16M
thread_stack            = 128K
thread_cache_size       = 8
join_buffer_size        = 64M
sort_buffer_size        = 16M
myisam_max_sort_file_size = 1024M
tmp_table_size = 256M
max_heap_table_size = 257M
myisam_sort_buffer_size=1024M

table_cache            = 1000
thread_concurrency     = 8
# * Query Cache Configuration
#
query_cache_limit       = 16M
query_cache_size        = 16M


skip-name-resolve
Run Code Online (Sandbox Code Playgroud)