说起来,2012016年那会儿,搞数据库安装还是个挺折腾人的活儿。不像现在,云上点几下就完事,那时候得自己动手,从下载安装包开始,一步步走到配置参数、初始化数据,每一步都能踩坑。尤其是对刚入行的新手,光看官方文档那密密麻麻的步骤,就能让人头皮发麻。但说实话,正是这种“从零搭建”的过程,让很多人真正理解了数据库怎么工作,而不是只会敲SQL语句。

先说安装前的准备工作,这一步最容易被忽略,也最容易翻车。2016年主流的数据库,像 MySQL 5.7、PostgreSQL 9.5、SQL Server 2016,对操作系统版本都有要求。比如 MySQL 5.7 在 CentOS 6 上跑得好好的,换到 CentOS 7 就得注意 libaio 和 numactl 这两个依赖包有没有装。我当时帮朋友装一个 MySQL,愣是卡在“找不到共享库”的报错上,折腾了俩小时才发现是少了 libaio。所以第一步,别急着双击安装包,先确认系统版本、防火墙端口(3306、5432 等)、SELinux 是否关闭,以及磁盘空间是否足够。尤其是生产环境,数据盘最好单独挂载,别和系统盘挤在一起,否则日志写满,整台机器都可能宕掉。
接下来是安装包的选择和下载。2016 年国内网速还没那么快,从官网拉一个几百兆的安装包,得等半天。而且不同发行版之间差别很大,比如 MySQL 有 RPM 包、源码编译包、通用二进制包,还有 Windows 的 MSI。很多人图省事直接选 RPM,结果发现依赖冲突,卸载又卸不干净,系统包管理器都乱了。我的经验是,Linux 上尽量用通用二进制包,解压到指定目录后手动配置环境变量和启动脚本。虽然多几个步骤,但后续升级、迁移都更方便。Windows 上就简单多了,直接点下一步,但要注意安装路径别带空格,否则某些服务启动时会报路径错误,这在当年的 SQL Server 2016 里是常见坑。
安装过程中的参数设置,是区分高手和菜鸟的地方。比如 MySQL 的 innodbbufferpoolsize,默认只有 128 MB,2016 年的服务器普遍有 16 GB 内存,不改这个参数,跑个中等查询就会把磁盘 I/O 打满。还有 logbin,默认是关闭的,很多人装完才发现没开二进制日志,想恢复数据时就来不及。SQL Server 2016 的 TempDB 配置也类似,默认只有一个数据文件,并发高时容易产生等待,得根据 CPU 核心数拆分成多个文件。这些参数在安装时没设好,后面再改就要重启服务,对业务影响很大。所以安装前最好列个清单,明确哪些该开、哪些该关,心里有数。我当时给公司装生产库,光参数配置就写了三页纸,每项都标了推荐值和解释。
服务启动和初始化也是重头戏。MySQL 5.7 开始默认用 root@localhost 登录,密码随机生成在 /var/log/mysqld.log 里,很多人第一次登录就卡在 “Access denied”,其实是没看日志。PostgreSQL 更直接,初始化完默认只监听 localhost,远程连接还得改 postgresql.conf 里的 listenaddresses 和 pghba.conf。SQL Server 2016 有个新特性是“混合模式身份验证”,默认只开 Windows 身份验证,如果要用 SQL 登录,安装时必须勾选。这些细节官方文档都写得清楚,但人一紧张就容易漏。2016 年有个段子,说 DBA 装完数据库第一件事是重启服务器,因为忘了把服务设为开机自启。虽然夸张,但确实说明大家容易在这一步掉链子。
安装完后的验证和测试,很多人觉得麻烦就跳过了,却是大隐患。2016 年我见过一个案例,某公司装完 MySQL 后直接往库里导数据,结果第二天发现所有表都用了 MyISAM 引擎,不支持事务。原来安装时默认引擎是 MyISAM,而他们以为装的是 InnoDB。所以装完后务必跑几个简单测试:建个表看看引擎,插几条数据试试事务回滚,查一下进程列表看有没有异常连接。还可以用 sysbench 或 mysqlslap 做个压力测试,确认性能指标正常。SQL Server 2016 有个 DMV 视图,比如 sys.dmosperformance_counters,能直接查看缓存命中率和 I/O 延迟,这些数据比“感觉挺快”靠谱得多。
安全配置这块,2016 年虽然没有现在这么卷,但基本操作不能省。MySQL 的 root 账号默认没有密码复杂度要求,很多开发库直接用 root 连,密码设成 123456,结果被扫爆了都不知道。至少要做以下几件事:改 root 密码、删除匿名用户、禁止远程 root 登录、限制最大连接数。PostgreSQL 默认的 trust 认证方式太宽松,最好改成 md5。SQL Server 2016 有个“审核”功能,可以记录登录失败次数,默认没开,建议打开。虽然这些步骤看起来繁琐,但等出了事故再补救,代价就大了。2016 年全球数据库泄露事件里,有相当一部分是弱密码和默认配置惹的祸。
说说升级和备份的坑。2016 年很多数据库版本正处于更新周期,比如 MySQL 5.7 到 5.7.18 之间修复了不少 bug。装完最新稳定版后,最好订阅官方邮件列表,关注安全公告。备份策略也别只想着装完再配,安装时就得规划好:数据目录和日志目录分开,备份脚本写好,cron 任务设好。我认识一个 DBA,装完库第二天就跑了个全量备份,结果发现备份文件占满了磁盘,因为没配置压缩。这些教训都是真金白银换来的。
回过头看,2016 年的数据库安装,与其说是技术活,不如说是“排雷”的过程。每一步都可能隐藏坑,但只要认真看文档、多做测试、别图省事,基本都能顺利搞定。而且这种亲手搭建的经历,能让你对数据库的运行机制有更深的理解,比现在一键部署的“黑盒子”要扎实得多。如果让我给当年的自己提个建议,那就是:装库前多花半小时规划,装完后多花一小时验证,这比出问题通宵排查划算多了。


