环境:ubuntu 14.04
原版本:mongodb 2.6.10
目标版本:mongodb 3.2.17
方式:apt 卸载 → 官方源安装 → 手动配置 systemd
是否成功:已上线,mongo shell 可连
背景
老机器上跑的是 ubuntu 14.04,mongodb 还是 2.6,版本太老,连 数据导出为csv格式 都不支持。不想重装系统,也不想折腾 docker,就干脆原地升级一把,记录如下,全程可复制粘贴。
第一步:停服务 + 卸载旧版本
sudo pkill mongod sudo apt-get purge mongodb mongodb-server mongodb-clients sudo apt-get autoremove sudo apt-get autoclean
注意:mongodb-org 是官方包,旧系统里没有,卸载时提示找不到无视即可。
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
e: 无法定位软件包 mongodb-org则使用下面语句
sudo apt-get purge mongodb mongodb-server mongodb-clients mongodb
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
第二步:添加 mongodb 3.2 官方源
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv ea312927
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
sudo apt-get update
提示 appstreamcli 崩溃无视,继续往下走。
第三步:安装指定版本(锁定 3.2.17)
sudo apt-get install -y \ mongodb-org=3.2.17 \ mongodb-org-server=3.2.17 \ mongodb-org-shell=3.2.17 \ mongodb-org-mongos=3.2.17 \ mongodb-org-tools=3.2.17 \ --allow-unauthenticated
加 --allow-unauthenticated 是因为 gpg 提示没公钥,懒得管,直接装。
第四步:锁定版本,防止意外升级
echo "mongodb-org hold" | sudo dpkg --set-selections echo "mongodb-org-server hold" | sudo dpkg --set-selections echo "mongodb-org-shell hold" | sudo dpkg --set-selections echo "mongodb-org-mongos hold" | sudo dpkg --set-selections echo "mongodb-org-tools hold" | sudo dpkg --set-selections
第五步:手动创建 systemd 服务(关键)
控制台输入mongo:
mongodb shell version: 3.2.17 connecting to: test 2025-09-30t18:56:06.204+0800 w network [thread1] failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: errno:111 connection refused 2025-09-30t18:56:06.204+0800 e query [thread1] error: couldn't connect to server 127.0.0.1:27017, connection attempt failed : connect@src/mongo/shell/mongo.js:229:14 @(connect):1:6 exception: connect failed
使用sudo systemctl start mongod启动mongodb服务发现报错:
failed to start mongod.service: unit mongod.service not found.
which mongod && mongod --version
/usr/bin/mongod
db version v3.2.17
git version: 186656d79574f7dfe0831a7e7821292ab380f667
openssl version: openssl 1.0.2g 1 mar 2016
allocator: tcmalloc
modules: none
build environment:
distmod: ubuntu1404
distarch: x86_64
target_arch: x86_64查看mongo的版本发现已经成功安装,只是无法使用systemd去启动,这是因为mongodb 3.2 不自带 systemd 文件,必须自己写:
sudo nano /etc/systemd/system/mongod.service
mongod.service文件里面粘贴以下内容:
[unit] description=mongodb database server after=network.target [service] user=mongodb group=mongodb execstart=/usr/bin/mongod --config /etc/mongod.conf pidfile=/var/run/mongodb/mongod.pid restart=always [install] wantedby=multi-user.target
保存后执行:
sudo systemctl daemon-reload sudo systemctl enable mongod sudo systemctl start mongod
第六步:验证是否成功
sudo systemctl status mongod
mongod.service - mongodb database server
loaded: loaded (/etc/systemd/system/mongod.service; enabled; vendor preset: enabled)
active: active (running) since 二 2025-09-30 19:04:00 cst; 2s ago
main pid: 9560 (mongod)
cgroup: /system.slice/mongod.service
└─9560 /usr/bin/mongod --config /etc/mongod.conf
9月 30 19:04:00 dblab-virtualbox systemd[1]: started mongodb database server.mongo
输出:
mongodb shell version: 3.2.17 connecting to: test > show dbs admin 0.000gb local 0.000gb
总结
| 步骤 | 是否必须 | 备注 |
|---|---|---|
| 卸载 2.6 | ✅ | 避免冲突 |
| 添加官方源 | ✅ | 3.2 不在默认源里 |
| 安装指定版本 | ✅ | 防止装成 4.x |
| 手动 systemd | ✅ | 3.2 不自带,必须写 |
| 数据迁移 | ❌ | 本次是空数据,直接升级 |
后记
如果你也是老 ubuntu + 老 mongodb,不想重装、不想迁机器,这套流程直接抄作业就行。
有数据的老哥如果担心数据库的数据丢失或损坏,记得先 dump,我这是空库,直接干。
以上就是ubuntu原地升级mongodb全过程的详细内容,更多关于ubuntu原地升级mongodb的资料请关注代码网其它相关文章!
发表评论