努力
加油

在阿里云上购买云服务器后自己安装数据库有哪些注意事项?

在阿里云 ECS 上自建数据库,和直接买 RDS(云数据库)完全是两码事。RDS 是托管服务,你只管用;ECS 自建则是“全栈运维”,从操作系统内核到数据库配置,再到网络和安全,所有坑都得自己填。

如果你坚持要在 ECS 上装 MySQL、PostgreSQL 或 MongoDB,以下是几个最容易被忽视但致命的关键点,按优先级排列:

1. 安全组与防火墙:别只开 3306/5432

很多新手买完服务器,第一件事就是去数据库里设置 root@% 允许任意 IP 连接,然后发现连不上。

  • 误区:以为开了端口就能通。
  • 真相:阿里云有双层防护。
    1. 系统防火墙:你需要在 Linux 内部开启 firewalld 或 iptables,放行对应端口。
    2. 云安全组:这是最容易忽略的。必须在阿里云控制台的安全组入方向添加规则,源地址建议写死你的办公 IP 或公司出口 IP,绝对不要写 0.0.0.0/0,除非你有极强的访问控制逻辑。
  • 最佳实践:数据库端口永远不要对公网开放。通过 SSH 隧道连接,或者使用内网 IP 让应用服务器通过 VPC 内网访问。

2. 磁盘 IOPS 是性能瓶颈

ECS 自带的本地盘或普通云盘,IOPS 往往不够看。数据库是典型的 IO 密集型应用。

  • 注意:购买时务必选择 ESSD PL1 或 PL2 级别的云盘。普通高效云盘在高并发写入下延迟会飙升,导致查询超时。
  • 挂载优化:如果数据量大,建议将数据目录(如 /var/lib/mysql)单独挂载一块高性能云盘。不要用系统盘存数据,一旦系统崩溃或重装,数据全丢。
  • IO 调度器:Linux 默认的 IO 调度算法(如 deadline 或 cfq)可能不适合高并发数据库。对于 NVMe 磁盘,通常建议设置为 none 或 mq-deadline,具体需根据内核版本测试。

3. 内存与 Swap:千万别依赖 Swap

数据库最怕频繁交换内存到磁盘(Swap),这会导致性能断崖式下跌甚至进程被 OOM Kill。

  • 操作:在 /etc/fstab 中注释掉 swap 分区,或者直接 swapoff -a。
  • 替代方案:如果内存不足,优先升级 ECS 规格(加内存),而不是开启 Swap。数据库需要的是 RAM,不是虚拟内存。

4. 字符集与大小写敏感

  • 字符集:安装时务必指定 utf8mb4(MySQL)或 UTF8(PG)。默认往往是 latin1,后期改字符集极其痛苦,容易乱码且耗时极长。
  • 大小写敏感:
    • MySQL:Linux 下表名默认区分大小写,Windows 不区分。如果你之前是在 Windows 开发,迁移到 Linux ECS 后可能会报 "Table doesn’t exist"。建议在 my.cnf 中设置 lower_case_table_names=1,但这需要在初始化数据库实例前配置好,中途修改风险极大。
    • PostgreSQL:默认区分大小写,需在创建数据库时指定 collation。

5. 备份策略:云厂商不背锅

RDS 自带自动备份,ECS 自建全靠你自己。

  • 冷备:定期执行 mysqldump 或 pg_dump,脚本自动化,上传到 OSS(对象存储)。OSS 成本低,适合长期归档。
  • 热备:
    • MySQL:开启 binlog,配合 XtraBackup 工具备份。
    • 利用阿里云的 快照功能:对数据盘设置定时快照策略。这是最可靠的底层恢复手段,比数据库层备份更彻底。
  • 异地容灾:单点故障是致命的。考虑搭建主从复制(Master-Slave),从库放在另一个可用区(Zone)。

6. 监控与告警:别等挂了才知道

ECS 自带的云监控只能看到 CPU、内存、带宽。你看不到 SQL 慢查询、锁等待、连接数激增。

  • 必须部署:
    • Prometheus + Grafana:通过 node_exporter 采集主机指标,通过 mysqld_exporter 采集数据库指标。
    • 慢查询日志分析:开启 slow_query_log,并设置阈值(如 >1s)。定期分析,否则数据库会越来越慢。
  • 告警:当连接数达到最大值的 80%、CPU 持续高于 90%、磁盘空间低于 20% 时,必须通过钉钉、短信或邮件告警。

7. 权限最小化原则

  • 禁止 root 远程登录:创建一个专用用户,只授予必要库表的 SELECT/INSERT/UPDATE/DELETE 权限。
  • 应用账号隔离:不同业务模块尽量使用不同的数据库账号,避免一个模块被攻破影响全局。

8. 升级与维护窗口

  • 内核更新:Linux 系统漏洞补丁要定期打,但不要在业务高峰期重启。
  • 数据库版本:MySQL 8.0 比 5.7 性能好,但兼容性有差异。升级前务必在测试环境验证。
  • 停机维护:任何大版本升级或硬件变更,都需要提前规划停机窗口,并通知相关业务方。

总结:什么时候该转 RDS?

如果你发现以下情况,建议尽快迁移到阿里云 RDS:

  1. 团队没有专职 DBA,运维人力紧张。
  2. 业务增长快,需要弹性扩容(RDS 可秒级升配,ECS 需停机或复杂迁移)。
  3. 对数据安全性要求极高,无法承受自建备份失败的风险。
  4. 经常遇到因配置不当导致的性能问题,排查成本过高。

自建数据库是技术人的乐趣所在,也是责任的深渊。每一步都要想清楚“如果明天挂了,怎么救”。