跳转至

9. 备份恢复-oplog

--oplog是mongodump和mongorestore的高级企业应用
注意:--oplog是replica set或者master、slave模式专用

1. oplog介绍

#1.use oplog for taking a point-in-time snapshot
#2.在replica set中,oplog是一个定容集合(capped collection),它的默认大小是磁盘空间的5%(可以通过--oplogSizeMB参数修改),位于local库的db.oplog.rs
#3.其中记录的是整个mongod实例一段时间内数据库的所有变更(插入、更新、删除)操作
#4.当空间用完时,新纪录会自动覆盖最老的记录。其覆盖范围被称作oplog时间窗口。
#5.需要注意的是,因为oplog是一个定容集合,所以时间窗口能覆盖的范围会因为你单位时间内的更新次数不同而变化。
#6.想要查看当前的oplog时间窗口的预计值,可以使用以下命令
    rs.printReplicationInfo()
#在第6步后执行如下命令查看
#1.登录复制集主库
mongo --port 28017

#2.查看oplog时间窗口
rs.printReplicationInfo()
#1.登录复制集
[mongod@151 ~]$ mongo --port 28017
MongoDB shell version: 3.2.22
connecting to: 127.0.0.1:28017/test
my_repl:SECONDARY>

#2.查看oplog时间窗口,得到时间大概是23.54小时
my_repl:SECONDARY> rs.printReplicationInfo()
configured oplog size:   2048MB
log length start to end: 84746secs (23.54hrs)
oplog first event time:  Wed May 12 2021 18:07:53 GMT+0800 (CST)
oplog last event time:   Thu May 13 2021 17:40:19 GMT+0800 (CST)
now:                     Thu May 13 2021 19:22:20 GMT+0800 (CST)
my_repl:SECONDARY>

#3.查看主库
my_repl:SECONDARY> rs.isMaster()
{
        "hosts" : [
                "192.168.178.151:28019",
                "192.168.178.151:28020",
                "192.168.178.151:28018",
                "192.168.178.151:28017"
        ],
        "setName" : "my_repl",
        "setVersion" : 16,
        "ismaster" : false,
        "secondary" : true,
        "primary" : "192.168.178.151:28019",
        "me" : "192.168.178.151:28017",
        "maxBsonObjectSize" : 16777216,
        "maxMessageSizeBytes" : 48000000,
        "maxWriteBatchSize" : 1000,
        "localTime" : ISODate("2021-05-13T11:22:24.188Z"),
        "maxWireVersion" : 4,
        "minWireVersion" : 0,
        "ok" : 1
}
my_repl:SECONDARY>
my_repl:SECONDARY> exit
bye

2. oplog热备及恢复命令

#1.备份命令
mongodump --port 28017 --oplog -o /mongodb/backup

#2.恢复命令
mongorestore --port 28017 --oplogReplay /mongodb/backup

3. 故障模拟

#1.背景:每天0点全备,oplog恢复窗口为48小时
#2.故障:上午10点,world.city表呗误删除

4. 恢复思路

1.停应用,挂维护页
2.找测试库
3.恢复昨晚的全备
4.集群全备之后到误删除之前的oplog,并恢复到测试库
5.将误删除表导出,恢复到生产库

5. 准备复制集(略)

#见前面的文章

6. 启动复制集

su - mongod

mongod -f /mongodb/28017/conf/mongo.conf
mongod -f /mongodb/28018/conf/mongo.conf
mongod -f /mongodb/28019/conf/mongo.conf

netstat -tunlp|grep 2801
[mongod@151 ~]$ mongod -f /mongodb/28017/conf/mongo.conf
about to fork child process, waiting until server is ready for connections.
forked process: 70561
child process started successfully, parent exiting
[mongod@151 ~]$ mongod -f /mongodb/28018/conf/mongo.conf
about to fork child process, waiting until server is ready for connections.
forked process: 70645
child process started successfully, parent exiting
[mongod@151 ~]$ mongod -f /mongodb/28019/conf/mongo.conf
about to fork child process, waiting until server is ready for connections.
forked process: 70725
child process started successfully, parent exiting
[mongod@151 ~]$
[mongod@151 ~]$ netstat -tunlp |grep 2801
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:28017           0.0.0.0:*               LISTEN      70561/mongod
tcp        0      0 0.0.0.0:28018           0.0.0.0:*               LISTEN      70645/mongod
tcp        0      0 0.0.0.0:28019           0.0.0.0:*               LISTEN      70725/mongod

