去mangodb官网点下载按钮,十次有八次会卡在“Generating download link”那个转圈上。这破事我碰到过不下五回,每次都得清缓存换浏览器折腾半天。后来发现直接复制那个带版本号的直链,丢到迅雷里反而秒下——官网那套动态生成链接的机制,对国内网络环境实在不太友好。
下载这事看着简单,坑全在细节里。mangodb的安装包分MSI和ZIP两种格式,Windows用户建议直接上MSI,双击就能跑,省得配环境变量时手抖把path改崩。Linux那边就麻烦点,官方源在国内慢得像蜗牛爬,我一般直接换清华的镜像站,速度能拉满到十几兆每秒。要是图省事用apt-get装,版本大概率是老的——上次我就栽在这上面,装完才发现是4.2版,连事务功能都残缺。
装完之后才是真正的分水岭。默认配置下mangodb只会监听localhost,想远程连还得手动改配置文件。有个朋友照着教程改了bindIp,结果忘了开防火墙端口,折腾一晚上连不上,最后发现是安全组规则没放行。这种问题官方文档写得云里雾里,不如直接看日志报错来得快——mongod --dbpath启动时带上--verbose参数,报错信息能详细到具体哪行配置出了问题。
还有个容易忽略的坑是存储引擎。新版本默认用WiredTiger,但如果你是从老版本升上来的,数据文件可能还是MMAPv1格式。这时候直接跑新版本会报版本不兼容的错,得先用mongod --repair做数据迁移。别问我怎么知道的——上周刚帮同事收拾过这烂摊子,他那个生产库差点就废了,还好提前做了快照备份。
说到备份,mangodb的mongodump工具导出的数据是BSON格式,跟MySQL的SQL文件完全是两码事。想恢复到别的数据库得先转格式,麻烦得很。我现在都直接用文件系统快照备份,配合oplog做时间点恢复,比官方工具省心多了。
最后说个冷门技巧。很多人不知道mangodb的下载页面其实有历史版本存档,在版本号后面加-previous后缀就能看到。上周为了复现一个生产环境的老bug,我翻到3.6版的下载链接,居然还能用——这点比某些把老版本全下架的数据库厂商厚道多了。不过话说回来,能用新版就别守着老版本不放,4.4以后的分布式事务和聚合管道增强,用过的都回不去了。