这不是数据迁移, 迁移的话通常用mongodump, 另说.
本篇是因为服务器主分区只有20G, 数据库文件数据量大了, 主分区不够了需要迁移到新挂载的数据盘.挂载的知识请看().
下面是思路:
- 查看MongoDB的状态, 终止数据库运行
- 查看数据库数据, 日志路径
- 压缩备份, 拷贝到新目录
- 重启
1.查看MongoDB状态
连接成功则表示mongod已经运行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
$ service mongod status
> stop/waiting 表示不是通过service运行的
> start/running 表示通过service运行的
$ service mongod stop 停止
$ service mongod start/restart 重启
or
$ ps -aux | grep mongo
>root 7695 0.3 13.5 29712004 1109256 ? Sl Dec14 2:37 mongod --fork --logpath /var/log/mongodb/mongodb.log --dbpath /var/lib/mongodb
ubuntu 24526 0.0 0.0 10468 2232 pts/1 R+ 10:43 0:00 grep --color=auto mongo
表示mongod服务是通过--fork 形式手动启动的
$ kill PID(7695) 终止服务
|
2.查看数据库数据, 日志路径
-
service 启动的mongod服务
此时通过/etc/init.d/mongodb启动服务, 默认使用/etc/mongod.conf配置文件
-
mongod –fork 启动mongod服务
默认也会使用/etc/mongod.conf配置文件, 但是当指定dbpath logpath后以指定为准
mongod.conf文件
1
2
3
4
5
6
7
8
9
10
|
...
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
...
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
|
修改对应路径:
1
2
3
4
5
6
7
8
9
10
|
...
storage:
dbPath: /data/db/mongodb
journal:
enabled: true
...
systemLog:
destination: file
logAppend: true
path: /data/db/log/mongod.log
|
本例中前人通过指定logpath dbpath的方式启动服务
3.压缩备份, 拷贝到新目录
知道了原来的数据和日志位置, 那么可以压缩备份原来的数据了, 本例以/data/db/mongodb为新的数据目录
/data/db/log为新的日志目录
1
2
3
4
|
$ cd /var/lib
$ tar -zcvf mongodb_backup_xxxxxx.tar.gz /var/lib/mongodb
$ cp -ra /var/lib/mongodb /data/db/mongodb
$ rm -rf /var/lib/mongodb
|
4.重启mongod服务
1
|
$ sudo service mongod start
|
or
1
|
$ sudo mongod --dbpath /data/db/mongodb --logpath /data/db/log/mongod.log
|
问题: 启动失败
直接拷贝 已经是mongodb:mongodb 用户组了
- 查看日志 访问mongodb-27017.sock 无权限
1
2
3
|
...
Failed to unlink socket file /tmp/mongodb-27017.sock errno:1 Operation not permitted
...
|
1
2
3
|
$ cd /tmp
$ ll
$ rm -rf mongodb-27017.sock
|
重新启动
重新查看 mongodb-27017.sock 文件
1
2
3
|
$ ls - lat /tmp/mongodb-27017.sock
>
srwx------ 1 mongodb mongodb 0 Dec 14 21:12 /tmp/mongodb-27017.sock
|
注: 启动相关日志 还是在/var/log/mongodb