7. 登录主库,模拟原始数据

mongo --port 28017
use wo
for(var i=1;i<2001;i++){
    db.ci.insert({a:i})
}
db.ci.count()
[mongod@151 ~]$ mongo --port 28017
MongoDB shell version: 3.2.22
connecting to: 127.0.0.1:28017/test
my_repl:PRIMARY>
my_repl:PRIMARY> show dbs
local  0.000GB
test   0.000GB
my_repl:PRIMARY>
my_repl:PRIMARY> use wo
switched to db wo
my_repl:PRIMARY>
my_repl:PRIMARY> for(var i=1;i<2001;i++){
... db.ci.insert({a:i})
... }
WriteResult({ "nInserted" : 1 })
my_repl:PRIMARY>
my_repl:PRIMARY> db.ci.count()
2000
my_repl:PRIMARY>
my_repl:PRIMARY> exit
bye

8. 模拟昨晚0点全备

rm -rf /mongodb/backup/*
mongodump --port 28017 --oplog -o /mongodb/backup
[mongod@151 ~]$ rm -rf /mongodb/backup/*
[mongod@151 ~]$
[mongod@151 ~]$ ls /mongodb/backup/
[mongod@151 ~]$
[mongod@151 ~]$ mongodump --port 28017 --oplog -o /mongodb/backup
2021-05-13T15:28:02.199+0800    writing wo.ci to
2021-05-13T15:28:02.201+0800    writing test.t1 to
2021-05-13T15:28:02.205+0800    done dumping test.t1 (1 document)
2021-05-13T15:28:02.209+0800    done dumping wo.ci (2000 documents)
2021-05-13T15:28:02.212+0800    writing captured oplog to
2021-05-13T15:28:02.215+0800            dumped 0 oplog entries
[mongod@151 ~]$
[mongod@151 ~]$ ls /mongodb/backup/
oplog.bson  test  wo
[mongod@151 ~]$
[mongod@151 ~]$ ls /mongodb/backup/wo/
ci.bson  ci.metadata.json

9. 模拟0点到10点数据

mongo --port 28017
use wo
db.ci1.insert({id:1})
db.ci2.insert({id:2})

db.ci.insert({a:2001})
[mongod@151 ~]$ mongo --port 28017
MongoDB shell version: 3.2.22
connecting to: 127.0.0.1:28017/test
my_repl:PRIMARY>
my_repl:PRIMARY> use wo
switched to db wo
my_repl:PRIMARY>
my_repl:PRIMARY> db.ci1.insert({id:1})
WriteResult({ "nInserted" : 1 })
my_repl:PRIMARY> db.ci2.insert({id:2})
WriteResult({ "nInserted" : 1 })
my_repl:PRIMARY>
my_repl:PRIMARY> db.ci.count()
2000
my_repl:PRIMARY>
my_repl:PRIMARY> db.ci.insert({a:2001})
WriteResult({ "nInserted" : 1 })
my_repl:PRIMARY>
my_repl:PRIMARY> db.ci.count()
2001
my_repl:PRIMARY>
my_repl:PRIMARY> exit
bye

10. 模拟10点误删除

mongo --port 28017
use wo
db.ci.drop()
show tables
[mongod@151 ~]$ mongo --port 28017
MongoDB shell version: 3.2.22
connecting to: 127.0.0.1:28017/test
my_repl:PRIMARY>
my_repl:PRIMARY> use wo
switched to db wo
my_repl:PRIMARY>
my_repl:PRIMARY> db.ci.drop()
true
my_repl:PRIMARY>
my_repl:PRIMARY> show tables
ci1
ci2
my_repl:PRIMARY>
my_repl:PRIMARY> exit
bye

11. 停应用,挂维护页,准备测试库(略)

#疑问:此时需不需要再执行一次全备,以防出现问题???(一般全备一次时间大概多少?)

12. 备份oplog日志表

mongodump --port 28017 -d local -c oplog.rs -o /mongodb/backup
[mongod@151 ~]$ mongo --port 28017
MongoDB shell version: 3.2.22
connecting to: 127.0.0.1:28017/test
my_repl:PRIMARY>
my_repl:PRIMARY> use wo
switched to db wo
my_repl:PRIMARY>
my_repl:PRIMARY> db.ci.drop()
true
my_repl:PRIMARY>
my_repl:PRIMARY> show tables
ci1
ci2
my_repl:PRIMARY>
my_repl:PRIMARY> exit
bye
[mongod@151 ~]$
[mongod@151 ~]$
[mongod@151 ~]$ mongo --port 28017
MongoDB shell version: 3.2.22
connecting to: 127.0.0.1:28017/test
my_repl:PRIMARY>
my_repl:PRIMARY> show dbs
local  0.000GB
test   0.000GB
wo     0.000GB
my_repl:PRIMARY>
my_repl:PRIMARY> use local
switched to db local
my_repl:PRIMARY>
my_repl:PRIMARY> show tables
me
oplog.rs
replset.election
replset.minvalid
startup_log
system.replset
my_repl:PRIMARY>
my_repl:PRIMARY> exit
bye
[mongod@151 ~]$ mongodump --port 28017 -d local -c oplog.rs -o /mongodb/backup
2021-05-13T15:30:59.304+0800    writing local.oplog.rs to
2021-05-13T15:30:59.313+0800    done dumping local.oplog.rs (2028 documents)
[mongod@151 ~]$
[mongod@151 ~]$ ls /mongodb/backup/
local  oplog.bson  test  wo
[mongod@151 ~]$
[mongod@151 ~]$ ls /mongodb/backup/local/
oplog.rs.bson  oplog.rs.metadata.json

13. 拷贝上一步备份的oplog日志到全备

#1.拷贝上一步备份出来的oplog表的bson文件,到全备的目录,并改名
cp /mongodb/backup/local/oplog.rs.bson   /mongodb/backup/oplog.bson

#2.删除原来的bson表(上一步也可以直接使用mv)
rm -rf /mongodb/backup/local/*
#1.查看
[mongod@151 ~]$ ls /mongodb/backup/
local  oplog.bson  test  wo
[mongod@151 ~]$
[mongod@151 ~]$ ls /mongodb/backup/local/
oplog.rs.bson  oplog.rs.metadata.json

#2.拷贝
[mongod@151 ~]$ cp /mongodb/backup/local/oplog.rs.bson   /mongodb/backup/oplog.bson
[mongod@151 ~]$ ls /mongodb/backup/
local  oplog.bson  test  wo

#3.删除
[mongod@151 ~]$ ls /mongodb/backup/local/
oplog.rs.bson  oplog.rs.metadata.json
[mongod@151 ~]$
[mongod@151 ~]$ rm -rf /mongodb/backup/local/*
[mongod@151 ~]$
[mongod@151 ~]$ ls /mongodb/backup/local/
[mongod@151 ~]$

14. 截取oplog时间点及位置

#方法1(推荐!!!)
#1.登录
mongo --port 28017

#2.查找到误删除操作的json
use local
db.oplog.rs.find({op:"c"}).pretty()

#3.找到时间戳,即误删除时间点的位置
#方法2(不推荐,数据量大时,很难找到)
#1.读取bson日志信息
bsondump oplog.rs.bson

#2.在末尾找到drop操作,从中找到时间点位置
[mongod@151 ~]$ mongo --port 28017
MongoDB shell version: 3.2.22
connecting to: 127.0.0.1:28017/test
my_repl:PRIMARY>
my_repl:PRIMARY> use local
switched to db local
my_repl:PRIMARY>
my_repl:PRIMARY> show tables
me
oplog.rs
replset.election
replset.minvalid
startup_log
system.replset
my_repl:PRIMARY>
my_repl:PRIMARY> db.oplog.rs.find({op:"c"}).pretty()
{
        "ts" : Timestamp(1620814488, 1),
        "t" : NumberLong(1),
        "h" : NumberLong("3842816054841868414"),
        "v" : 2,
        "op" : "c",
        "ns" : "test.$cmd",
        "o" : {
                "create" : "t1"
        }
}
{
        "ts" : Timestamp(1620890813, 1),
        "t" : NumberLong(3),
        "h" : NumberLong("-8881546255090375789"),
        "v" : 2,
        "op" : "c",
        "ns" : "wo.$cmd",
        "o" : {
                "create" : "ci"
        }
}
{
        "ts" : Timestamp(1620890945, 1),
        "t" : NumberLong(3),
        "h" : NumberLong("-775331679818015188"),
        "v" : 2,
        "op" : "c",
        "ns" : "wo.$cmd",
        "o" : {
                "create" : "ci1"
        }
}
{
        "ts" : Timestamp(1620890946, 1),
        "t" : NumberLong(3),
        "h" : NumberLong("6894394491617287396"),
        "v" : 2,
        "op" : "c",
        "ns" : "wo.$cmd",
        "o" : {
                "create" : "ci2"
        }
}
{
        "ts" : Timestamp(1620891006, 1),
        "t" : NumberLong(3),
        "h" : NumberLong("5148262837648218566"),
        "v" : 2,
        "op" : "c",
        "ns" : "wo.$cmd",
        "o" : {
                "drop" : "ci"
        }
}

#得到误删除的操作在最后一个json中
    {
            "ts" : Timestamp(1620891006, 1),
            "t" : NumberLong(3),
            "h" : NumberLong("5148262837648218566"),
            "v" : 2,
            "op" : "c",
            "ns" : "wo.$cmd",
            "o" : {
                    "drop" : "ci"
            }
    }
    #得到时间戳位置
        "ts" : Timestamp(1620891006, 1)

15. 恢复全备+oplog

#注意:此步骤在测试库执行!!!
mongorestore --port 28017 --oplogReplay --oplogLimit "1543898161:1" --drop  /mongodb/backup/

#--oplogLimit 后面跟的是上一步截取的时间点及位置信息
#根据上一步得到的时间点位置,Timestamp(1620891006, 1),得到:--oplogLimit "1620891006:1"
mongorestore --port 28017 --oplogReplay --oplogLimit "1620891006:1" --drop  /mongodb/backup/
#1.登录测试库,恢复全备
[mongod@151 ~]$ mongorestore --port 28017 --oplogReplay --oplogLimit "1620891006:1" --drop  /mongodb/backup/
2021-05-13T15:39:54.794+0800    building a list of dbs and collections to restore from /mongodb/backup dir
2021-05-13T15:39:54.796+0800    reading metadata for wo.ci from /mongodb/backup/wo/ci.metadata.json
2021-05-13T15:39:54.812+0800    restoring wo.ci from /mongodb/backup/wo/ci.bson
2021-05-13T15:39:54.873+0800    reading metadata for test.t1 from /mongodb/backup/test/t1.metadata.json
2021-05-13T15:39:54.927+0800    restoring test.t1 from /mongodb/backup/test/t1.bson
2021-05-13T15:39:55.229+0800    restoring indexes for collection test.t1 from metadata
2021-05-13T15:39:55.230+0800    finished restoring test.t1 (1 document)
2021-05-13T15:39:55.387+0800    restoring indexes for collection wo.ci from metadata
2021-05-13T15:39:55.391+0800    finished restoring wo.ci (2000 documents)
2021-05-13T15:39:55.391+0800    replaying oplog
2021-05-13T15:39:58.414+0800    oplog   59.3KB
2021-05-13T15:40:01.413+0800    oplog   108KB
2021-05-13T15:40:04.413+0800    oplog   157KB
2021-05-13T15:40:07.413+0800    oplog   204KB
2021-05-13T15:40:07.664+0800    oplog   208KB
2021-05-13T15:40:07.664+0800    done
[mongod@151 ~]$

16. 登录查看

mongo --port 28017
use wo
show tables;
db.ci.count()
[mongod@151 ~]$ mongo --port 28017
MongoDB shell version: 3.2.22
connecting to: 127.0.0.1:28017/test
my_repl:PRIMARY>
my_repl:PRIMARY> use wo
switched to db wo
my_repl:PRIMARY>
#ci表恢复回来了
my_repl:PRIMARY> show tables;
ci
ci1
ci2
my_repl:PRIMARY>
#ci表在10点前的操作数据恢复回来了
my_repl:PRIMARY> db.ci.count()
2001
my_repl:PRIMARY>
my_repl:PRIMARY> exit
bye
#数据恢复成功!

至此,数据恢复成功!!!

17. 从测试库导出ci表(看19步)

mkdir /mongodb/backup1

mongodump --port 28017  -d wo -c ci -o /mongodb/backup1     #可以导出单张表吧?还是使用mongoexport?

#通过复习,得到如下经验
    1.bson适合做备份,使用mongodump
    2.json适合做迁移,使用mongoexport
#此题是迁移,所以使用json,所以使用mongoexport命令比较好
#1.创建备份目录
[mongod@151 ~]$ mkdir /mongodb/backup1
[mongod@151 ~]$

#--oplog只支持全库备份!!!
[mongod@151 ~]$ mongodump --port 28017 --oplog -d wo -c ci -o /mongodb/backup1
2021-05-13T15:45:43.696+0800    Failed: bad option: --oplog mode only supported on full dumps
[mongod@151 ~]$

#2.备份单表
[mongod@151 ~]$ mongodump --port 28017  -d wo -c ci -o /mongodb/backup1
2021-05-13T15:45:58.290+0800    writing wo.ci to
2021-05-13T15:45:58.296+0800    done dumping wo.ci (2001 documents)
[mongod@151 ~]$

#3.查看
[mongod@151 ~]$ ls /mongodb/backup1/
wo
[mongod@151 ~]$
[mongod@151 ~]$ ls /mongodb/backup1/wo/
ci.bson  ci.metadata.json

18. 将ci表导入生产库(失败了)

mongorestore --port 28017 --oplogReplay /mongodb/backup1/wo/ci.bson    #还是使用mongoimport??
#这个命令只能恢复全备吗???
#报错 ...
[mongod@151 ~]$ mongorestore --port 28017 --oplogReplay /mongodb/backup1/wo/ci.bson
2021-05-13T15:48:31.041+0800    checking for collection data in /mongodb/backup1/wo/ci.bson
2021-05-13T15:48:31.043+0800    reading metadata for wo.ci from /mongodb/backup1/wo/ci.metadata.json
2021-05-13T15:48:31.043+0800    restoring wo.ci from /mongodb/backup1/wo/ci.bson
2021-05-13T15:48:31.103+0800    error: multiple errors in bulk operation:
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4bd3cc018f532839c58') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4bd3cc018f532839c59') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4bd3cc018f532839c5a') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4bd3cc018f532839c5b') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4be3cc018f532839c5c') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4be3cc018f532839c5d') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4be3cc018f532839c5e') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4be3cc018f532839c5f') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4be3cc018f532839c60') }
。。。
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4c93cc018f53283a426') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4c93cc018f53283a427') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd5524eddd81bb4f9243a') }

2021-05-13T15:48:47.490+0800    error: E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4c33cc018f53283a040') }
2021-05-13T15:48:47.490+0800    restoring indexes for collection wo.ci from metadata
2021-05-13T15:48:47.491+0800    finished restoring wo.ci (2001 documents)
2021-05-13T15:48:47.491+0800    replaying oplog
2021-05-13T15:48:47.491+0800    no oplog.bson file in root of the dump directory, skipping oplog application
2021-05-13T15:48:47.491+0800    done
0


#2.去掉 --oplogReplay 测试
[mongod@151 ~]$ mongorestore --port 28017  /mongodb/backup1/wo/ci.bson
2021-05-13T15:51:09.136+0800    checking for collection data in /mongodb/backup1/wo/ci.bson
2021-05-13T15:51:09.138+0800    reading metadata for wo.ci from /mongodb/backup1/wo/ci.metadata.json
2021-05-13T15:51:09.138+0800    restoring wo.ci from /mongodb/backup1/wo/ci.bson
2021-05-13T15:51:09.197+0800    error: multiple errors in bulk operation:
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4bd3cc018f532839c58') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4bd3cc018f532839c59') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4bd3cc018f532839c5a') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4bd3cc018f532839c5b') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4be3cc018f532839c5c') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4be3cc018f532839c5d') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4be3cc018f532839c5e') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4be3cc018f532839c5f') }
。。。

  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4c93cc018f53283a427') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd5524eddd81bb4f9243a') }

2021-05-13T15:50:25.826+0800    error: E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4c33cc018f53283a040') }
2021-05-13T15:50:25.826+0800    restoring indexes for collection wo.ci from metadata
2021-05-13T15:50:25.827+0800    finished restoring wo.ci (2001 documents)
2021-05-13T15:50:25.827+0800    done
[mongod@151 ~]$
[mongod@151 ~]$

#依旧报错。。。

19. 使用mongoexport导出ci表,导入生产库

#1.测试库导出ci表
mkdir /mongodb/backup2

mongoexport --port 28017  -d wo -c ci -o /mongodb/backup2/ci.json

#2.生产库导入ci表
mongoimport --port 28017 -d wo -c ci  --file /mongodb/backup2/ci.json

#如果生产库中有ci表,则加上--drop
mongoimport --port 28017 -d wo -c ci --drop --file  /mongodb/backup2/ci.json
[mongod@151 ~]$ mkdir /mongodb/backup2
[mongod@151 ~]$
[mongod@151 ~]$ mongoexport --port 28017  -d wo -c ci -o /mongodb/backup2
2021-05-13T16:00:16.026+0800    error opening output stream: open /mongodb/backup2: is a directory
[mongod@151 ~]$
[mongod@151 ~]$ mongoexport --port 28017  -d wo -c ci -o /mongodb/backup2/ci.json
2021-05-13T16:00:51.582+0800    connected to: localhost:28017
2021-05-13T16:00:51.605+0800    exported 2001 records
[mongod@151 ~]$
[mongod@151 ~]$ ls /mongodb/backup2/
ci.json
#导入生产库报错。
[mongod@151 ~]$
[mongod@151 ~]$ mongoimport --port 28017 -d wo -c ci --file /mongodb/backup2/ci.json
2021-05-13T16:03:34.834+0800    connected to: localhost:28017
2021-05-13T16:03:34.878+0800    error inserting documents: multiple errors in bulk operation:
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4bd3cc018f532839c58') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4bd3cc018f532839c59') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4bd3cc018f532839c5a') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4bd3cc018f532839c5b') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4be3cc018f532839c5c') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4be3cc018f532839c5d') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4be3cc018f532839c5e') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4be3cc018f532839c5f') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4be3cc018f532839c60') }
。。。


  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4c93cc018f53283a423') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4c93cc018f53283a424') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4c93cc018f53283a425') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4c93cc018f53283a426') }
  - E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd4c93cc018f53283a427') }

2021-05-13T16:02:44.100+0800    error inserting documents: E11000 duplicate key error collection: wo.ci index: _id_ dup key: { : ObjectId('609cd5524eddd81bb4f9243a') }
2021-05-13T16:02:44.100+0800    imported 2001 documents
[mongod@151 ~]$
[mongod@151 ~]$


#加上--drop参数测试
[mongod@151 ~]$ mongoimport --port 28017 -d wo -c ci --drop --file  /mongodb/backup2/ci.json
2021-05-13T16:07:19.480+0800    connected to: localhost:28017
2021-05-13T16:07:19.481+0800    dropping: wo.ci
2021-05-13T16:07:20.057+0800    imported 2001 documents
[mongod@151 ~]$

#导入成功!!!

最后更新: 2022-02-20 11:21:58