mongodb数据库备份

来源:互联网 发布:京都小众景点.知乎 编辑:程序博客网 时间:2024/06/07 14:26

1. mongodb备份


天有不测风云,数据库的备份非常重要,出问题时需要通过备份来恢复数据。
备份常用方法有下面两种:

2. 直接copy数据目录


mongodb的所有数据放在数据目录下, 默认为 /data/db/ .
要备份数据库,直接把数据目录下面的所有文件copy一份就可以了。
但是这个需要数据库服务先停止,如果服务在运行时直接备份这个目录,部分数据还在缓冲区,很有可能文件有破损。

对于正在线上运行的服务来说,停止数据库备份是不可能的,下面就是不停止服务来备份。

3. mongodump


mongodump是mongodb自带的工具, 能在运行时备份。
mongodump对运行的Mongodb做查询,将查询到的文档写入磁盘。

3.1 mongodump运行选项


可以通过命令行查询他的选项参数
./bin/mongodump --help

常用参数:
  -h  [ --host ]  arg                   运行的host
  --port arg                                     运行的端口
  -u [ --username ] arg                 username
  -p [ --password ] arg                 password
  --dbpath arg                               直接访问mongodb的数据库目录来备份,
                                                       会锁定数据库目录,如果mongod正在运行时不能使用这个参数
  -d [ --db ] arg                              database to use 要备份的数据库,为空表示所有数据库
  -c [ --collection ] arg                  collection to use (some commands)   指定集合,为空表示所有
  -o [ --out ] arg (=dump)              output directory or "-" for stdout   备份目录保存的地址
  -q [ --query ] arg                     json query   可以指定查询

如:
./bin/mongodump --host 127.0.0.1 --port 9980 --db news --out /home/work/backup/;
如果为副本集 replica set 方式, 则host为 副本集名称和host,端口
mongodump --host repl0/mongo0.example.net,mongo0.example.net:27018,mongo1.example.net,mongo2.example.net


3.2 备份脚本


使用计划任务来备份数据库,每小时备份一次:
生成的备份目录为:
 /home/gang/backup/mongodb/2014-03-29-10

shell脚本:
#! /bin/sh# @author  bj1602#163.com# @file backup.sh# @desc 备份mongodb,每小时执行一次set -xhostname="127.0.0.1";port="9980";db="news";log_date=`date +"%F-%H"`;log_dir="/home/gang/backup/mongodb/$log_date";mongo_dir="/home/gang/mongo/";mkdir -p $log_dir;echo `date +"%F %H:%M:%S"`;cd $mongo_dir;./bin/mongodump --host $hostname --db $db --port $port --out $log_dir;echo `date +"%F %H:%M:%S"`;





0 0
原创粉丝点击