python 網絡爬蟲(十四)replaction複製集的實現 + MongoDB數據的幾種不同方式導入導出恢復(json,bson,csv格式)

一、MongoDB數據的導入導出


1. 通用選項


導入/導出可以操作的是本地的mongodb服務器,也可以是遠程的.

所以,都有如下通用選項:

-h host   主機
--port port    端口
-u username 用戶名
-p passwd   密碼

2. mongoexport 導出json格式的文件與mongoimport導入


-d  庫名
-c  表名
-f  field1,field2...列名
-q  查詢條件
-o  導出的文件名
--type csv 導出csv格式(便於和傳統數據庫交換數據)

注意:mongoexport在bin文件下與mongo同一級目錄

在這裏插入圖片描述
注意各個文件的含義

文件 意義
bsondump.exe 導出bsondump結構
mongo.exe 客戶端
mongod.exe 服務端
mongodump.exe 整體數據庫導出(備份工具)
mongoexport.exe 導出易識別的json文檔
mongofiles.exe GridFS工具,內建的分佈式文件系統
mongoimport.exe 數據導入程序
mongorestore.exe 數據恢復工具
mongos.exe 路由器(分片時使用)
mongostat.exe 監視程序

(1)mongoexport 導出json文件步驟


所以在使用時

  • (1)第一步:導出json格式

mongoexport -d shop -c goods -o goods.json

在這裏插入圖片描述

  • 輸出爲json文件,導出到當前路徑下

在這裏插入圖片描述

  • 內容:
    在這裏插入圖片描述

(2)mongoimport導入


  • (1)第一步:刪除該庫,導入文件

在這裏插入圖片描述

  • 導入格式
-d 待導入的數據庫
-c 待導入的表(不存在會自己創建)
--type  csv/json(默認)
--file 備份文件路徑

  • (2)第二步:導入json

mongoimport -d shop -c goods --file goods.json

在這裏插入圖片描述

結果:
在這裏插入圖片描述


(3)mongoexport導出csv格式


  • (1)第一步:導出csv格式(注意:需要指定field列,否則導出失敗)

不加–type csv

mongoexport -d shop -c goods -o goods.csv -f goods_id,good_name,shop_price

在這裏插入圖片描述
結果:
在這裏插入圖片描述

加–type csv

mongoexport -d shop -c goods -o goods.csv --type csv -f goods_id,good_name,shop_price

在這裏插入圖片描述
結果:
在這裏插入圖片描述

注意:導出的_id是固定存在的;一定要指定導出字段


(4)mongoimport導入csv文件


mongoimport -d test -c goods --type csv -f goods_id,goods_name --file ./goodsall.csv

3. mongodump導出二進制bson結構的數據及其索引信息


(1)mongodump導出步驟


  • 第一步:先創建兩個索引(方便查看bson文件)
db.goods.ensureIndex({goods_name:1,goods_id:1})

在這裏插入圖片描述



  • 第二步:導出
mongodump -d shop -c goods

在這裏插入圖片描述

注意: 會在當前文件下創建dump;默認是導出到mongo下的dump目錄

在這裏插入圖片描述

dump裏面有個庫名的文件夾,文件夾裏面會創建兩個文件

  1. 導出的文件放在以database(庫名)命名的目錄下
  2. 每個表導出2個文件,分別是bson結構的數據文件, json的索引信息
  3. 如果不聲明表名, 導出所有的表

在這裏插入圖片描述

索引在json文件中

在這裏插入圖片描述

bson文件中是集合的數據
在這裏插入圖片描述


4. mongorestore 導入二進制文件(恢復)


  • 第一步:先刪除庫

在這裏插入圖片描述

  • 第二步:導入
mongorestore -d shop -c goods --dir ./dump/shop/goods.bson

注意–dir是兩個-
在這裏插入圖片描述

結果:
在這裏插入圖片描述


二、replaction複製集


一般情況下,我們通常在機器上安裝了一個數據庫,這是我們的數據都是存在這個數據庫中的,如果有一天,因爲一些不可控因素導致數據庫宕機或者數據庫的文件丟失,此時損失就很大了。針對於這種問題,我們希望有一個數據庫集,在我們其中一個數據庫進行插入的時候,其他數據庫也能插入數據,這樣其中一臺服務器宕機了,也能夠使我們的數據正常存取。
在MongoDB中,是通過replaction複製集來實現此功能的。(不推薦使用主從複製)


1. 創建複製集的步驟(windows)


① 第一步:關閉服務 ,關掉mongo服務


創建複製集之前,把所有的mongo服務器都關掉
在這裏插入圖片描述


② 第二步:創建3個db


在這裏插入圖片描述


③ 第三步:打開三個cmd窗口作爲3個服務端


打開三個cmd窗口用來啓動服務,作爲三個服務端(3個db);
注意:不能動這三個cmd窗口

mongod --dbpath C:\MongoDB\Server\3.4\data\db1 --logpath C:\MongoDB\Server\3.4\data\logs\mongo1.log --port 27017 --replSet rs

mongod --dbpath C:\MongoDB\Server\3.4\data\db2 --logpath C:\MongoDB\Server\3.4\data\logs\mongo2.log --port 27018 --replSet rs

mongod --dbpath C:\MongoDB\Server\3.4\data\db3 --logpath C:\MongoDB\Server\3.4\data\logs\mongo3.log --port 27019 --replSet rs

注意:其中的–replSet就表示創建的數據集的名稱,必須指定相同的名稱纔可以。
在這裏插入圖片描述
同時會出現三個日誌文件
在這裏插入圖片描述


④ 第四步:配置


小知識:mongo默認27017;可以使用–port 27018指定端口

在這裏插入圖片描述


配置
在主mongo配置;再開啓一個cmd窗口,輸入mongo或者指定端口

var rsconf = {
	_id:'rs',
	members:[
			{_id:0,host:'127.0.0.1:27017'},
			{_id:1,host:'127.0.0.1:27018'},
			{_id:2,host:'127.0.0.1:27019'}
			]
}

並查看該rsconf

print(rsconf)

在這裏插入圖片描述


⑤ 第五步:配置初始化


rs.initiate(rsconf)

在這裏插入圖片描述

注意: 初始化後一開始show dbs可能有問題,要重新退出再進入查看數據庫,才能生效(ctrl+c)

一開始
在這裏插入圖片描述

也可以使用rs.slaveOk()解決這一問題
在這裏插入圖片描述

現在我們看到,現在登錄客戶端已經不是哪臺機器,而是rs複製集
在這裏插入圖片描述


⑥ 第六步:驗證,主機插入數據,叢機查看


主機插入數據:

  • 主機插入數據
    在這裏插入圖片描述

叢機查看數據:

  • 進入叢機(當前cmd窗口切換端口進入)
    在這裏插入圖片描述

  • 叢機默認不能查看或者輸入數據;只能作爲備份的
    在這裏插入圖片描述

  • 使用下面的命令可以查看數據

    rs.slaveOk()
    

在這裏插入圖片描述

  • 查看數據
    在這裏插入圖片描述

  • rs.slaveOk()相當於允許叢機查看數據

在這裏插入圖片描述
replaction複製集實現成功!


發佈了107 篇原創文章 · 獲贊 43 · 訪問量 7057
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章