我正在准备一个基于Drupal 6.x的大型安装,并且已经安装了一个专用的8GB内存的MySQL服务器。 Drupal 6.x只使用MyISAM引擎,通过两个Web节点将有大约500个并发用户使用该站点。
这里是一个mysql调优引擎分析的转储,我早上一大早拿着它,因为我不确定这是否应该在大量使用期间运行: http : //pastie.org/3279741 。
我在mysqlconfiguration方面不是很有经验,所以我正在寻求帮助,以确定my.cnf文件的正确configuration,以便我可以承受大量的负载。 我需要一个相当紧迫的基础,所以不要寻求理解的资源(至less不是现在!)。
提前致谢!
我不知道drupal。 但正如你所问,你需要专门的MyIsam MySqlconfiguration。 对于MyIsam,我有一些build议
key_buffer_size
密钥缓冲区的大小,用于cachingMyISAM表的索引块。 请不要将其设置为大于可用内存的30%,因为操作系统还需要某些内存来caching行。 即使你没有使用MyISAM表格,你也应该把它设置为8-64M,因为它也可以用于内部临时磁盘表格。 所以你应该从2GB到3GB 。
read_buffer_size
用于执行MyISAM表的全表扫描的缓冲区的大小。 每个线程分配,如果需要全面扫描。 您应该将其设置为8MB到16MB。
read_rnd_buffer_size
在sorting后按sorting顺序读取行时,通过此缓冲区读取行以避免磁盘search。 如果将其设置为较高的值,您可以提高ORDER BY的性能。 根据需要分配每个线程。
bulk_insert_buffer_size
MyISAM使用特殊的树形caching来进行批量插入(即INSERT … SELECT,INSERT … VALUES(…),(…),…和LOAD DATA INFILE)。 这个variables限制了每个线程以字节为单位的caching树的大小。 将其设置为0将禁用此优化。 请勿将其设置为大于“key_buffer_size”以获得最佳性能。 当检测到大容量插入时,将分配此缓冲区。 将其设置为512 MB到1GB。
myisam_sort_buffer_size
当MySQL需要在REPAIR,OPTIMIZE,ALTER表语句以及LOAD DATA INFILE中重build索引到一个空表时,这个缓冲区被分配。 它是按每个线程分配的,所以要注意大的设置。 所以你应该把它设置为2M
myisam_max_sort_file_size
在重新创build索引时,允许使用临时文件MySQL的最大大小(在REPAIR,ALTER TABLE或LOAD DATA INFILE期间,如果文件大小比这大,索引将通过密钥caching创build慢)。把它设置为你所需要的。
myisam_repair_threads
如果一个表有多个索引,MyISAM可以使用多个线程通过并行sorting来修复它们。 如果你有多个CPU和大量的内存,这是有道理的。把它设置为1。
myisam_recover
自动检查并修复未正确closures的MyISAM表。
实际上,Drupal(甚至是6.x)更喜欢在InnoDB上运行。 是的,MyISAM是默认的,但是这只是因为有意识地支持不提供InnoDB的主机 – 参见http://drupal.org/node/301362 。 因此,我强烈build议您重新考虑您对MyISAM的独占使用。
一个警告确实适用于这个:search_ *表使用与InnoDB不兼容的FULLTEXT索引。 离开那些MyISAM,或者更好,用Apache Solr之类的东西replace它们的function。
如果在转换到InnoDB之后使用mysqltuner.pl,除非它最近已经更新,否则不用费神告诉你设置innodb_buffer_pool,这是InnoDB最大的性能关键。
从MyISAM到InnoDB的转换过程是无损和相对快速的; 它只是一个简单的ALTER TABLE sometable ENGINE=InnoDB 。 在做这件事之前一定要先设置innodb_buffer_pool,否则你可能会等待很长时间!
最后,我想简单地提一下,具有大规模Drupal部署经验的托pipe服务提供商会为您处理大部分或所有这些步骤。 考虑与BlackMesh(为我工作的人)或者在Drupal社区中活跃的另一个主持人交谈。 随着您继续发展您的网站,他们可能会提供额外的Drupal特定的支持和扩展build议。
祝你好运!
是的,你想在实际负载下运行,而不是假装载。 这些数字是关于事情在过去如何performance的,所以如果这不是真正的负载,他们将不会尽可能地帮助他们。
只要做mysqltuner告诉你。
如果您没有时间学习调优产品的细节,并且只想遵循最佳实践,那么mysqltuner就是为您服务的! 它确实如此:捕获最佳实践build议,并根据您的实际使用情况告诉您要更改的内容。