服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - MongoDB - MongoDB利用oplog恢复数据的方法

MongoDB利用oplog恢复数据的方法

2022-10-08 17:01那海蓝蓝 MongoDB

这篇文章主要介绍了MongoDB利用oplog恢复数据的方法,当我们对数据出现误操作的时候,可以利用oplog恢复数据,下文操作过程需要的小伙伴可以参考一下

当我们对数据出现误操作的时候,可以利用oplog恢复数据。

使用前提:

  • 1、环境是副本集
  • 2、必须有全备
  • 2、全备后oplog没有被覆盖

数据全备

?
1
mongodump -h 172.16.254.133 --port 27017 -o /mongodb/backup/backup

模拟故障

写入数据

?
1
2
3
4
5
6
7
handong1:PRIMARY> for (var i = 1; i <= 100; i++) {
...    db.test.insert( { id : i , name: "handong" , name1:"handong", name2:"handong", name3:"handong"} )
... }
WriteResult({ "nInserted" : 1 })
handong1:PRIMARY>
handong1:PRIMARY> db.test.count()
100

模拟误操作

?
1
2
3
4
handong1:PRIMARY> db.test.remove({})
WriteResult({ "nRemoved" : 100 })
handong1:PRIMARY> db.test.count()
0

所有文档被误删除。

恢复步骤

备份oplog

?
1
2
3
4
5
6
7
8
9
10
11
12
13
mongodump -h 172.16.254.133 --port 27017 -d local -c oplog.rs -o /mongodb/backup
2021-04-30T18:32:29.077+0800    writing local.oplog.rs to /mongodb/backup/local/oplog.rs.bson
2021-04-30T18:32:32.039+0800    local.oplog.rs  7108
2021-04-30T18:32:35.038+0800    local.oplog.rs  17912
2021-04-30T18:32:38.041+0800    local.oplog.rs  28226
2021-04-30T18:32:41.039+0800    local.oplog.rs  38642
2021-04-30T18:32:44.042+0800    local.oplog.rs  50679
2021-04-30T18:32:47.040+0800    local.oplog.rs  64001
2021-04-30T18:32:50.040+0800    local.oplog.rs  77265
2021-04-30T18:32:53.038+0800    local.oplog.rs  89739
2021-04-30T18:32:56.038+0800    local.oplog.rs  102449
2021-04-30T18:32:57.697+0800    local.oplog.rs  132459
2021-04-30T18:32:57.697+0800    done dumping local.oplog.rs (132459 documents)

解析oplog

?
1
2
bsondump /mongodb/backup/local/oplog.rs.bson  > /mongodb/backup/local/local.log
2021-04-30T18:34:27.612+0800    132459 objects found

将oplog备份和全备复制到standalone机

?
1
scp -r backup/ 172.16.254.130:/mongodb/backup/
?
1
scp -r local/ 172.16.254.130:/mongodb/backup/backup

查找误操作时间点

通过查看解析完的日志local.log发现误操作的时间点在1619778429。

