mongodb数据库安装以及备份还原过程

今天公司需要把 mongodb 数据库迁移到另外一台服务器上,刚好之前也没系统的操作过一遍,所以今天就记录下自己操作的这个流程。

系统: Ubuntu 14.04 lts
mongodb版本:无要求,故最新版(v4.0.4)

1. 安装 mongodb

之前都是下载 deb 文件,然后解压安装的。今天试试通过软件源的方式去安装。官网地址

  1. 向系统的包管理器导入其使用的公钥
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
  1. 为 mongodb 创建资源文件
# 创建在 /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. 重新加载本地包数据库
sudo apt-get update
  1. 下载 mongodb 包
# apt-get 获取的是最新版本的 mongodb ,并不能指定固定版本的 mongodb
sudo apt-get install -y mongodb-org

2. 启动 mongodb

启动 mongodb 之前,建议先修改它的配置文件,配置文件一般是 /etc/mongodb.conf

# 默认的配置文件内容
# 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. 数据库存储位置。/var/lib/mongodb 存放到 /data/db (需要先创建好 mkdir -p /data/db )
  2. 修改能连接数据库的IP。bindIp 由 127.0.0.1 修改为 0.0.0.0 (所以Ip都能连接,也可以设置为需要连接到该数据库的 IP)
  3. 启动安全验证。

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

# 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

如果不想通过这种方式启动,那可以直接执行 mongod --fork --auth --config=/etc/mongod.conf 去启动。

输入 mongo --port 27018,如果没报错什么的,那就说明成功启动了 mongodb。

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

既然说了启动,那就说下正常的关闭 mongodb 的方式吧。当然也可以查询端口,杀进程的方式去关闭 mongodb

> use admin;

> db.shutdownServer();

3. 创建用户

在之前连接上 mongodb 的那个窗口,进行处理

# 切换数据库,这个是 默认库
use admin;
# 创建这个数据库下的管理员
db.createUser({
  user: "admin",
  pwd: "admin",
  roles: [{
    role: "userAdminAnyDatabase",
    db: "admin"
  }]
})

# 断开连接
exit

# 以 admin 用户登陆来进行操作
mongo --port 53082 -u admin -p admin --authenticationDatabase "admin"

# 创建你需要的数据库
use test;

# 创建这个数据库的管理员(可选)
db.createUser({
  user: "testuser",
  pwd: "passwd",
  roles: [
    {role: "userAdmin", db: "test"}
  ]
})

# 创建这个数据库下的普通用户,可以设置它的权限。下面创建的这个用户拥有读写(readWrite)权限
db.createUser({
  user: "putonguser",
  pwd: "passwd",
  roles: [
    {role: "readWrite", db: "test"}
  ]
})

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

4. 数据库的备份和还原

在原先服务器上备份(需要暂停服务的暂停服务),注意修改成数据库用户的正确端口和用户以及登陆密码

# 退出连接
exit;
# 开始备份
mongodump -h localhost --port 27018 -d test -u putonguser -p passwd -o .
# 压缩(对应的文件)
tar -zcvf test.tgz ./test
# 传输到第二台服务器上
scp -r test.tgz username@host:/remote/directory

在新的服务器上解压,并还原到指定的数据库中

# 解压
tar -xf test.tgz test
# 还原到指定(test)数据库
mongorestore -h localhost -d test --dir ./test --port 27018 -u putonguser -p passwd --authenticationDatabase "test"

然后查询下数据库,看看数据是否是正常的。

你可能感兴趣的:(mongodb数据库安装以及备份还原过程)