mongodb數(shù)據(jù)庫安裝以及備份還原過程

今天公司需要把 mongodb 數(shù)據(jù)庫遷移到另外一臺服務(wù)器上,剛好之前也沒系統(tǒng)的操作過一遍,所以今天就記錄下自己操作的這個流程。

系統(tǒng): Ubuntu 14.04 lts
mongodb版本:無要求,故最新版(v4.0.4)

1. 安裝 mongodb

之前都是下載 deb 文件,然后解壓安裝的。今天試試通過軟件源的方式去安裝。官網(wǎng)地址

  1. 向系統(tǒng)的包管理器導(dǎo)入其使用的公鑰
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
  1. 為 mongodb 創(chuàng)建資源文件
# 創(chuàng)建在 /etc/apt/sources.list.d 目錄下
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
  1. 重新加載本地包數(shù)據(jù)庫
sudo apt-get update
  1. 下載 mongodb 包
# apt-get 獲取的是最新版本的 mongodb ,并不能指定固定版本的 mongodb
sudo apt-get install -y mongodb-org

2. 啟動 mongodb

啟動 mongodb 之前,建議先修改它的配置文件,配置文件一般是 /etc/mongodb.conf

# 默認(rèn)的配置文件內(nèi)容
# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1


# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

#security:

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

做了以下這些修改

  1. 數(shù)據(jù)庫存儲位置。/var/lib/mongodb 存放到 /data/db (需要先創(chuàng)建好 mkdir -p /data/db )
  2. 修改能連接數(shù)據(jù)庫的IP。bindIp 由 127.0.0.1 修改為 0.0.0.0 (所以Ip都能連接,也可以設(shè)置為需要連接到該數(shù)據(jù)庫的 IP)
  3. 啟動安全驗(yàn)證。

下面是我修改后的配置文件

# mongodb.conf
storage:
  dbPath: /data/db
  journal:
    enabled: true
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

net:
  port: 27018
  bindIp: 0.0.0.0
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

security:
  authorization: enabled

啟動 mongodb 的方式有很多種,我選擇自己命名一個別名去啟動它。以后啟動就不需要再輸入一大串命令,或者查詢命令歷史去啟動

# 1. 添加以下命令到 .bashrc
alias mongod_start='/usr/bin/mongod --fork --auth --config=/etc/mongod.conf'

# 2. 讓文件生效
source ~/.bashrc

# 3. 命令啟動
mongod_start

如果不想通過這種方式啟動,那可以直接執(zhí)行 mongod --fork --auth --config=/etc/mongod.conf 去啟動。

輸入 mongo --port 27018,如果沒報錯什么的,那就說明成功啟動了 mongodb。

ps: 由于之前的文件里面修改了端口號,所以需要指定端口號,否則連接不上

既然說了啟動,那就說下正常的關(guān)閉 mongodb 的方式吧。當(dāng)然也可以查詢端口,殺進(jìn)程的方式去關(guān)閉 mongodb

> use admin;

> db.shutdownServer();

3. 創(chuàng)建用戶

在之前連接上 mongodb 的那個窗口,進(jìn)行處理

# 切換數(shù)據(jù)庫,這個是 默認(rèn)庫
use admin;
# 創(chuàng)建這個數(shù)據(jù)庫下的管理員
db.createUser({
  user: "admin",
  pwd: "admin",
  roles: [{
    role: "userAdminAnyDatabase",
    db: "admin"
  }]
})

# 斷開連接
exit

# 以 admin 用戶登陸來進(jìn)行操作
mongo --port 53082 -u admin -p admin --authenticationDatabase "admin"

# 創(chuàng)建你需要的數(shù)據(jù)庫
use test;

# 創(chuàng)建這個數(shù)據(jù)庫的管理員(可選)
db.createUser({
  user: "testuser",
  pwd: "passwd",
  roles: [
    {role: "userAdmin", db: "test"}
  ]
})

# 創(chuàng)建這個數(shù)據(jù)庫下的普通用戶,可以設(shè)置它的權(quán)限。下面創(chuàng)建的這個用戶擁有讀寫(readWrite)權(quán)限
db.createUser({
  user: "putonguser",
  pwd: "passwd",
  roles: [
    {role: "readWrite", db: "test"}
  ]
})

# 以普通用戶連接 mongodb
mongo --port 53082 -u putonguser -p passwd --authenticationDatabase "test"

4. 數(shù)據(jù)庫的備份和還原

在原先服務(wù)器上備份(需要暫停服務(wù)的暫停服務(wù)),注意修改成數(shù)據(jù)庫用戶的正確端口和用戶以及登陸密碼

# 退出連接
exit;
# 開始備份
mongodump -h localhost --port 27018 -d test -u putonguser -p passwd -o .
# 壓縮(對應(yīng)的文件)
tar -zcvf test.tgz ./test
# 傳輸?shù)降诙_服務(wù)器上
scp -r test.tgz username@host:/remote/directory

在新的服務(wù)器上解壓,并還原到指定的數(shù)據(jù)庫中

# 解壓
tar -xf test.tgz test
# 還原到指定(test)數(shù)據(jù)庫
mongorestore -h localhost -d test --dir ./test --port 27018 -u putonguser -p passwd --authenticationDatabase "test"

然后查詢下數(shù)據(jù)庫,看看數(shù)據(jù)是否是正常的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容