mongodb的备份与还原

用mongo自带的bin/mongodump和bin/mongorestore

备份和还原

# /usr/local/mongodb-2.4.8-master/bin/mongodump --help
Export MongoDB data to BSON files.

options:
  --help                                produce help message
  -v [ --verbose ]                      be more verbose (include multiple times
                                        for more verbosity e.g. -vvvvv)
  --version                             print the program's version and exit
  -h [ --host ] arg                     mongo host to connect to ( <set 
                                        name>/s1,s2 for sets)
  --port arg                            server port. Can also use --host 
                                        hostname:port
  --ipv6                                enable IPv6 support (disabled by 
                                        default)
  -u [ --username ] arg                 username
  -p [ --password ] arg                 password
  --authenticationDatabase arg          user source (defaults to dbname)
  --authenticationMechanism arg (=MONGODB-CR)
                                        authentication mechanism
  --dbpath arg                          directly access mongod database files 
                                        in the given path, instead of 
                                        connecting to a mongod  server - needs 
                                        to lock the data directory, so cannot 
                                        be used if a mongod is currently 
                                        accessing the same path
  --directoryperdb                      each db is in a separate directly 
                                        (relevant only if dbpath specified)
  --journal                             enable journaling (relevant only if 
                                        dbpath specified)
  -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
  --oplog                               Use oplog for point-in-time 
                                        snapshotting
  --repair                              try to recover a crashed database
  --forceTableScan                      force a table scan (do not use 
                                        $snapshot)
