美文网首页
MongoDB/备份

MongoDB/备份

作者: 米刀灵 | 来源:发表于2016-09-11 17:21 被阅读254次

    mongodump:
    在MongoDB中我们使用mongodump命令来备份MongoDB数据。该命令可以导出所有数据到指定目录中。
    ./bin/mongodump -h dbhost -d dbname -o yourdirectory
    ./bin/mongodump --host mongodb.example.net --port 27017 --db test --collection some --username usr --password pwd --gzip yourdirectory
    如果不带任何参数直接执行mongodump,那么它会去连接本地27017端口上的MongoDB实例,并且会创建名为dump的备份。
    在指定了collection的情况下,使用--query参数备份部分数据。
    ./bin/mongodump -h dbhost -d dbname -c cname -q '{ "uid" : "100" }' -o dbdirectory
    --gzip表示是否压缩备份。
    在MongoDB未启动时,用以下命令,在这种方式下不需要运行mongod实例,如果已经运行了,必须要停掉。
    ./bin/mongodump --dbpath /data/db --out /data/backup --db test --username usr--password pwd

    mongorestore:
    恢复使用mongorestore命令
    ./bin/mongorestore -h dbhost -d dbname dbdirectory
    ./bin/mongorestore --host mongodb.example.net --port 27017 --db test --collection some --username usr --password pwd /data/backup
    在指定了collection的情况下,使用--query参数恢复部分数据。
    在MongoDB未启动时,用以下命令
    ./bin/mongorestore --dbpath /data/db --journal /data/backup

    mongoexport:
    使用mongoexport,需指定collection。
    ./bin/mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段 -q 条件导出 --type=csv -o 文件名

    • -f 导出指字段,以字号分割,-f name,email,age表示导出name,email,age这三个字段。
    • -q 可以根查询条件导出,-q '{ "uid" : 100 }' 导出uid为100的数据。
    • --type=csv 表示导出的文件格式为csv的。导出csv必须声明-f字段。

    ./bin/mongoexport -d dbname -c cname --type=csv -q '{"type":"channel"}' -f uid,name,sex -o /usr/local/mongodb/users.csv
    ./bin/mongoexport -d dbname -c cname -q '{uid:{$gt:1}}' -o /usr/local/mongodb/users.json
    如果导出json文件,集市指定字段不包括_id,也都会自动包含_id,csv则不会。

    mongoimport:
    还原全部字段:
    ./bin/mongoimport -d dbname -c cname --upsert /usr/local/mongodb/users.json
    还原部分字段(默认包含_id):
    ./bin/mongoimport -d dbname -c cname --upsertFields uid,name,sex /usr/local/mongodb/users.json
    导入csv文件:
    ./bin/mongoimport -d myinfo -c usertedails_imported_csv_partial --type csv --headerline /usr/local/mongodb/users.csv
    若导出csv时,未包含_id字段,则会新建_id。

    • --upsert,upsertFields 插入或者更新现有数据。
    • --headerline表示csv第一行是列名不用导入。

    备份分片也相同。-h和-p改为mongos的地址和端口即可。

    相关文章

      网友评论

          本文标题:MongoDB/备份

          本文链接:https://www.haomeiwen.com/subject/ktjuettx.html