进行数据恢复

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
mongorestore -h 172.16.254.130 --port 27017 --oplogReplay --oplogLimit 1619778429:1 /mongodb/backup/backup
2021-04-30T19:00:11.099+0800    preparing collections to restore from
2021-04-30T19:00:11.100+0800    don't know what to do with file "/mongodb/backup/backup/local/111.log", skipping...
2021-04-30T19:00:11.100+0800    don't know what to do with file "/mongodb/backup/backup/local/local.log", skipping...
2021-04-30T19:00:11.116+0800    reading metadata for db4.rcmd_1_tag_li_liao from /mongodb/backup/backup/db4/rcmd_1_tag_li_liao.metadata.json
2021-04-30T19:00:11.117+0800    reading metadata for ycsb.usertable from /mongodb/backup/backup/ycsb/usertable.metadata.json
2021-04-30T19:00:11.119+0800    reading metadata for db3.db3 from /mongodb/backup/backup/db3/db3.metadata.json
2021-04-30T19:00:11.119+0800    reading metadata for ycsb1.usertable from /mongodb/backup/backup/ycsb1/usertable.metadata.json
2021-04-30T19:00:11.170+0800    restoring ycsb.usertable from /mongodb/backup/backup/ycsb/usertable.bson
2021-04-30T19:00:11.187+0800    restoring ycsb1.usertable from /mongodb/backup/backup/ycsb1/usertable.bson
2021-04-30T19:00:11.391+0800    restoring db4.rcmd_1_tag_li_liao from /mongodb/backup/backup/db4/rcmd_1_tag_li_liao.bson
2021-04-30T19:00:11.580+0800    restoring db3.db3 from /mongodb/backup/backup/db3/db3.bson
2021-04-30T19:00:11.661+0800    no indexes to restore
2021-04-30T19:00:11.661+0800    finished restoring db3.db3 (6 documents, 0 failures)
2021-04-30T19:00:11.662+0800    reading metadata for db5.test from /mongodb/backup/backup/db5/test.metadata.json
2021-04-30T19:00:12.545+0800    restoring db5.test from /mongodb/backup/backup/db5/test.bson
2021-04-30T19:00:12.548+0800    no indexes to restore
2021-04-30T19:00:12.548+0800    finished restoring db5.test (0 documents, 0 failures)
2021-04-30T19:00:12.548+0800    reading metadata for db4.db4 from /mongodb/backup/backup/db4/db4.metadata.json
2021-04-30T19:00:13.784+0800    no indexes to restore
2021-04-30T19:00:13.784+0800    finished restoring ycsb1.usertable (30370 documents, 0 failures)
2021-04-30T19:00:13.785+0800    reading metadata for db4.test1 from /mongodb/backup/backup/db4/test1.metadata.json
2021-04-30T19:00:14.099+0800    [###################.....]          ycsb.usertable  47.8MB/58.9MB  (81.2%)
2021-04-30T19:00:14.099+0800    [........................]  db4.rcmd_1_tag_li_liao  79.8MB/3.32GB   (2.3%)
2021-04-30T19:00:14.099+0800   
2021-04-30T19:00:14.843+0800    [########################]  ycsb.usertable  58.9MB/58.9MB  (100.0%)
2021-04-30T19:00:14.843+0800    no indexes to restore
2021-04-30T19:00:14.843+0800    finished restoring ycsb.usertable (43458 documents, 0 failures)
2021-04-30T19:00:15.339+0800    restoring db4.db4 from /mongodb/backup/backup/db4/db4.bson
2021-04-30T19:00:17.077+0800    restoring db4.test1 from /mongodb/backup/backup/db4/test1.bson
2021-04-30T19:00:17.103+0800    [#.......................]  db4.rcmd_1_tag_li_liao  167MB/3.32GB  (4.9%)
2021-04-30T19:00:17.104+0800    [#.......................]                 db4.db4  8.11MB/137MB  (5.9%)
2021-04-30T19:00:17.104+0800    [........................]               db4.test1      0B/104MB  (0.0%)
2021-04-30T19:00:17.104+0800   
2021-04-30T19:00:20.099+0800    [#.......................]  db4.rcmd_1_tag_li_liao  204MB/3.32GB   (6.0%)
2021-04-30T19:00:20.099+0800    [####....................]                 db4.db4  24.5MB/137MB  (18.0%)
2021-04-30T19:00:20.099+0800    [#.......................]               db4.test1  4.47MB/104MB   (4.3%)
2021-04-30T19:00:20.099+0800   
2021-04-30T19:00:23.099+0800    [#.......................]  db4.rcmd_1_tag_li_liao  272MB/3.32GB   (8.0%)
2021-04-30T19:00:23.099+0800    [######..................]                 db4.db4  39.7MB/137MB  (29.1%)
2021-04-30T19:00:23.099+0800    [####....................]               db4.test1  20.1MB/104MB  (19.3%)
2021-04-30T19:00:23.099+0800   
2021-04-30T19:00:26.102+0800    [##......................]  db4.rcmd_1_tag_li_liao  355MB/3.32GB  (10.4%)
2021-04-30T19:00:26.102+0800    [##########..............]                 db4.db4  58.0MB/137MB  (42.5%)
2021-04-30T19:00:26.102+0800    [########................]               db4.test1  38.1MB/104MB  (36.7%)
2021-04-30T19:00:26.102+0800   
2021-04-30T19:00:29.098+0800    [##......................]  db4.rcmd_1_tag_li_liao  401MB/3.32GB  (11.8%)
2021-04-30T19:00:29.098+0800    [############............]                 db4.db4  73.1MB/137MB  (53.5%)
2021-04-30T19:00:29.098+0800    [###########.............]               db4.test1  51.8MB/104MB  (49.8%)
2021-04-30T19:00:29.098+0800   
2021-04-30T19:00:32.097+0800    [###.....................]  db4.rcmd_1_tag_li_liao  494MB/3.32GB  (14.5%)
2021-04-30T19:00:32.097+0800    [###############.........]                 db4.db4  90.8MB/137MB  (66.5%)
2021-04-30T19:00:32.097+0800    [###############.........]               db4.test1  67.3MB/104MB  (64.7%)
2021-04-30T19:00:32.097+0800   
2021-04-30T19:00:35.100+0800    [###.....................]  db4.rcmd_1_tag_li_liao  556MB/3.32GB  (16.3%)
2021-04-30T19:00:35.100+0800    [###################.....]                 db4.db4   110MB/137MB  (80.5%)
2021-04-30T19:00:35.100+0800    [###################.....]               db4.test1  86.1MB/104MB  (82.8%)
2021-04-30T19:00:35.100+0800   
2021-04-30T19:00:38.097+0800    [####....................]  db4.rcmd_1_tag_li_liao  620MB/3.32GB  (18.2%)
2021-04-30T19:00:38.097+0800    [#####################...]                 db4.db4   124MB/137MB  (91.1%)
2021-04-30T19:00:38.097+0800    [#######################.]               db4.test1   101MB/104MB  (96.7%)
2021-04-30T19:00:38.097+0800   
2021-04-30T19:00:39.023+0800    [########################]  db4.test1  104MB/104MB  (100.0%)
2021-04-30T19:00:39.023+0800    no indexes to restore
2021-04-30T19:00:39.023+0800    finished restoring db4.test1 (1000000 documents, 0 failures)
2021-04-30T19:00:40.386+0800    [########################]  db4.db4  137MB/137MB  (100.0%)
2021-04-30T19:00:40.386+0800    no indexes to restore
2021-04-30T19:00:40.386+0800    finished restoring db4.db4 (1313657 documents, 0 failures)
2021-04-30T19:00:41.097+0800    [####....................]  db4.rcmd_1_tag_li_liao  684MB/3.32GB  (20.1%)
2021-04-30T19:00:44.097+0800    [#####...................]  db4.rcmd_1_tag_li_liao  760MB/3.32GB  (22.3%)
2021-04-30T19:00:47.097+0800    [#####...................]  db4.rcmd_1_tag_li_liao  836MB/3.32GB  (24.6%)
2021-04-30T19:00:50.098+0800    [######..................]  db4.rcmd_1_tag_li_liao  906MB/3.32GB  (26.6%)
2021-04-30T19:00:53.098+0800    [#######.................]  db4.rcmd_1_tag_li_liao  994MB/3.32GB  (29.2%)
2021-04-30T19:00:56.098+0800    [#######.................]  db4.rcmd_1_tag_li_liao  1.03GB/3.32GB  (31.0%)
2021-04-30T19:00:59.098+0800    [########................]  db4.rcmd_1_tag_li_liao  1.11GB/3.32GB  (33.3%)
2021-04-30T19:01:02.097+0800    [########................]  db4.rcmd_1_tag_li_liao  1.18GB/3.32GB  (35.5%)
2021-04-30T19:01:05.101+0800    [#########...............]  db4.rcmd_1_tag_li_liao  1.26GB/3.32GB  (38.0%)
2021-04-30T19:01:08.097+0800    [#########...............]  db4.rcmd_1_tag_li_liao  1.32GB/3.32GB  (39.7%)
2021-04-30T19:01:11.100+0800    [#########...............]  db4.rcmd_1_tag_li_liao  1.37GB/3.32GB  (41.1%)
2021-04-30T19:01:14.098+0800    [##########..............]  db4.rcmd_1_tag_li_liao  1.43GB/3.32GB  (43.2%)
2021-04-30T19:01:17.097+0800    [##########..............]  db4.rcmd_1_tag_li_liao  1.50GB/3.32GB  (45.0%)
2021-04-30T19:01:20.098+0800    [###########.............]  db4.rcmd_1_tag_li_liao  1.54GB/3.32GB  (46.3%)
2021-04-30T19:01:23.098+0800    [###########.............]  db4.rcmd_1_tag_li_liao  1.58GB/3.32GB  (47.6%)
2021-04-30T19:01:26.098+0800    [###########.............]  db4.rcmd_1_tag_li_liao  1.64GB/3.32GB  (49.3%)
2021-04-30T19:01:29.097+0800    [############............]  db4.rcmd_1_tag_li_liao  1.71GB/3.32GB  (51.4%)
2021-04-30T19:01:32.097+0800    [############............]  db4.rcmd_1_tag_li_liao  1.77GB/3.32GB  (53.2%)
2021-04-30T19:01:35.098+0800    [#############...........]  db4.rcmd_1_tag_li_liao  1.85GB/3.32GB  (55.7%)
2021-04-30T19:01:38.097+0800    [#############...........]  db4.rcmd_1_tag_li_liao  1.90GB/3.32GB  (57.2%)
2021-04-30T19:01:41.097+0800    [##############..........]  db4.rcmd_1_tag_li_liao  1.98GB/3.32GB  (59.5%)
2021-04-30T19:01:44.827+0800    [##############..........]  db4.rcmd_1_tag_li_liao  2.00GB/3.32GB  (60.3%)
2021-04-30T19:01:47.097+0800    [##############..........]  db4.rcmd_1_tag_li_liao  2.05GB/3.32GB  (61.8%)
2021-04-30T19:01:50.098+0800    [###############.........]  db4.rcmd_1_tag_li_liao  2.12GB/3.32GB  (63.9%)
2021-04-30T19:01:53.097+0800    [###############.........]  db4.rcmd_1_tag_li_liao  2.19GB/3.32GB  (65.9%)
2021-04-30T19:01:56.097+0800    [################........]  db4.rcmd_1_tag_li_liao  2.26GB/3.32GB  (67.9%)
2021-04-30T19:01:59.099+0800    [################........]  db4.rcmd_1_tag_li_liao  2.32GB/3.32GB  (69.8%)
2021-04-30T19:02:02.098+0800    [#################.......]  db4.rcmd_1_tag_li_liao  2.39GB/3.32GB  (72.0%)
2021-04-30T19:02:05.097+0800    [#################.......]  db4.rcmd_1_tag_li_liao  2.47GB/3.32GB  (74.4%)
2021-04-30T19:02:08.097+0800    [##################......]  db4.rcmd_1_tag_li_liao  2.52GB/3.32GB  (76.0%)
2021-04-30T19:02:11.097+0800    [##################......]  db4.rcmd_1_tag_li_liao  2.59GB/3.32GB  (77.8%)
2021-04-30T19:02:14.097+0800    [###################.....]  db4.rcmd_1_tag_li_liao  2.66GB/3.32GB  (80.0%)
2021-04-30T19:02:17.097+0800    [###################.....]  db4.rcmd_1_tag_li_liao  2.72GB/3.32GB  (81.9%)
2021-04-30T19:02:20.097+0800    [####################....]  db4.rcmd_1_tag_li_liao  2.78GB/3.32GB  (83.7%)
2021-04-30T19:02:23.097+0800    [####################....]  db4.rcmd_1_tag_li_liao  2.85GB/3.32GB  (85.7%)
2021-04-30T19:02:26.098+0800    [#####################...]  db4.rcmd_1_tag_li_liao  2.94GB/3.32GB  (88.4%)
2021-04-30T19:02:29.097+0800    [#####################...]  db4.rcmd_1_tag_li_liao  3.00GB/3.32GB  (90.4%)
2021-04-30T19:02:32.097+0800    [######################..]  db4.rcmd_1_tag_li_liao  3.06GB/3.32GB  (92.1%)
2021-04-30T19:02:35.099+0800    [######################..]  db4.rcmd_1_tag_li_liao  3.12GB/3.32GB  (93.9%)
2021-04-30T19:02:38.097+0800    [######################..]  db4.rcmd_1_tag_li_liao  3.15GB/3.32GB  (95.0%)
2021-04-30T19:02:41.098+0800    [#######################.]  db4.rcmd_1_tag_li_liao  3.21GB/3.32GB  (96.7%)
2021-04-30T19:02:44.167+0800    [#######################.]  db4.rcmd_1_tag_li_liao  3.26GB/3.32GB  (98.0%)
2021-04-30T19:02:47.097+0800    [#######################.]  db4.rcmd_1_tag_li_liao  3.32GB/3.32GB  (99.9%)
2021-04-30T19:02:47.392+0800    [########################]  db4.rcmd_1_tag_li_liao  3.32GB/3.32GB  (100.0%)
2021-04-30T19:02:47.393+0800    no indexes to restore
2021-04-30T19:02:47.393+0800    finished restoring db4.rcmd_1_tag_li_liao (379143 documents, 0 failures)
2021-04-30T19:02:47.393+0800    restoring users from /mongodb/backup/backup/admin/system.users.bson
2021-04-30T19:02:50.655+0800    admin.tempusers  2.05KB
2021-04-30T19:02:50.655+0800    admin.tempusers  2.05KB
2021-04-30T19:02:51.905+0800    replaying oplog
2021-04-30T19:02:53.097+0800    oplog  483KB
2021-04-30T19:02:56.097+0800    oplog  20.2MB
2021-04-30T19:02:59.100+0800    oplog  36.9MB
2021-04-30T19:03:02.097+0800    oplog  50.1MB
2021-04-30T19:03:05.098+0800    oplog  69.0MB
2021-04-30T19:03:08.097+0800    oplog  90.6MB
2021-04-30T19:03:11.097+0800    oplog  124MB
2021-04-30T19:03:14.097+0800    oplog  159MB
2021-04-30T19:03:17.098+0800    oplog  185MB
2021-04-30T19:03:20.097+0800    oplog  219MB
2021-04-30T19:03:23.098+0800    oplog  256MB
2021-04-30T19:03:26.097+0800    oplog  290MB
2021-04-30T19:03:29.097+0800    oplog  323MB
2021-04-30T19:03:32.097+0800    oplog  357MB
2021-04-30T19:03:35.097+0800    oplog  391MB
2021-04-30T19:03:38.098+0800    oplog  427MB
2021-04-30T19:03:41.098+0800    oplog  464MB
2021-04-30T19:03:44.097+0800    oplog  501MB
2021-04-30T19:03:47.097+0800    oplog  544MB
2021-04-30T19:03:50.098+0800    oplog  580MB
2021-04-30T19:03:53.098+0800    oplog  619MB
2021-04-30T19:03:56.098+0800    oplog  650MB
2021-04-30T19:03:59.099+0800    oplog  687MB
2021-04-30T19:04:02.097+0800    oplog  722MB
2021-04-30T19:04:05.097+0800    oplog  758MB
2021-04-30T19:04:08.098+0800    oplog  795MB
2021-04-30T19:04:11.097+0800    oplog  826MB
2021-04-30T19:04:14.098+0800    oplog  858MB
2021-04-30T19:04:17.102+0800    oplog  893MB
2021-04-30T19:04:20.097+0800    oplog  929MB
2021-04-30T19:04:23.098+0800    oplog  968MB
2021-04-30T19:04:26.098+0800    oplog  1001MB
2021-04-30T19:04:29.097+0800    oplog  1002MB
2021-04-30T19:04:32.097+0800    oplog  1003MB
2021-04-30T19:04:35.097+0800    oplog  1004MB
2021-04-30T19:04:38.097+0800    oplog  1004MB
2021-04-30T19:04:38.597+0800    applied 130029 oplog entries
2021-04-30T19:04:38.597+0800    oplog  1005MB
2021-04-30T19:04:38.614+0800    2766634 document(s) restored successfully. 0 document(s) failed to restore.

检查恢复结果

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> show dbs
admin   0.000GB
config  0.000GB
db3     0.000GB
db4     3.355GB
db5     0.000GB
local   0.000GB
ycsb    0.060GB
ycsb1   0.041GB
>
>
> use db5
switched to db db5
>
> db.test.count()
100

可以看到我们前期插入的100记录以及恢复成功。

到此这篇关于MongoDB利用oplog恢复数据介绍的文章就介绍到这了,更多相关oplog数据恢复内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.51cto.com/u_12592884/2747289

延伸 · 阅读

精彩推荐