导致宕机的原因:
1. 运行环境: 35%,运行环境可以看做是支持数据库服务器运行的系统和资源集合,包括操作系统,硬盘以及网络
2. 性能:35%
3. 复制 20%
4. 各种类型的数据库丢失或者损坏以及其他问题。 10%
导致宕机的事件排行
1. 在运行环境的问题上,最普遍的问题就是空间耗尽
2. 在性能问题上,最普遍的宕机原因是运行很糟糕的SQL,还有服务器bug和错误的行为导致的
3. 索引设计也是影响宕机的原因
4. 复制问题通常是由于主备数据不一致
5. 数据丢失通常是由于误删除导致的。
如果你面试时候遇到面试题:MySQL数据库怎么优化,这时你应该从五个方面来回答:
1.硬件优化2.软件优化 3.SQL优化 4.架构优化 5. 流程制度化
今天着重讲一下硬件方面的优化:
一、服务器级别优化
百度公司的优化已经做的很好了,如果现在他们再去优化时候,就只能从硬件优化了
1. 服务器选型
SUN小型机、DELL730xd、HPDL380、IBM3850、云服务等 DELLR710
2. CPU个数、内存大小
大内存,高IO,是现代基于web的数据库的必备 (百度的服务器内存 :96G ---128个,2个实例 ,CPU 8到16颗)
3. 磁盘:SAS、SSD、FIO卡
减小寻道时间、旋转时间、传输时间
ssd (高并发)>sas(线上普通业务)>sata (线下业务)
4. RAID卡电池,RAID级别
WriteBack, ReadAheadNone,Direct,NoWrite Cache if Bad BBU
RAID0 >raid10 >raid5>raid1
5. 其他:网卡等(多块网卡)
二、操作系统级别优化
1. I/O调度策略
NOOP、CFQ、Deadline、Anticipatory
临时生效:echo “dadline” >/sys/block/sda/queue/scheduler
永久生效:/etc/grub.conf中kernel后加elevator=deadline(需要重启)
2. SWAP使用策略
echo"vm.swappiness=10">>/etc/sysctl.conf
https://www.percona.com/blog/2014/04/28/oom-relation-vm-swappiness0-new-kernel/
3. 文件系统
ext3、ext4还是使用XFS 准确来说XFS要优于ext系列
4. 避免NUMA问题
numactl --interleave=all即是允许所有的处理器可以交叉访问所有的内存
5. /tmp分区
tmpfs /dev/shm tmpfs defaults 00
设置tmpdir=/tmp之后,某些习惯性把文件写到tmp下的人要改一改习惯了,因为这些文件占用的是内存不是磁盘,而且如果不重启的话是一直占用
6. CPU
关闭服务器的节能模式
查看kondemand进程运行情况:
ps -ef |grepkondemand