昨天好朋友去了一家新的公司,她们老大让她迁移数据库,因为她之前一直做php,没做过服务器运维这块。 幸亏,我刚毕业那会儿做过nodejs,公司没运维。只好我们自己来做,捣鼓那台主机,部署ubuntu,配置nginx,git,nodejs,npm这些。现在做iOS开发,都没机会接触服务器了。想想那段时光好幸福,学了好多东西。呃,呃,扯远了。我们来说正题。
迁移数据库,大体思路。1.备份数据库,2.关闭`mongo`服务。3.重启`mongo`服务,并且重新指定`dbpath` 和`logpath`4.把之前的数据库备份 恢复到新的数据库里。
1.备份数据库,如果想导出所有的去掉 -d
mongodump -h IP --port 端口 -d 数据库名字 -o 文件存在路径
2.关闭mongo
use admin
db.shutdownServer()
3.启动mongo
指定 dbpath
路径 和logpath
路径。 --fork 是在后台运行,如果不加。如果Session窗口关闭,Mongodb进程也随之停止.
mongod --dbpath=数据库的路径 --logpath=日志路径 -- fork
4.恢复数据库
mongorestore -h IP --port 端口 -d 数据库名字 备份数据库路径
一些小插曲
1.因为我服务器数据库里面没数据,她看不出迁移效果。 只好想办法在数据库里面差了10000条用户。。。
for(var i=0;i<10000;i++) db.users.insert({"username":i,uname:i});
哈哈,涨了0.001GB
2.我们启动数据库的时候,报了这个about to fork child process waiting until server is ready for connections
错误。google了一下,答案因为没有正常关闭数据库,数据库锁住了。
需要把数据库目录下的mongodb.lock 删了,再重启就可以了。
rm /data/mongodb/mongo.lock
mongod --repair**
3.她自己操作的,有次启动mongodb,dbpath 写错了,没这错误,就报了这个Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
错误。重新设置下dbpath
就可以了。
4.问了我张图,这上面都是什么东东。具体看这个吧玩转 Linux 之:磁盘分区、挂载知多少?。
5.一些linux命令
top 查看进程
free 查看内存
df -h 查看硬盘
6.怎么查看mongo的启动参数
use admin
db.runCommand({getCmdLineOpts:1}) 查看启动参数
额,因为我是野路子,没具体学过运维。如有错误,请告知。
学习资料:
mongodb官网
http://www.runoob.com/mongodb/mongodb-tutorial.html
http://www.jb51.net/article/52498.htm
玩转 Linux 之:磁盘分区、挂载知多少?