示例备份:
# /usr/local/mongodb-2.4.8-master/bin/mongodump -h 192.168.119.46 -d adx -o /home/cai/
.bash_history   .bash_profile   conf.txt        hist            start.txt       xinetd.confbak  
.bash_logout    .bashrc         .gnome2/        mongodb_bak/    .viminfo        
[root@localhost cai]# /usr/local/mongodb-2.4.8-master/bin/mongodump -h 192.168.119.46 -d adx -o /home/cai/mongodb_bak
//-h 主机 -d 数据库 -o输出的目录
connected to: 192.168.119.46
Mon Mar 31 19:40:18.944 DATABASE: adx	 to 	/home/cai/mongodb_bak/adx
Mon Mar 31 19:40:18.985 	adx.system.indexes to /home/cai/mongodb_bak/adx/system.indexes.bson
Mon Mar 31 19:40:18.986 		 5 objects
Mon Mar 31 19:40:18.986 	adx.log.task to /home/cai/mongodb_bak/adx/log.task.bson
Mon Mar 31 19:40:19.026 		 1981 objects
Mon Mar 31 19:40:19.026 	Metadata for adx.log.task to /home/cai/mongodb_bak/adx/log.task.metadata.json
Mon Mar 31 19:40:19.026 	adx.log.show to /home/cai/mongodb_bak/adx/log.show.bson
Mon Mar 31 19:40:22.000 		Collection File Writing Progress: 1198000/7085824	16%	(objects)
Mon Mar 31 19:40:25.033 		Collection File Writing Progress: 2113400/7085824	29%	(objects)
Mon Mar 31 19:40:28.000 		Collection File Writing Progress: 2499100/7085824	35%	(objects)
Mon Mar 31 19:40:31.007 		Collection File Writing Progress: 2764300/7085824	39%	(objects)
Mon Mar 31 19:40:34.000 		Collection File Writing Progress: 3033600/7085824	42%	(objects)
Mon Mar 31 19:40:37.000 		Collection File Writing Progress: 4064900/7085824	57%	(objects)
Mon Mar 31 19:40:40.010 		Collection File Writing Progress: 4604800/7085824	64%	(objects)
Mon Mar 31 19:40:43.030 		Collection File Writing Progress: 4845600/7085824	68%	(objects)
Mon Mar 31 19:40:46.009 		Collection File Writing Progress: 5129200/7085824	72%	(objects)
Mon Mar 31 19:40:49.000 		Collection File Writing Progress: 5999700/7085824	84%	(objects)
Mon Mar 31 19:40:52.002 		Collection File Writing Progress: 6844900/7085824	96%	(objects)
Mon Mar 31 19:40:53.803 		 7085946 objects
Mon Mar 31 19:40:53.803 	Metadata for adx.log.show to /home/cai/mongodb_bak/adx/log.show.metadata.json
Mon Mar 31 19:40:53.804 	adx.log.click to /home/cai/mongodb_bak/adx/log.click.bson
Mon Mar 31 19:40:56.953 		Collection File Writing Progress: 10100/41340	24%	(objects)
Mon Mar 31 19:40:58.545 		 41340 objects
Mon Mar 31 19:40:58.545 	Metadata for adx.log.click to /home/cai/mongodb_bak/adx/log.click.metadata.json
Mon Mar 31 19:40:58.545 	adx.log.data to /home/cai/mongodb_bak/adx/log.data.bson
Mon Mar 31 19:41:01.000 		Collection File Writing Progress: 481500/7081875	6%	(objects)
Mon Mar 31 19:41:04.087 		Collection File Writing Progress: 812900/7081875	11%	(objects)
Mon Mar 31 19:41:07.045 		Collection File Writing Progress: 1281500/7081875	18%	(objects)
Mon Mar 31 19:41:10.010 		Collection File Writing Progress: 1902300/7081875	26%	(objects)
Mon Mar 31 19:41:13.032 		Collection File Writing Progress: 3107000/7081875	43%	(objects)
Mon Mar 31 19:41:16.008 		Collection File Writing Progress: 3803500/7081875	53%	(objects)
Mon Mar 31 19:41:19.000 		Collection File Writing Progress: 4224600/7081875	59%	(objects)
Mon Mar 31 19:41:23.250 		Collection File Writing Progress: 4263500/7081875	60%	(objects)
Mon Mar 31 19:41:26.265 		Collection File Writing Progress: 4282300/7081875	60%	(objects)
Mon Mar 31 19:41:29.052 		Collection File Writing Progress: 4675600/7081875	66%	(objects)
Mon Mar 31 19:41:32.164 		Collection File Writing Progress: 5291800/7081875	74%	(objects)
Mon Mar 31 19:41:35.000 		Collection File Writing Progress: 5733600/7081875	80%	(objects)
Mon Mar 31 19:41:37.363 		 7081875 objects
Mon Mar 31 19:41:37.363 	Metadata for adx.log.data to /home/cai/mongodb_bak/adx/log.data.metadata.json
Mon Mar 31 19:41:37.364 	adx.log.money_report_list to /home/cai/mongodb_bak/adx/log.money_report_list.bson
Mon Mar 31 19:41:37.364 		 8 objects
Mon Mar 31 19:41:37.364 	Metadata for adx.log.money_report_list to /home/cai/mongodb_bak/adx/log.money_report_list.metadata.json
# cd mongodb_bak/ #备份完的目录
mongodb_bak # ls
adx
mongodb_bak # cd adx/ 
adx # ls
log.click.bson           log.data.metadata.json               log.show.bson           log.task.metadata.json
log.click.metadata.json  log.money_report_list.bson           log.show.metadata.json  system.indexes.bson
log.data.bson            log.money_report_list.metadata.json  log.task.bson
adx # du -sh 
8.3G    .

还原

# /usr/local/mongodb/bin/mongorestore --help
Import BSON files into MongoDB.

usage: /usr/local/mongodb/bin/mongorestore [options] [directory or filename to restore from]
options:
  --help                                produce help message
  -v [ --verbose ]                      be more verbose (include multiple times
                                        for more verbosity e.g. -vvvvv)
  --version                             print the program's version and exit
  -h [ --host ] arg                     mongo host to connect to ( <set 
                                        name>/s1,s2 for sets)
  --port arg                            server port. Can also use --host 
                                        hostname:port
  --ipv6                                enable IPv6 support (disabled by 
                                        default)
  -u [ --username ] arg                 username
  -p [ --password ] arg                 password
  --authenticationDatabase arg          user source (defaults to dbname)
  --authenticationMechanism arg (=MONGODB-CR)
                                        authentication mechanism
  --dbpath arg                          directly access mongod database files 
                                        in the given path, instead of 
                                        connecting to a mongod  server - needs 
                                        to lock the data directory, so cannot 
                                        be used if a mongod is currently 
                                        accessing the same path
  --directoryperdb                      each db is in a separate directly 
                                        (relevant only if dbpath specified)
  --journal                             enable journaling (relevant only if 
                                        dbpath specified)
  -d [ --db ] arg                       database to use
  -c [ --collection ] arg               collection to use (some commands)
  --objcheck                            validate object before inserting 
                                        (default)
  --noobjcheck                          don't validate object before inserting
  --filter arg                          filter to apply before inserting
  --drop                                drop each collection before import
  --oplogReplay                         replay oplog for point-in-time restore
  --oplogLimit arg                      include oplog entries before the 
                                        provided Timestamp (seconds[:ordinal]) 
                                        during the oplog replay; the ordinal 
                                        value is optional
  --keepIndexVersion                    don't upgrade indexes to newest version
  --noOptionsRestore                    don't restore collection options
  --noIndexRestore                      don't restore indexes
  --w arg (=0)                          minimum number of replicas per write


