我的.cnf的变量应该给出什么内存?
-
16-10-2019 - |
题
安装MySQL服务器非常容易。但是,安装后,配置服务器是DBA的重要任务。
拥有2GB的RAM和250GB的磁盘空间,我应该如何调整MySQL Server,以表现良好?
InnoDB发动机还应该有适当的配置。
解决方案
这是我对InnoDB的一些建议。根据我的经验,缓冲池的大小是最重要的,因为您可以在缓存中保留的数据越多,系统使用磁盘iOS的时间就越少。
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
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
该管理IBDATA文件的增量增加了。因此,如果您将一个非常少量的10MB数字放在,那意味着InnoDB如果您有很多插入物,将花费大量时间来增加其IBDATA文件。
innodb_autoextend_increment = 128M
在哪里放置事务日志。如果您可以使用单独的控制器将事务日志放在其他磁盘上,这也将减少争议
innodb_log_group_home_dir = /tlog/
日志文件的大小是多少
innodb_log_file_size = 500M
缓冲池尺寸的25%,允许大型交易无需写入磁盘而运行
innodb_log_buffer_size = 384M
我还定义了临时目录的去向。定义MySQL创建临时文件的位置。减少争执的另一种方法。
我通常留出足够的空间,以允许服务器上最大的表格重新索引。
tmpdir=/opt/tmp/
并且错误日志很有用,以防万一出现问题并且需要麻烦拍摄。
log-error=/var/log/mysql.err
另外,如果您有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