mongodb集群数据备份和恢复

备份命令

         直接在新的mongodb节点上执行dump命令,把远程服务器上的数据库下载到本地

        ./mongodump  --forceTableScan -h 192.168.19.232 --port 27017 -u mydb -p mydb@123 -d mydb -o /root/mydb

        

        

 恢复数据库命令

       ./mongorestore -h 192.168.30.99 --port 37017 -d mydb --drop /root/mydb/mydb

       

       

设置数据库和表分片 

       1.数据库和表不设置分片的话,默认都是不会进行分片的

       2.数据库设置分片

           use admin
           db.runCommand({enablesharding:"mydb"})

      3.对表进行分片

         

      4.表里面如果已经有数据也可以进行分片

          对新表进行设置
             db.runCommand({shardcollection:"mydb.asset_acceptance_info",key:{_id:'hashed'}})
         对已经有数据的表设置
            db.runCommand({shardcollection:"mydb.asset_acceptance_info",key:{"_id":1}})

        

 表重命名rename

       1. 分片表不能直接rename

        

把asset_info_result重命名为asset_info_result_bak20220327
/data/tianyiyun/mongodb-linux-x86_64-amazon-3.6.2/bin/mongo --port 37017
db.createCollection("asset_info_result_bak20220327")
db.asset_info_result_bak20220327.ensureIndex({"_id":1})
db.runCommand({shardcollection:"mydb.asset_info_result_bak20220327",key:{_id:'hashed'}})
use mydb
db.asset_info_result.find().forEach(function(x){db.asset_info_result_bak20220327.insert(x)}
db.asset_info_result.aggregate({$match: {}}, {$out: 'asset_info_result_bak20220327'})
重命名表

    2.使用备份方式

     1.备份原表

        /data/tianyiyun/mongodb-linux-x86_64-amazon-3.6.2/bin/mongodump -h 192.168.0.103:37017 -uadmin -p2022 --authenticationDatabase admin  -d mydb -c asset_info_result -o /data/tianyiyun/backup2/

        如果没有指定 -o输出目录参数,那么就会在mongodump所在的目录自动生成一个dump子目录用来保存被导出来的数据

       

     2.直接还原-自动创建新表

       /data/tianyiyun/mongodb-linux-x86_64-amazon-3.6.2/bin/mongorestore -h 192.168.0.103:37017 -uadmin -p2022 --authenticationDatabase admin -d mydb -c asset_info_result_bak20220327 /data/tianyiyun/backup2/mydb/asset_info_result.bson

       

       

       {service_belongs_id:"2021102718160399715"}

      

 

posted @ 2022-01-27 09:26  不懂123  阅读(446)  评论(0编辑  收藏  举报