MongoDb进阶实践之九 Mongodb的备份与还原
一、引言 //登陆MongoDB的客户端 [root@linux bin]# ./mongo --host=192.168.127.130 --port=27017 MongoDB shell version v3.6.3 connecting to: mongodb:192.168.127.130:27017/ MongoDB server version: 3.6.3 Server has startup warnings: 2018-06-13T11:27:09.721+0800 I CONTROL [initandlisten] 0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user,which not recommended. 09.723+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 0800 I CONTROL [initandlisten] ** We suggest setting it to never' I CONTROL [initandlisten] 显示当前数据库列表 > show dbs admin 0.000GB config .000GB local .000GB school 0.000GB ---这个数据库就是我们要备份的 切换到school数据库 > use school switched to db school 显示当前school数据库下有多个集合 > show tables geoInstance users 当前两个集合都有数据 > db.users.find() { "_id" : ObjectId(5b1e044733091e826f7c2c74"),title" : MongoDb Overview",1)">descriptionMongodb is not sql databaseauthorhuangFeiHongurlhttp://www.huangfeihong.comtags" : [ mongodbdatabaseNoSql" ],1)">likes100,1)">quantity4 } { 5b1e044733091e826f7c2c75NoSql OverviewNo sql database is very fast10,1)">125b1e044733091e826f7c2c76Log4Net Overviewlog4net is not sql databaselinChonghttp://www.linchong.comlognetNoSQL750,1)">65b1e1bfb33091e826f7c2c77MongoDb Higher120,1)">5b1e1bfb33091e826f7c2c78NoSql Redis Overviewredis30,1)">335b1e1bfb33091e826f7c2c79Memcached OverrivewMemcached is sql databasewuSonghttp://www.wusong.commemcachedcache50,1)">10 } > > > db.geoInstance.find() { 5b1f4d21cf30d7cba03d5e03loc1,1)"> ] } { 5b1f4d21cf30d7cba03d5e043,1)">5b1f4d21cf30d7cba03d5e050,-5b1f4d21cf30d7cba03d5e06" : [ -6,1)">25b1f4d21cf30d7cba03d5e07" : { x9,1)">y5 } } { 5b1f4d21cf30d7cba03d5e08lng" : -9.2,1)">lat21.3 } }
退出MongoDB的客户端 > exit bye [root@linux bin]# 当前目录结构 [root@linux bin]# pwd /root/application/program/mongodb/mongodb-linux-x86_64-3/bin [root@linux bin]# databaseBack 创建保存备份文件的目录名称 已经创建好的目录结构,databaseBack是备份目录 [root@linux bin]# ls bsondump datas logs mongod mongodump mongofiles mongoperf mongorestore mongostat databaseBack install_compass mongo mongodb.conf mongoexport mongoimport mongoreplay mongos mongotop
代码很简单 [root@linux bin]# ./mongodump -h 127.130:27017 -d school -o ./databaseBack 50:00.816+ writing school.geoInstance to 00.817+ writing school.users to 00.821+0800 done dumping school.geoInstance ( documents) 0800 done dumping school.users ( documents) 查看备份文件 [root@linux bin]# ls ./databaseBack school [root@linux bin]# ls ./databaseBack/school geoInstance.bson geoInstance.metadata.json users.bson users.metadata.json
[root@linux bin]# ./mongodump -h 27017 --db school --collection users -o ./backCollection 06-13T13:40:46.702+46.706+ documents) [root@linux bin]# ls ./backCollection school [root@linux bin]# ls ./backCollection/school users.bson users.metadata.json [root@linux bin]# ?
[root@linux bin]# ./mongodump -h 27017 --archive=./backArchiveFile/school.2018613.archive --db school 57:51.953+0800 writing school.geoInstance to archive ./backArchiveFile/school.2018613.archive51.955+0800 writing school.users to archive 51.994+51.997+ documents) [root@linux bin]# ls ./backArchiveFile/ school.2018613.archive
[root@linux bin]# ./mongodump -h 27017 --db school --gzip -o ./backZip 06-13T14:04:39.674+39.675+39.682+39.684+ documents) 显示压缩文件 [root@linux bin]# ls ./backZip/school geoInstance.bson.gz geoInstance.metadata.json.gz users.bson.gz users.metadata.json.gz
[root@linux bin]# ./mongodump -h 27017 --archive=./backZip/school.2018613.gz --db school --gzip 08:57.311+./backZip/school.2018613.gz57.312+57.346+57.349+ documents) [root@linux bin]# ls ./backZip/2018613.gz
登陆MongoDB客户端,显示当前数据库列表 [root@linux bin]# ./mongo --host= I CONTROL [initandlisten] >.000GB > 删除school数据库 > use school switched to db school > db.dropDatabase() { droppedschoolok1退出MongoDB客户端 > exit bye [root@linux bin]# ?
还原users集合 [root@linux bin]# ./mongorestore -h 27017 --collection users --db school ./databaseBack/school/users.bson 16:52.118+0800 checking for collection data in databaseBack/school/52.120+0800 reading metadata for school.users from databaseBack/school/users.metadata.json 52.148+0800 restoring school.users 52.218+ no indexes to restore 0800 finished restoring school.users (52.219+ done 还原geoInstance集合 [root@linux bin]# ./mongorestore -h 27017 --collection geoInstance --db school ./databaseBack/school/geoInstance.bson 18:26.353+26.358+for school.geoInstance geoInstance.metadata.json 26.386+0800 restoring school.geoInstance 26.456+0800 restoring indexes for collection school.geoInstance from metadata 26.475+0800 finished restoring school.geoInstance (0800 done
[root@linux bin]# ./mongo --host= I CONTROL [initandlisten] > > >.000GB > > > use school switched to db school > > show tables geoInstance users > > >21.3 } } ?
[root@linux bin]# ./mongorestore -h 27017 --nsInclude school.users ./databaseBack/ 19:59.942+0800 preparing collections to restore from 59.946+59.970+59.977+这是在有数据的情况下执行恢复 [root@linux bin]# ./mongorestore -h 21:10.743+10.747+10.748+10.755+0800 error: multiple errors in bulk operation: - E11000 duplicate key error collection: school.users index: _id_ dup key: { : ObjectId() } - E11000 duplicate key error collection: school.users index: _id_ dup key: { : ObjectId() } 0800 done ?
[root@linux bin]# ./mongorestore -h 27017 --gzip --db school --archive=./backZip/school.2018613.gz 26:48.939+0800 the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead 49.591+50.041+from archive 50.071+51.132+51.150+51.152+51.181+51.837+51.838+ done 以前已经删除了school数据库 [root@linux bin]# ./mongo --host 0.000GB 数据库已经存在了,说明恢复成功
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |