深入解析:Ubuntu 原地升級 MongoDB 全攻略
環境: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:6exception: 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,我這是空庫,直接干。

浙公網安備 33010602011771號