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/

按照上面的步骤,正常安装成功了。

  1. 配置

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