背景
回顾人们在开始工作之前,都会问自己这样一个问题:给你一台16G内存的Innodb专用数据库服务器,如何配置才能让其稳定、高效地给典型的Web应用提供服务?
硬件
内存:内存对于Innodb数据库至关重要!16-32G内存
CPU:虽然CPU配置依赖于应用,但一般来说,就CPU来说,2*Dual Core CPUs已是非常好的配置,若使用two Quad Core CPUs 会增加一些扩展性的问题。
硬盘:一般来说,硬盘需要使用6-8个硬盘做成一个RAID就足够了。RAID10比RAID5的效果要好。
软件
操作系统
- 操作系统采用64位的,切勿在64位的机器上使用32位的操作系统。
- linux操作系统使用LVM将更高效
- 大多数情况下EXT3文件系统就足够了,但一些特殊项目中会使用XFS文件系统。
- 如果使用参数innodb_file_per_table,虽然作用很小,还是建议使用选项noatime和nodiratime。
- 确保swap充足
MySQL数据库设置
innodb_buffer_pool_size :70-80%可用内存。
innodb_log_file_size :取决于您的恢复速度需求,一般来说256M已经足够。
innodb_log_buffer_size :4M能满足大多数情景,若使用很多大字段需适当增加该值,目前看到的状况8M即可。
innodb_flush_log_at_trx_commit=2 :若不关心事物的ACID特性的话,在系统崩溃时,设置这个值可以在1~2秒中释放事务。特别是在有较多短连接的情况下,该参数尤为重要。
innodb_thread_concurrency=8:即使当前的InnoDB可扩展性修复具有有限的并发性也有帮助。8这个数据能满足大多数情况,但实际运用起来可能比这个值大也有可能比这个值小。
innodb_flush_method=O_DIRECT :大多数情况下可提高性能,但没有RAID的话,会影响写速度。