mongodb备忘
要把工程从一个服务器迁移到另外一个服务器,因为这个工程使用的数据库是monogdb,所以刚才又重新安装了一边mongodb
1.安装
官方安装地址: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
按照他提供的方案步骤来,前两步没有问题,到第三步,
sudo apt-get update
最后显示,更新失败,试了好多次,都失败,突然想到很早以前装的时候也是这个问题
https://github.com/alibaba/mirrors/issues/34
搜索了下,可以使用清华大学的镜像源
https://mirror.tuna.tsinghua.edu.cn/help/mongodb/
按照上面的步骤,正常安装成功了。
- 配置
mongodb默认的数据库地址是
The MongoDB instance stores its data files in /var/lib/mongodb and its log files in /var/log/mongodb by default
我后来启动的时候,默认的数据库地址是/data/db
擦,我不想使用它默认的地址,我要自己定义,配置文件/etc/mongod.conf
修改这个配置里面的
storage.dbPath: /data/mongodb/db
systemLog.path:/data/mongodb/log/mongod.log
重新启动,并没有什么卵用,我用的是
sudo service monogd start
除非是
mongod --confg /etc/mongod.conf
需要手动指定配置文件才行
这下就尴尬了,我想用
sudo service monogd start
sudo service monogd stop
sudo service monogd restart
这种方式来管理mongodb的运行
所以自己写了下脚本
在/etc/init.d/ 创建一个文件 mongodb
#!/bin/bash
. /lib/lsb/init-functions
PROGRAM=/usr/bin/mongod
MONGOPID=`ps -ef | grep 'mongod' | grep -v grep | awk '{print $2}'`
RETVAL=0
start() {
echo -n "Starting mongodb "
ulimit -n 3000
$PROGRAM --fork --config /etc/mongod.conf
RETVAL=$?
echo "$PROGRAM."
}
stop() {
echo -n "Stopping mongodb "
if [ ! -z "$MONGOPID" ]; then
kill -15 $MONGOPID
RETVAL=$?
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: monogodb {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
上面的基本上就是套路, PROGRAM指定monogd的地址,下面就是mongodb的启动,关闭
sudo chmod +x /etc/init.d/mongodb
然后就可以使用
sudo service monogdb start
sudo service monogdb stop
sudo service monogdb restart
3.数据库的备份和恢复
3.1备份
mongodump -d my_mongodb
-d 数据库的名字
3.2恢复
mongorestore -d my_mongodb my_mongodb_dump/*
-d 数据库的名字 最后是数据的位置
参考文章:http://blog.csdn.net/liuzhoulong/article/details/6849978
4.其它一些问题:
当安装完mongodb以后,打开mongodb的控制台
mongo
显示如下的报错:
Failed global initialization: BadValue: Invalid or no user locale set. Please ensure LANG and/or LC_* environment variables are set correctly.
解决方案:
export LC_ALL=C
把 export LC_ALL=C 添加到 ~/.bashrc 文件中 //对当前用户长久有效
两个服务器之间拷贝文件:
例如:A服务器 在/home/jiangli/ 下有一个data文件夹 需要把这个文件夹拷贝到B服务器的/home/jiangli目录下 使用scp命令
scp -r data/ xxxxx@www.xxx.com:/home/jiangli/
然后输入B服务器上的xxxxx这个用户的密码即可
scp命令参考:http://www.cnblogs.com/peida/archive/2013/03/15/2960802.html