刚拿到一台云服务器,第一件事就是装数据库。这事听着简单,真动手的时候,不少人会栽跟头——要么装完了连不上,要么三天两头被黑客扫端口,要么跑个查询CPU直接飙到100%。其实部署数据库这事儿,只要按对路子走,真没那么玄乎。今天我就把这三步拆开细说,从选操作系统到配置防火墙,再到日常运维,全是踩过坑换来的经验。

第一步选对操作系统,这个决定后续所有操作的顺手程度。很多人图省事直接装Windows Server,结果发现数据库跑起来吃内存像喝水,远程桌面还隔三差五断连。说句实在话,Linux才是数据库的最佳搭档。Ubuntu 22.04 LTS或者CentOS 7.9都是稳妥选择,包管理工具完善,社区资料丰富。装系统的时候记得勾选SSH服务,端口默认22别动,后面配防火墙的时候再改。网络设置那块,IPv4选静态地址,DNS填阿里或腾讯的公共DNS,这样解析速度快。磁盘分区别偷懒,把/var单独分出来,数据库数据文件和日志都往这里面写,以后扩容也方便。
第二步安装数据库,这里头讲究多。拿MySQL 8.0举例,别直接用yum装系统自带的版本,那个通常太老。去官网下载官方仓库包,或者用APT添加MySQL的官方源。装完以后第一件事跑安全配置脚本,设置root密码,移除匿名用户,禁止root远程登录。然后修改配置文件,重点调三个参数:innodbbufferpoolsize设成物理内存的70%,maxconnections根据业务量调,一般中小应用设个500就够用。关键一步是改端口,默认3306太招摇,改成3307或者更高位数,能挡掉百分之九十的扫描攻击。改完端口别忘了在云服务器的安全组里放行新端口,同时把旧的3306关掉。
第三步配置防火墙和用户权限,这一步直接关系到数据库能不能扛住攻击。Linux自带的iptables或者firewalld都要配,只允许云服务器内网IP和固定的公网IP访问。生产环境千万别把数据库端口开放给0.0.0.0/0,这是最愚蠢的做法。创建应用用户时遵循最小权限原则,给个增删改查的权限就行,别动不动就给super权限。每个业务用独立的数据库和用户名,这样就算某个业务被拖库,其他业务也安全。日志记录也要打开,慢查询日志设个1秒,错误日志设成每天轮转,保留30天。定期检查日志文件大小,超过1GB就归档压缩。
日常运维这块容易被忽视。数据库装好只是开始,真正的考验在后面。每天凌晨跑全量备份,中午跑增量备份,备份文件存到对象存储里,至少保留7天。写个脚本定期检查数据库连接数、缓存命中率、慢查询数量,超过阈值就发告警。内存使用率超过80%要排查,别等系统OOM杀进程才发现。定期清理binlog,保留3天的量就够了,太多会撑爆磁盘。索引重建也别忘,根据业务特点设个每周或每月的定时任务,碎片率超过30%就重建。
安全加固要持续做。操作系统层面,关闭不必要的服务,只留SSH和数据库端口。SSH改用密钥登录,禁用密码认证。安装Fail2ban,连续登录失败5次就封IP24小时。数据库层面,开启SSL加密传输,防止中间人攻击。关闭local-infile,防止SQL注入利用LOAD DATA漏洞。定期查看数据库的错误日志和审计日志,发现有异常登录尝试就追查来源IP。版本升级也要重视,每个大版本发布后测试兼容性,没问题就升级。
性能调优是门手艺活。刚开始用默认配置跑,观察一到两周,然后根据监控数据做调整。缓存命中率低于95%就增加buffer pool大小。排序和临时表都在磁盘上做,那就增大sortbuffersize和tmptablesize。连接数不够用,别盲目调高,先看慢查询是不是太多。磁盘IOPS打满了,检查是不是有全表扫描,加索引或者优化查询。CPU负载高,分析慢查询日志,找到最耗时的查询语句,改写SQL或者增加缓存层。
说个容易被忽略的细节:文档。把操作系统版本、数据库版本、配置文件路径、备份策略、告警阈值、常见故障处理步骤都写清楚。下次出问题或者交接给同事,不用靠记忆翻聊天记录。数据库部署不是一次性动作,而是持续迭代的过程。今天装好了,明天还要监控,后天要调优,大后天要升级。但核心思路不变:安全第一,稳定第二,性能第三。按这三步走,至少能保证数据库跑得稳、跑得久。


