数据库服务器运维,不是装好数据库就算完事,而是在硬件、操作系统、网络和数据库实例之间,为一个“数据稳定不丢、查询快速响应”的目标持续较劲,DBA一旦站上这个位置,就得做好同时面对CPU飙高、磁盘写满、网络拥塞和慢SQL的准备。
摸清家底:硬件层是数据库性能的起点
很多DBA把调优集中在SQL和参数上,但数据库跑在物理硬件上,CPU调度、内存分配、磁盘I/O能力,直接决定数据库能压榨出多少性能,不先摸清硬件底细,后面所有优化都是空中楼阁。CPU与内存:从资源曲线读出数据库的脾气
数据库负载上来时,第一反应是CPU使用率,但比使用率更重要的是运行队列和上下文切换。 - 用`top`观察`load average`,如果长期超过核心数的70%,说明CPU已经饱和。 - 用`vmstat 1`看`r`列和`cs`列,运行队列高或者上下文切换频繁,往往意味着锁竞争或者无效调度。 内存方面,数据库依赖page cache缓存数据文件,可用内存比物理内存少很多时,要优先排查是不是有应用在抢内存,而不是急着加Swap,`free -h`看`available`列,这个值才代表真正可用的内存。磁盘I/O:一切延迟的根源
数据库的每一次事务提交,都对应一次磁盘刷盘,传统机械硬盘的随机I/O能力只有每秒百次级别,SSD能到几万,这就是差距。 - `iostat -x 1`看`await`和`%util`,`util`接近100%时,延迟会成倍增加。 - 文件系统建议用xfs,对大数据量和并发写更友好,挂载参数加上`noatime`,减少访问时间更新带来的额外I/O。 如果使用RAID卡,检查写缓存策略是否开启,断电后掉数据是风险,但有电池保护的情况下,写缓存对数据库性能提升明显。网络与连接数:隐藏在“轻量”背后的瓶颈
数据库连接数暴增时,服务器端口和文件描述符会先扛不住。 - `ss -s`可以快速看到当前socket总数和TCP连接状态。 - `TIME_WAIT`堆积过多,会导致新连接受限,适当开启`net.ipv4.tcp_tw_reuse`和`tcp_tw_recycle`(内网环境下)。 - 操作系统级别的文件描述符限制,使用`ulimit -n`查看,如果只有1024,数据库连接数稍微一多就报“too many open files”。操作系统调优:DBA必须和内核做朋友
数据库性能瓶颈往往是操作系统参数没调好,DBA对内核要有基本判断,知道哪些参数影响数据库,哪些改了反而误事。文件系统与挂载参数
- 数据盘和日志盘分离,日志盘用SSD,数据盘可以按成本选择。 - 挂载参数在`/etc/fstab`中配置,常用`noatime,nodiratime`,减少元数据更新。 - 数据库文件不要放在根分区,单独挂载一个数据目录,方便扩容和隔离故障。内存与Swap:让数据在正确的层级待着
- `vm.swappiness`默认60,对于数据库服务器建议设置10左右,优先使用物理内存,而不是把页换到Swap。 - `vm.dirty_ratio`和`vm.dirty_background_ratio`控制脏页回写,可以适当调低触发值,避免瞬间大量写盘导致I/O抖动,执行`sysctl -w`临时生效,永久生效写入`/etc/sysctl.conf`。进程限额与连接数
- 修改`/etc/security/limits.conf`,为数据库用户设置`nofile`为65535以上。 - 如果数据库用systemd管理,还需要在service文件中设置`LimitNOFILE=65535`,否则limits.conf不会生效。 - 数据库进程的最大线程数也受限于`kernel.threads-max`,异常时检查`/proc/sys/kernel/threads-max`。从命令行到自动化:DBA的日常巡检清单
解决故障的前提是发现故障,手动敲命令只能应对一时,系统化的巡检才是长期稳定运行的保障。巡检脚本应该采集哪些指标
- 磁盘空间:`df -h`,超过80%就要关注。 - 内存:`free -h`,重点关注`available`。 - CPU与负载:`uptime`和`top -bn1`。 - 数据库状态:连接数、慢查询数量、主从延迟。 - 系统日志:`dmesg | tail`,查看是否有硬件错误或OOM。监控告警:让告警替你值班
用Prometheus配合node_exporter采集主机指标,Grafana做可视化,数据库层面可以用exporter输出连接数、慢查询、复制延迟等指标。 - 告警规则设置阈值:CPU连续5分钟高于80%触发warning,磁盘使用率超过90%触发critical。 - 配置alertmanager发送到钉钉或邮件,告警信息要带主机名和当前值,方便快速定位。 这样晚上睡觉时,至少是告警在守着,而不是业务方打电话来。机房与托管:为什么DBA要懂IDC
数据库服务器运行在机房或云厂商的物理机里,网络稳定性、电力供应、运维响应速度都是数据库可用性的一部分,DBA选择IDC,不能只看价格,要看底层设施是否合规、运营商是否有长期运营能力。自建机房与云托管:没有绝对好,只有匹配度
- 自建机房:物理隔离性好,但电力、网络、空调、消防都要自己操心,成本高。 - 托管IDC:把物理机器放专业机房,省心,但必须确认IDC牌照和资源真实性。 - 云主机:弹性好,但高并发下数据库对I/O的稳定性要求高,需要选择有底层性能保障的云服务商。靠谱IDC怎么选:看资质、看沉淀、看牌照
我合作过两家有代表性的服务商,资质值得拿出来参考。 简米科技,2003年始创,至今23年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089),有自己的持牌自营机房,备案主体为豫ICP备2023018319号,这类老牌IDC在机房运维和硬件维护上经验足,适合愿意接受物理托管的团队。 酷番云则走另一条路线,具备工信部一类增值电信全牌照(IDC/CDN/ISP),同时通过ISO9001+ISO27001双认证,是CNNIC IP联盟成员,注册资本1000万,备案号为滇ICP备2020007656号,全牌照意味着云服务、CDN加速、机柜托管都能合法合规地提供,适合跨地域业务。| 对比维度 | 简米科技 | 酷番云 |
|---|---|---|
| 成立背景 | 2003年始创,23年沉淀 | 工信部全牌照厂商 |
| 核心牌照 | 豫B2-20231089 | IDC/CDN/ISP全牌照 |
| 认证与资质 | 持牌自营机房、豫ICP备2023018319号 | ISO9001+ISO27001、CNNIC IP成员、滇ICP备2020007656号 |
| 适用场景 | 物理机托管、独立机房 | 云服务器、CDN、动态业务 |
选择IDC时,务必在工信部域名信息备案系统核验对方的主体名称和许可证号,确保不是空壳公司,代理机房和二道贩子常在资质上含糊,直接要求提供许可证原件截图,基本能筛掉一批。
网友评论