首页 > 数据库 >mongodb表索引备份,索引的导出导入

mongodb表索引备份,索引的导出导入

时间:2024-01-25 16:22:22浏览次数:36  
标签:mongodb 备份 colName indexes 索引 导入 let

mongodb表索引备份,索引的导出导入

背景

  • 发现有两个mongodb环境的数据库表索引不一致,另一个数据库有索引缺失,需要将一个数据库里的所有表索引导入到另一个数据库
  • 也可用于单独备份数据库所有表的索引

写mongo shell的js脚本可参考官方文档https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell

导出导入索引的js脚本

// 当前脚本名为exportImportIndexes.js
let joinStr = "*_*";

// 查询所有表的索引
function findAllIndexes() {
    // 获取所有表
    let allCollections = db.getCollectionNames();
    for (var colName of allCollections) {
        let indexes = db.getCollection(colName).getIndexes();
        // 输出表索引信息
        print(colName, joinStr, JSON.stringify(indexes));
    }
}

// 添加所有表的索引
// 前提是通过findAllIndexes函数将所有表的索引写入了当前执行路径下的all_indexes.txt文件
function addAllIndexes() {
    // 获取所有索引,一行代表一张表的索引
    let indexes = cat('./all_indexes.txt');
    lines = indexes.split('\n');
    // 遍历所有表的索引
    for (var line of lines) {
        print("line:", line);
        let items = line.split(joinStr);
        if (items.length !== 2) {
            continue
        }

        let colName = items[0].trim();
        let indexes = items[1].trim();

        if (indexes === "") {
            continue
        }

        for (var index of JSON.parse(indexes)) {
            print("begin add collectionName:", colName, "index:", JSON.stringify(index));
            // 一次只创建一个索引,防止批量创建索引过程中的错误可能导致多个索引创建失败
            let rs = db.runCommand(
                {
                    createIndexes: colName,
                    indexes: [index]
                }
            );
            print("operation result:", JSON.stringify(rs),"\n");
        }
        print("\n");
    }
}

// 导出索引执行findAllIndexes
// findAllIndexes();

// 导入索引执行addAllIndexes
// addAllIndexes();

导出导入索引的执行过程

假设要导出的mongodb地址是localhost:27011,db是test1
要导入的mongodb地址是localhost:27012,db是test2

  • 导出时只将"findAllIndexes();"这一行取消注释,执行命令: mongo localhost:27011/test1 exportImportIndexes.js > all_indexes.txt
  • 导入时只将"addAllIndexes();"这一行取消注释,执行命令: mongo localhost:27012/test2 exportImportIndexes.js > index_result.txt

作者: fireyun

出处: https://www.cnblogs.com/fireyun/

版权:本文版权归作者和博客园共有

转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出 原文链接 ;否则必究法律责任

标签:mongodb,备份,colName,indexes,索引,导入,let
From: https://www.cnblogs.com/xibuhaohao/p/17987420

相关文章

  • 教程|幻兽帕鲁服务器数据备份与恢复
    搭建幻兽帕鲁个人服务器,最近不少用户碰到内存不足、游戏坏档之类的问题。做好定时备份,才能轻松快速恢复游戏进度这里讲一下如何定时将服务器数据备份到腾讯云轻量对象存储服务,以及如何在有需要的时候进行数据恢复。服务器中间的数据迁移,也可以参考本指南,免去手动拷贝数据,直接使用......
  • mysqldump备份
     mysql备份:backup_dir='/data/backup/mysql'database_name='dbname'bak_save_days=7dd=`date+%Y-%m-%d-%H-%M-%S`if[!-d$backup_dir];thenmkdir-p$backup_dirfimysqldump--defaults-extra-file=/etc/mypass.txt--flush-logs--sin......
  • ETCD的备份与恢复
    备份写一个简单的etcd备份脚本如下:!/bin/bashset-eexec>>/var/log/backup_etcd.logDate=date+%Y-%m-%d-%H-%MEtcdEndpoints="localhost:2379"EtcdCmd="/usr/bin/etcdctl"BackupDir="/home/www/server/backup/etcd"BackupFile="snaps......
  • 单实例mongodb 部署
    配置文件mkdir/data/mongopush/{log,data,conf,scripts,tmp}systemLog:destination:filelogAppend:truelogRotate:reopenpath:/data/mongopush/log/mongodb.logstorage:dbPath:/data/mongopush/datajournal:enabled:truedirectoryPerDB:tru......
  • 感谢wps备份功能 救了我一命
    感谢wps备份功能救了我一命......
  • [转帖]能使 Oracle 索引失效的六大限制条件
    Oracle索引的目标是避免全表扫描,提高查询效率,但有些时候却适得其反。例如一张表中有上百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这可能是oracle索引失效造成的。oracle索引有一些限制条件,如果你违反了这些索引限制条件,那么即使你已经加了索引,oracle......
  • innobackupex 还原和备份实例
      InnoDB和非InnoDB文件的备份都是通过拷贝文件来做的,但是实现的方式不同,前者是以page为粒度做的(xtrabackup),后者是cp或者tar命令(innobackupex),xtrabackup 在读取每个page时会校验checksum值,保证数据块是一致的,而 innobackupex 在cpMyISAM文件时已经做了flush......
  • mysql innobackupex xtrabackup 大数据量 备份 还原
    大数据量备份与还原,始终是个难点。当MYSQL超10G,用mysqldump来导出就比较慢了。在这里推荐xtrabackup,这个工具比mysqldump要快很多。 一、Xtrabackup介绍1,Xtrabackup是什么Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDBHot......
  • SQL server 系统优化--通过执行计划优化索引(3)
    执行时间要7205ms,语句如下:    selecttop30this_.idasid10_0_,this_.objidasobjid10_0_,this_.objnameasobjname10_0_,this_.midasmid10_0_,this_.logtypeaslogtype10_0_,this_.logdescaslogdesc10_0_,this_.submitorassubmitor10_0_,this_.submitda......
  • SQL server 系统优化--通过执行计划优化索引(1)
    正常down机7次左右,在线人员一多,系统运行缓慢,严重影响业务操作,到了无法忍耐的地步,这几天一直在这边处理优化中的问题和升级系统。将这些优化办法和思路记录下来,给大家在以后优化系统中提供思考和建议。      这几天都在通过执行计划来优化索引:      1,首先通过DMVs性......