还原示例:

# /usr/local/mongodb/bin/mongorestore -h 192.168.10.40 -d adx --drop mongodb_bak/adx
//-h 主机名或者ip -d 还原的数据库 --drop 删除已经导入的数据集
 connected to: 192.168.10.40
Mon Mar 31 23:21:43.714 mongodb_bak/adx/log.show.bson
Mon Mar 31 23:21:43.714 	going into namespace [adx.log.show]
Mon Mar 31 23:21:43.714 	 dropping
Mon Mar 31 23:21:46.003 		Progress: 47085159/5674443774	0%	(bytes)
Mon Mar 31 23:21:49.001 		Progress: 116730413/5674443774	2%	(bytes)
Mon Mar 31 23:21:52.036 		Progress: 170644327/5674443774	3%	(bytes)
Mon Mar 31 23:21:55.744 		Progress: 215644352/5674443774	3%	(bytes)
此处略去n个字。。。
7081875 objects found
Mon Mar 31 23:30:59.311     Creating index: { key: { _id: 1 }, ns: "adx.log.data", name: "_id_" }
Mon Mar 31 23:30:59.735 mongodb_bak/adx/log.task.bson
Mon Mar 31 23:30:59.735     going into namespace [adx.log.task]
Mon Mar 31 23:30:59.735      dropping
1981 objects found
Mon Mar 31 23:30:59.841     Creating index: { key: { _id: 1 }, ns: "adx.log.task", name: "_id_" }

还原导入完成

#########################

迷途小运维随笔

作者:john

转载请注明出处



以下是 MongoDB 数据库备份还原的脚本示例: 备份脚本: ``` #!/bin/bash # MongoDB backup script # MongoDB credentials user="username" password="password" host="localhost" port="27017" db_name="database_name" # Other options backup_path="/path/to/backup/folder" date=$(date +"%d-%b-%Y") # Backup filename filename="$db_name-$date.tar.gz" # Backup command mongodump --host=$host --port=$port --username=$user --password=$password --db=$db_name --out=$backup_path/$db_name-$date # Compression command tar -zcvf $backup_path/$filename $backup_path/$db_name-$date # Remove uncompressed folder rm -rf $backup_path/$db_name-$date ``` 在备份脚本中,您需要将 `username`、`password`、`host`、`port` 和 `database_name` 替换为您的 MongoDB 访问凭据和数据库名称。`backup_path` 变量指定备份文件应该存储在哪个文件夹中,`date` 变量用于生成备份文件名。 在备份期间,`mongodump` 命令将备份文件存储在指定的文件夹中。然后,使用 `tar` 命令将文件夹压缩为 `.tar.gz` 文件。最后,删除原始文件夹。 还原脚本: ``` #!/bin/bash # MongoDB restore script # MongoDB credentials user="username" password="password" host="localhost" port="27017" db_name="database_name" # Other options backup_path="/path/to/backup/folder" filename="$db_name-$date.tar.gz" # Restore command tar -zxvf $backup_path/$filename -C $backup_path mongorestore --host=$host --port=$port --username=$user --password=$password --db=$db_name $backup_path/$db_name-$date/$db_name ``` 在还原脚本中,您需要使用与备份脚本相同的 `username`、`password`、`host` 和 `database_name` 值。`backup_path` 变量应该与备份脚本中的相同。`filename` 变量包含备份文件名,它必须与备份脚本中的相同。 还原期间,`tar` 命令将备份文件解压缩到指定的文件夹中。然后使用 `mongorestore` 命令将备份数据还原到数据库中。 请注意,这些脚本仅是示例,不适用于所有情况。在实际使用之前,请测试并根据需要进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值