MongoDB深入學習總結(上)

      網友投稿 916 2022-05-29

      MongoDB

      一、產品介紹

      MongoDB是由C++語言編寫的一個基于分布式文件存儲的開源NoSQL數據庫系統,在高負載的情況下,可添加更多的節點(實例),以保證服務性能,在許多場景下用于代替傳統的關系型數據庫或鍵/值存儲方式,皆在為Web應用提供可擴展的高性能數據存儲解決方案。

      MongoDB提供了一個面向文檔的存儲方式,操作起來比較簡單和容易,可以存儲比較復雜的數據類型,是一個面向集合的,模式自由的文檔型數據庫。

      MongoDB基本概念

      文檔(document)是MongoDB中數據的基本單元,非常類似于關系型數據庫系統中的行(但比行復雜的多)。

      集合(collection)就是一組文檔,如果說MongoDB中的文檔類似于關系型數據庫的行,那么集合就如同數據表

      MongoDB的單個計算機可以容納多個獨立的數據庫,每一個數據庫都有自己的集合和權限。

      MongoDB ??關系型數據庫

      文檔(document) ??行(row)

      集合(collection) 表(table)

      數據庫(database) 數據庫(database)

      日志文件類型

      系統日志文件 logpath

      journal日志文件(沒怎么用過)

      oplog復制操作日志文件(相當于MySQL中的bin-log 二進制日志)

      慢查詢日志

      數據類型

      (1)BSON 的數據類型

      null,代表空或者不存在

      布爾,只有 true 和 false

      數字,64 位浮點數

      字符串,utf8 字符串

      數組,值或者列表可表示為數組

      對象,對象的數據

      (2)BSON 的特點

      優點:簡單,簡潔,容易理解、解析、記憶

      (3)命名規則

      文檔的鍵命名幾乎所有 utf8 字符,只有少數例外:$開頭;

      文檔的鍵命名幾乎所有 utf8 字符,只有少數例外:$開頭;\0(空字符);_下劃線開頭。

      (空字符);_下劃線開頭。

      集合的命名幾乎所有 utf8 字符,只有少數例外:$開頭;

      集合的命名幾乎所有 utf8 字符,只有少數例外:$開頭;\0(空字符);system.開頭;””

      (空字符);system.開頭;””

      空字符串。

      數據庫的命名幾乎所有 utf8 字符,只有少數例外:””空字符串;

      數據庫的命名幾乎所有 utf8 字符,只有少數例外:””空字符串;\0;空格;. 點;\ ;/。

      ;空格;. 點;\ ;/。

      MongoDB的安裝

      指定同一個進程同一時間最多開啟的文件數:ulimit -n

      設置上述數值為65535(大一些就可以):ulimit -n 65535

      設置用戶最多開啟的程序數目:ulimit -u 65535

      yum安裝wget:yum -y install wget

      安裝MongoDB的tar包,地址如下,執行命令:wget

      https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.

      0

      .

      6

      .tgz

      解壓到/usr/src下:tar xf mongodb-linux-x86_64-rhel70-4.0.6.tgz -C /usr/src/

      為該文件創建軟連接:ln -s /usr/src/mongodb-linux-x86_64-rhel70-4.0.6 /usr/local/mongodb

      將bin目錄中的shell腳本鏈接到/bin下:ln -s /usr/local/mongodb/bin/ /bin/

      創建數據目錄,日志文件及目錄并創建相應的配置文件(因為MongoDB的包中沒有自帶這些東西,所以需要我們自己來配置)

      首先在/data目錄下創建目錄:mkdir -p /data/mongodb1

      在/data/logs目錄下創建目錄:mkdir -p /data/logs/mongodb

      在/data/logs目錄下創建文件:touch /data/logs/mongodb/mongodb1.log

      在/usr/local/mongodb下創建conf目錄:mkdir /usr/local/mongodb/conf

      在conf目錄下創建mongodb的配置文件:vim /usr/local/mongodc/conf/mongodb1.conf

      內容如下

      啟動,并指定配置文件:/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb1.conf

      查看進程ps -aux|grep :27107

      設置開機自啟動:vim /etc/rc.local ,插入下面這兩句

      rm -f /data/mongodb1/mongod.lock

      /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf

      進入bin內執行./mongo啟動服務

      MongoDB多實例配置

      進入mongodb的目錄,復制conf配置文件:cd /usr/src/mongodb-linux-x86_64-rhel70-4.0.6/conf/

      復制配置文件:cp mongodb1.conf mongodb2.conf

      編輯conf文件:vim mongodb2.conf

      主要更改端口號、數據庫路徑以及日志輸出路徑:

      創建mongodb2目錄:mkdir /data/mongodb2

      創建log日志文件:touch /data/logs/mongodb/mongodb2.log

      為該文件添加一個權限:chmod 777 /data/logs/mongodb/mongodb2.log

      啟動,且指定配置文件:usr/src/mongodb-linux-x86_64-rhel70-4.0.6/bin/mongod -f /usr/src/mongodb-linux-x86_64-rhel70-4.0.6/conf/mongodb2.conf

      啟動成功

      查看一下進程和端口號:netstat -anptu|grep mongod

      多實例構建成功,如果想進入某一個庫,在執行mongo的時候需要--port指定端口號。

      Mongodb基本操作

      show databases ?查看當前實例下數據庫列表

      show users 顯示用戶

      use切換當前數據庫

      help()顯示數據庫操作命令

      show tables 顯示當前數據庫中的集合

      mycoll.help()顯示集合操作命令,mycoll是當前下叫做mycoll的集合

      foo.find()對當前數據庫中foo集合進行數據查找

      數據庫(database)操作

      一個mongodb中可以建立多個數據庫

      MongoDB的默認數據庫為“db”,該數據庫存儲在data目錄中

      MongoDB的單個實例可以容納多個獨立的數據庫,每一個都有自己的集合和權限,不同的數據庫也放置在不同的文件中。

      插入數據

      >use cloud

      >db.user.insert({“id”:1,“name”:“Crushlinux”});

      查看數據

      > db.user.find()?????該命令可以補全

      查看幫助

      >db.help

      插入一行數據

      > use study

      switched to db study

      > db.t1.insert({"id":2,"name":"Tom","isadmin":true,"gender":null,"favorite":["apple","banana","orange"],"regtime":new Date()})

      查剛插入的數據

      >db.t1.find()

      顯示某一字段類型

      > db.t1.findOne({"id" : 2})

      定義一個變量a,讓剛剛輸出的內容定義為a

      >a = db.t1.findOne({“id”:2})

      判斷字段是什么數據類型

      >typeof(a.id)

      查詢操作

      數據的備份與恢復

      數據備份方法

      數據導入命令:mongoimport

      數據導出命令:mongoexport

      備份

      邏輯備份:mongodump

      物理備份:冷備份

      恢復:mongorestore

      復制數據庫

      復制本地數據庫:db.copyDatabase(“from_db”,“to_db”,“localhost”)

      復制遠程數據庫:db.copyDatabase(“from_db”,“to_db”,“192.168.1.100”)

      將MySQL中的數據導入MongoDB

      MongoDB深入學習總結(上)

      select * from t1 into outfile '/var/lib/mysql/t1_mysql.csv' fields terminated by",";

      將csv文件導入mongodb數據庫

      /usr/src/mongodb-linux-x86_64-rhel70-4.0.6/bin/mongoimport -d cloud -c tt1 -f id,name --file /var/lib/mysql/t1_mysql.csv --type csv

      將mongodb中的cloud數據庫的user集合,導出到/tmp/user.json文件中

      /usr/src/mongodb-linux-x86_64-rhel70-4.0.6/bin/mongoexport -d cloud -c user -o /tmp/user.json

      mongodump備份

      Mongodump命令腳本語法如下

      mongodump -h dbhost -d dbname -o dbdirectory

      -h:mongodb所在的服務器地址,例如:127.0.0.1,當然也可以指定端口號:127.0.0.1:27017

      -d:需要備份的數據庫實例,例如:test

      -o:備份的數據存放位置

      例:創建目錄:mkdir /backup

      執行備份:/usr/src/mongodb-linux-x86_64-rhel70-4.0.6/bin/mongodump -d cloud -c user -o /backup/

      mongorestore還原

      Mongorestore命令腳本語法如下:

      mongorestore -h hostname -d dbname path --host<:port>,-h<:port>

      例:/usr/src/mongodb-linux-x86_64-rhel70-4.0.6/bin/mongorestore -d crushlinux --dir=/backup/cloud/

      復制數據庫(在數據庫內操作,此處localhost可以改成其他主機ip:端口號)

      >db.copyDatabase(“crushlinux”,”crushlinux2”,”localhost”)

      克隆集合(數據庫內操作)

      >db.runCommand({“cloneCollection”:“db1.student”,“from”:“localhost:27018”})

      MongoDB安全管理

      MongoDB角色管理

      內置角色

      數據庫角色:read、readWrite

      數據庫管理角色:dbAdmin、dbOwner、userAdmin

      集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager

      備份恢復角色:backup、restore

      所有數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

      超級用戶角色:root

      內部角色:_system

      MongoDB進程管理

      數據庫內執行,查看進程:currentOp()

      MongoDB監控管理

      查看數據庫實例的狀態信息:serverStatus()

      MongoDB復制集集群部署及管理

      MongoDB復制

      將一個數據庫實例中的所有數據改變復制到另一個獨立的數據庫實例的過程,默認是主從復制集群(未來不再使用)。缺點是一旦主庫出現故障,需要手動把主庫角色切換到最可靠的從庫上,而其他從庫還需配置新的主庫去同步。

      復制是將數據同步在多個服務器的過程

      復制提供了數據的冗余備份,并在多個服務器上存儲數據副本,提高了數據的可用性,并可以保證數據的安全性。

      復制還允許您從硬件故障和服務中斷中恢復數據

      復制的特征:

      保障數據的安全性

      數據高可用性(24*7)

      災難恢復

      無需停機維護(如備份,重建索引,壓縮)

      分布式讀取數據

      MongoDB復制集ReplSet

      原理上也是MongoDB主從復制技術,但當主庫出現故障時,能自動實現主從切換,從而故障得以恢復,其他從庫自動從新的主庫上同步數據,整個過程不需要手動干預。類似于MySQL中的MHA技術。

      MongoDB的復制至少需要兩個節點。其中一個是主節點,負責處理客戶端請求,其余的都是從節點,負責復制主節點上的數據。

      MongoDB各個節點常見的搭配方式:一主一從,一主多從

      主節點記錄在其上的所有操作oplog,從節點定期輪詢主節點獲取這些操作,然后對自己的數據副本執行這些操作,從而保證從節點的數據與主節點一致。

      附件: MongoDB.docx 282.15KB 下載次數:2次

      MongoDB 數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:小白HTML進階之路(1)
      下一篇:成功解決你沒有權限訪問,請與網絡管理員聯系圖文教程
      相關文章
      亚洲综合色自拍一区| 亚洲成a人片在线观看老师| 一本色道久久综合亚洲精品高清| 亚洲国产精品无码中文lv| 亚洲AV成人影视在线观看| 亚洲午夜在线一区| 亚洲人成伊人成综合网久久| 亚洲天堂一区二区三区四区| 亚洲视频在线观看免费视频| 色噜噜综合亚洲av中文无码| 精品亚洲成AV人在线观看| 亚洲国产精品一区| 99人中文字幕亚洲区| 久久99亚洲网美利坚合众国| 亚洲精品国产成人中文| 亚洲国产成人久久三区| 亚洲一区二区三区在线网站| 亚洲看片无码在线视频| 亚洲欧洲无卡二区视頻| 相泽南亚洲一区二区在线播放| 在线视频亚洲一区| 亚洲免费日韩无码系列| 美腿丝袜亚洲综合| 亚洲高清专区日韩精品| 亚洲国产成人久久综合一| 中文字幕亚洲色图| 亚洲人成电影院在线观看| 亚洲熟女www一区二区三区| 日韩欧美亚洲国产精品字幕久久久 | 波多野结衣亚洲一级| 国内精品久久久久影院亚洲| 亚洲日本VA午夜在线影院| 午夜亚洲国产理论片二级港台二级| 99亚洲精品卡2卡三卡4卡2卡| 无码不卡亚洲成?人片| 色噜噜亚洲精品中文字幕 | 久久精品国产精品亚洲| 亚洲精品无码永久在线观看你懂的| 亚洲国产精品SSS在线观看AV| 亚洲图片一区二区| 激情综合亚洲色婷婷五月|