1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      MongoDB誤刪表恢復(fù)

      一、場(chǎng)景描述

      十載的南雄網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整南雄建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“南雄網(wǎng)站設(shè)計(jì)”,“南雄網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

          公司某工程師執(zhí)行db.giveget_card.drop(),誤將線上表刪除。

          幸好每天都有做備份,這個(gè)時(shí)候就體現(xiàn)了備份的重要性了,哈哈哈。。。

      二、模擬故障過(guò)程

      備份數(shù)據(jù)大小:

      rs_test01:PRIMARY> use ycsb
      switched to db ycsb
      rs_test01:PRIMARY> db.giveget_card.count();
      3173391

      刪除之前,此表有更新。

      rs_test01:PRIMARY> db.giveget_card.insert({id:1});
      WriteResult({ "nInserted" : 1 })
      rs_test01:PRIMARY> db.giveget_card.insert({id:2});
      WriteResult({ "nInserted" : 1 })
      rs_test01:PRIMARY> db.giveget_card.insert({id:3});
      WriteResult({ "nInserted" : 1 })
      rs_test01:PRIMARY> db.giveget_card.insert({id:4});
      WriteResult({ "nInserted" : 1 })

      其他表也有更新操作。

      rs_test01:PRIMARY> db.tab.find();
      { "_id" : ObjectId("59354ba202d9a99ab2f879c6"), "name" : "a" }
      { "_id" : ObjectId("59354ba602d9a99ab2f879c7"), "name" : "b" }
      { "_id" : ObjectId("59354ba802d9a99ab2f879c8"), "name" : "c" }
      { "_id" : ObjectId("59354baa02d9a99ab2f879c9"), "name" : "d" }

      刪除操作之后,此表和其他表都有更新。

      rs_test01:PRIMARY> db.giveget_card.find();
      { "_id" : ObjectId("59354c28d905432aeaccd53c"), "id" : 5 }
      { "_id" : ObjectId("59354c2bd905432aeaccd53d"), "id" : 6 }
      rs_test01:PRIMARY> db.tab.find();
      { "_id" : ObjectId("59354ba202d9a99ab2f879c6"), "name" : "a" }
      { "_id" : ObjectId("59354ba602d9a99ab2f879c7"), "name" : "b" }
      { "_id" : ObjectId("59354ba802d9a99ab2f879c8"), "name" : "c" }
      { "_id" : ObjectId("59354baa02d9a99ab2f879c9"), "name" : "d" }
      { "_id" : ObjectId("59354ccfd905432aeaccd542"), "name" : "e" }
      { "_id" : ObjectId("59354cd2d905432aeaccd543"), "name" : "f" }

      三、恢復(fù)步驟

      1、將備份中 tab 表的 giveget_card.bson 及 giveget_card.metadata.json 文件拷貝到 /tmp/restore/ycsb 目錄(自建目錄),ycsb 為庫(kù)名。

      # cp /data/backup/rs07/ycsb/giveget_card.* /tmp/restore/ycsb

      2、將備份時(shí)間之后,誤刪操作之前的 oplog 導(dǎo)出,用于恢復(fù)表

      # mongodump --port 2203 -d local -c oplog.rs -q '{"ts" : {$gte : Timestamp(1496664480, 10430), $lte : Timestamp(1496665113, 10430)}}' -o /tmp/oplog

      --時(shí)間戳 是使用轉(zhuǎn)換工具轉(zhuǎn)換之后的結(jié)果。

      3、使用 bsondump 查看 oplog 日志,找到 drop 操作的時(shí)間戳 1496665069

      # bsondump /tmp/oplog/local/oplog.rs.bson 
      {"ts":{"$timestamp":{"t":1496664760,"i":1}},"t":{"$numberLong":"12"},"h":{"$numberLong":"7079172056815894727"},"v":2,"op":"i","ns":"ycsb.giveget_card","o":{"_id":{"$oid":"59354ab8c5308d8c7a9da8b5"},"id":1.0}}
      {"ts":{"$timestamp":{"t":1496664762,"i":1}},"t":{"$numberLong":"12"},"h":{"$numberLong":"-1797107728294067016"},"v":2,"op":"i","ns":"ycsb.giveget_card","o":{"_id":{"$oid":"59354abac5308d8c7a9da8b6"},"id":2.0}}
      {"ts":{"$timestamp":{"t":1496664765,"i":1}},"t":{"$numberLong":"12"},"h":{"$numberLong":"8604646791509150392"},"v":2,"op":"i","ns":"ycsb.giveget_card","o":{"_id":{"$oid":"59354abdc5308d8c7a9da8b7"},"id":3.0}}
      {"ts":{"$timestamp":{"t":1496664768,"i":1}},"t":{"$numberLong":"12"},"h":{"$numberLong":"9018614066505371436"},"v":2,"op":"i","ns":"ycsb.giveget_card","o":{"_id":{"$oid":"59354ac0c5308d8c7a9da8b8"},"id":4.0}}
      {"ts":{"$timestamp":{"t":1496664994,"i":1}},"t":{"$numberLong":"12"},"h":{"$numberLong":"-4471524661347063602"},"v":2,"op":"c","ns":"ycsb.$cmd","o":{"create":"tab"}}
      {"ts":{"$timestamp":{"t":1496664994,"i":2}},"t":{"$numberLong":"12"},"h":{"$numberLong":"-4215905958456607246"},"v":2,"op":"i","ns":"ycsb.tab","o":{"_id":{"$oid":"59354ba202d9a99ab2f879c6"},"name":"a"}}
      {"ts":{"$timestamp":{"t":1496664998,"i":1}},"t":{"$numberLong":"12"},"h":{"$numberLong":"6170506962401844481"},"v":2,"op":"i","ns":"ycsb.tab","o":{"_id":{"$oid":"59354ba602d9a99ab2f879c7"},"name":"b"}}
      {"ts":{"$timestamp":{"t":1496665000,"i":1}},"t":{"$numberLong":"12"},"h":{"$numberLong":"-8071456063660489895"},"v":2,"op":"i","ns":"ycsb.tab","o":{"_id":{"$oid":"59354ba802d9a99ab2f879c8"},"name":"c"}}
      {"ts":{"$timestamp":{"t":1496665002,"i":1}},"t":{"$numberLong":"12"},"h":{"$numberLong":"4387884836668659146"},"v":2,"op":"i","ns":"ycsb.tab","o":{"_id":{"$oid":"59354baa02d9a99ab2f879c9"},"name":"d"}}
      {"ts":{"$timestamp":{"t":1496665069,"i":1}},"t":{"$numberLong":"12"},"h":{"$numberLong":"-6913449254950935781"},"v":2,"op":"c","ns":"ycsb.$cmd","o":{"drop":"giveget_card"}}
      2017-06-05T20:27:25.552+0800	10 objects found

      4、將 oplog 的 bson 文件拷貝到相應(yīng)目錄下

      # cp /tmp/oplog/local/oplog.rs.bson /tmp/restore/oplog.bson

      此時(shí)恢復(fù)的目錄結(jié)構(gòu):

      # pwd
      /tmp/restore
      # ls
      oplog.bson  ycsb

          

      5、至此,所有的準(zhǔn)備操作已經(jīng)做完,恢復(fù)數(shù)據(jù)。

      [root@ops-db-test02 restore]# mongorestore --port 2203 --oplogReplay --oplogLimit=1496665069:1 /tmp/restore
      2017-06-05T20:36:45.361+0800	building a list of dbs and collections to restore from /tmp/restore dir
      2017-06-05T20:36:45.364+0800	reading metadata for ycsb.giveget_card from /tmp/restore/ycsb/giveget_card.metadata.json
      2017-06-05T20:36:45.364+0800	restoring ycsb.giveget_card from /tmp/restore/ycsb/giveget_card.bson
      2017-06-05T20:36:48.362+0800	[........................]  ycsb.giveget_card  15.4MB/475MB  (3.2%)
      2017-06-05T20:36:51.362+0800	[#.......................]  ycsb.giveget_card  31.1MB/475MB  (6.6%)
      2017-06-05T20:36:54.362+0800	[##......................]  ycsb.giveget_card  46.6MB/475MB  (9.8%)
      2017-06-05T20:36:57.362+0800	[###.....................]  ycsb.giveget_card  62.1MB/475MB  (13.1%)
      2017-06-05T20:37:00.362+0800	[###.....................]  ycsb.giveget_card  76.4MB/475MB  (16.1%)
      2017-06-05T20:37:03.362+0800	[####....................]  ycsb.giveget_card  90.7MB/475MB  (19.1%)
      2017-06-05T20:37:06.362+0800	[#####...................]  ycsb.giveget_card  105MB/475MB  (22.0%)
      2017-06-05T20:37:09.362+0800	[######..................]  ycsb.giveget_card  120MB/475MB  (25.2%)
      2017-06-05T20:37:12.362+0800	[######..................]  ycsb.giveget_card  133MB/475MB  (28.0%)
      2017-06-05T20:37:15.362+0800	[#######.................]  ycsb.giveget_card  146MB/475MB  (30.8%)
      2017-06-05T20:37:18.363+0800	[########................]  ycsb.giveget_card  163MB/475MB  (34.3%)
      2017-06-05T20:37:21.362+0800	[########................]  ycsb.giveget_card  178MB/475MB  (37.4%)
      2017-06-05T20:37:24.362+0800	[#########...............]  ycsb.giveget_card  196MB/475MB  (41.3%)
      2017-06-05T20:37:27.362+0800	[##########..............]  ycsb.giveget_card  214MB/475MB  (45.0%)
      2017-06-05T20:37:30.362+0800	[###########.............]  ycsb.giveget_card  231MB/475MB  (48.6%)
      2017-06-05T20:37:33.362+0800	[############............]  ycsb.giveget_card  245MB/475MB  (51.5%)
      2017-06-05T20:37:36.362+0800	[#############...........]  ycsb.giveget_card  261MB/475MB  (54.8%)
      2017-06-05T20:37:39.362+0800	[##############..........]  ycsb.giveget_card  279MB/475MB  (58.7%)
      2017-06-05T20:37:42.362+0800	[###############.........]  ycsb.giveget_card  297MB/475MB  (62.5%)
      2017-06-05T20:37:45.362+0800	[###############.........]  ycsb.giveget_card  312MB/475MB  (65.8%)
      2017-06-05T20:37:48.362+0800	[################........]  ycsb.giveget_card  328MB/475MB  (69.0%)
      2017-06-05T20:37:51.362+0800	[#################.......]  ycsb.giveget_card  341MB/475MB  (71.8%)
      2017-06-05T20:37:54.362+0800	[#################.......]  ycsb.giveget_card  356MB/475MB  (74.9%)
      2017-06-05T20:37:57.362+0800	[##################......]  ycsb.giveget_card  373MB/475MB  (78.5%)
      2017-06-05T20:38:00.362+0800	[###################.....]  ycsb.giveget_card  388MB/475MB  (81.7%)
      2017-06-05T20:38:03.362+0800	[####################....]  ycsb.giveget_card  405MB/475MB  (85.2%)
      2017-06-05T20:38:06.362+0800	[#####################...]  ycsb.giveget_card  419MB/475MB  (88.2%)
      2017-06-05T20:38:09.362+0800	[#####################...]  ycsb.giveget_card  434MB/475MB  (91.4%)
      2017-06-05T20:38:12.362+0800	[######################..]  ycsb.giveget_card  442MB/475MB  (93.1%)
      2017-06-05T20:38:15.362+0800	[#######################.]  ycsb.giveget_card  459MB/475MB  (96.6%)
      2017-06-05T20:38:18.362+0800	[#######################.]  ycsb.giveget_card  475MB/475MB  (99.9%)
      2017-06-05T20:38:18.427+0800	[########################]  ycsb.giveget_card  475MB/475MB  (100.0%)
      2017-06-05T20:38:18.427+0800	restoring indexes for collection ycsb.giveget_card from metadata
      2017-06-05T20:38:44.680+0800	finished restoring ycsb.giveget_card (3173391 documents)
      2017-06-05T20:38:44.680+0800	replaying oplog
      2017-06-05T20:38:44.739+0800	done

      6、查看恢復(fù)的結(jié)果

      rs_test01:PRIMARY> db.giveget_card.find({id : {$gte : 1 }});
      { "_id" : ObjectId("59354cb9d905432aeaccd540"), "id" : 5 }
      { "_id" : ObjectId("59354cc0d905432aeaccd541"), "id" : 6 }
      { "_id" : ObjectId("59354ab8c5308d8c7a9da8b5"), "id" : 1 }
      { "_id" : ObjectId("59354abac5308d8c7a9da8b6"), "id" : 2 }
      { "_id" : ObjectId("59354abdc5308d8c7a9da8b7"), "id" : 3 }
      { "_id" : ObjectId("59354ac0c5308d8c7a9da8b8"), "id" : 4 }

      數(shù)據(jù)內(nèi)容相同,但存儲(chǔ)順序與之前數(shù)據(jù)的存儲(chǔ)順序不同了。

      rs_test01:PRIMARY> db.giveget_card.count();
      3173397

      結(jié)果 count= 備份表數(shù)據(jù) 3173391+ 之后的更新數(shù)據(jù) 6 。

          

      7、因?yàn)?dump 出來(lái)的 oplog 也包含了其他表的操作。查看恢復(fù)過(guò)程中有沒(méi)有對(duì)其他表產(chǎn)生影響。

      rs_test01:PRIMARY> db.tab.find();
      { "_id" : ObjectId("59354ba202d9a99ab2f879c6"), "name" : "a" }
      { "_id" : ObjectId("59354ba602d9a99ab2f879c7"), "name" : "b" }
      { "_id" : ObjectId("59354ba802d9a99ab2f879c8"), "name" : "c" }
      { "_id" : ObjectId("59354baa02d9a99ab2f879c9"), "name" : "d" }
      { "_id" : ObjectId("59354ccfd905432aeaccd542"), "name" : "e" }
      { "_id" : ObjectId("59354cd2d905432aeaccd543"), "name" : "f" }

      --查看 tab 表的數(shù)據(jù)跟原表數(shù)據(jù)相同,沒(méi)有什么影響,說(shuō)明其他表的日志在空跑。

      以上就是備份結(jié)合 oplog 的恢復(fù)操作。

      備份很重要!!! 備份很重要!!! 備份很重要!!!重要的事情講三遍~~~


      分享標(biāo)題:MongoDB誤刪表恢復(fù)
      文章起源:http://ef60e0e.cn/article/geceie.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        钟山县| 玉树县| 榆中县| 林口县| 镇康县| 屏南县| 阳泉市| 郓城县| 宁化县| 博乐市| 建瓯市| 安丘市| 黄山市| 登封市| 马尔康县| 灵璧县| 双峰县| 临湘市| 怀集县| 碌曲县| 永年县| 平塘县| 瑞安市| 松潘县| 海伦市| 高要市| 广昌县| 禹州市| 佛山市| 高州市| 东山县| 英吉沙县| 弋阳县| 广昌县| 乳山市| 华蓥市| 宁城县| 平原县| 搜索| 安达市| 五大连池市|