概述
MySQL是一个强大的开源数据库。随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈。这里提供一些关于MySQL服务器硬件和OS(操作系统)调优的建议。
优化建议
1、足够的内存
有足够的物理内存,能将整个InnoDB文件加载到内存里 —— 如果访问的文件在内存里,而不是在磁盘上,InnoDB会快很多。
2、避免swap
要尽力避免 Swap 操作 — 交换(swapping)是从磁盘读取数据,所以会很慢。
3、使用电池供电的RAM(Battery-Backed RAM)
4、使用一个高级磁盘阵列
最好是 RAID10 或者更高。
5、避免使用RAID5
和校验需要确保完整性,开销很高。
6、分离操作系统和数据
将你的操作系统和数据分开,不仅仅是逻辑上要分开,物理上也要分开。操作系统的读写开销会影响数据库的性能。
7、日志与数据分开
将临时文件和复制日志与数据文件分开,后台的写操作影响数据库从磁盘文件的读写操作。
8、更多的磁盘空间等于更高的速度。
9、磁盘速度越快越好。
10、SAS优于SATA。
11、小磁盘的速度比大磁盘的更快,尤其是在 RAID 中。
12、使用电池供电的缓存 RAID(Battery-Backed Cache RAID)控制器。
13、避免使用软磁盘阵列。
14. 考虑用固态IO卡做数据分区
建议使用固态IO卡(不是磁盘)来作为数据分区 — 几乎对所有量级数据,这种卡能够支持 2 GBps 的写操作。
15、设置 swappiness 的值为0
在 Linux 系统上,设置 swappiness 的值为0,没有理由在数据库服务器上缓存文件,这种方式在Web服务器或桌面应用中用的更多。
16、尽可能使用 noatime 和 nodirtime 来挂载文件系统
没有必要为每次访问来更新文件的修改时间。
17、使用 XFS 文件系统
一个比ext3更快的、更小的文件系统,拥有更多的日志选项,同时,MySQL在ext3上存在双缓冲区的问题。
18、优化你的 XFS 文件系统日志和缓冲区参数
这是为了获取最大的性能基准。
19、使用合适的IO调度
在Linux系统中,建议使用 NOOP 或 DEADLINE IO 调度器 — CFQ 和 ANTICIPATORY 调度器已经被证明比 NOOP 和 DEADLINE 慢。
20、使用 64 位操作系统
这样就有更多的内存能用于寻址和 MySQL 使用。
21、将不用的包和后台程序从服务器上删除
主要是减少资源占用。
22、将使用 MySQL 的 host 和 MySQL自身的 host 都配置在一个 host 文件中
目的是没有 DNS 查找。
23、永远不要强制杀死一个MySQL进程
因为这样你将损坏数据库,并运行备份。
24、让你的服务器只服务于MySQL
后台处理程序和其他服务会占用数据库的 CPU 时间。
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~