<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                這一篇我們以管理員的視角來看mongodb,作為一名管理員,我們經常接觸到的主要有4個方面: 1.安裝部署 2.狀態監控 3.安全認證 4.備份恢復 下面我們就一點一點的講解。 <!--more--> ## 安裝部署 我之前的文章都是采用console程序來承載,不過在生產環境中這并不是最佳實踐,誰也不愿意在機器重啟后滿地找牙似找mongodb,在mongodb里面提供了一個叫做“服務寄宿”的模式,我想如果大家對wcf比較熟悉的話很容易聽懂。好了,我們實踐一下,這里我開一下D盤里面的mongodb。 ``` mongod --dbpath=D:\Projects\mongodb\db --logpath=D:\Projects\mongodb\logs\log.txt --port 27017 --install ``` 這里要注意的有兩點: <1> logpath: 當我們使用服務寄宿的時候,肯定不會用console來承載日志信息了。 <2> install: 開啟安裝服務寄宿,把管理員的手工操作降低到最小。 <3> 可能需要管理員權限。 <4> 如果存在db\mongod.lock文件請刪除 好了,console程序叫我看log日志,那我就看看,發現mongodb已經提示我們如何開啟mongodb,接著我照做就是了。 重新安裝是reinstall 移除是remove 以后mongod會隨著系統的啟動而啟動。 關于mongod的幫助 mongod --help 服務端的命令幫助 mongo --help 客戶端的命令幫助 進入mongo后還可以輸入help查看幫助 ## 狀態監控 監控可以讓我們實時的了解數據庫的健康狀況以及性能調優,在mongodb里面給我們提供了三種方式。 1:http監視器 2:serverStatus() 這個函數可以獲取到mongodb的服務器統計信息,其中包括:全局鎖,索引,用戶操作行為等等這些統計信息,對管理員來說非常重要,具體的參數含義可以參考:http://www.cnblogs.com/xuegang/archive/2011/10/13/2210339.html。 這個需要進入客戶端運行: ``` db.serverStatus() ``` 3:mongostat 前面那些統計信息再牛X,那也是靜態統計,不能讓我觀看實時數據變化,還好,mongodb里面提供了這里要說的mongodstat監視器,這玩意會每秒刷新,在實際生產環境中大有用處。這個命令不是在客戶端運行的,與mongod命令同級。 ``` mongostat --port 27017 ``` ## 安全認證 (1)3.x版本以下: 作為數據庫軟件,我們肯定不想誰都可以訪問,為了確保數據的安全,mongodb也會像其他的數據庫軟件一樣可以采用用戶驗證的方法,那么該怎么做呢?其實很簡單,mongodb提供了addUser方法,還有一個注意點就是如果在admin數據庫中添加將會被視為“超級管理員”。 ``` db.addUser("admin","123456") ``` 如果是 ``` db.addUser("test","123456",true) ``` 存在第三個參數,則表示是否是“只讀用戶”。 我們第一次登錄時不是采用驗證模式,現在我們使用--reinstall重啟服務并以--auth驗證模式登錄。 ``` mongod --dbpath=D:\Projects\mongodb\db --logpath=D:\Projects\mongodb\logs\log.txt --port 27017 --auth --reinstall ``` 好了,我們進入test集合翻翻數據看看情況,我們發現jack用戶始終都是沒有寫入的權限,不管是授權或者未授權。 (2)3.x版本: addUser在mongdb 3.0已經廢棄了,對應的函數請用createUser,createUser接受兩個參數,一個user object,一個可選參數用戶角色,具體參考mongodb 3.0的文檔:http://docs.mongodb.org/manual/reference/method/js-user-management/ ``` db.createUser() Creates a new user. db.updateUser() Updates user data. db.changeUserPassword() Changes an existing user’s password. db.removeUser() Deprecated. Removes a user from a database. db.dropAllUsers() Deletes all users associated with a database. db.dropUser() Removes a single user. db.grantRolesToUser() Grants a role and its privileges to a user. db.revokeRolesFromUser() Removes a role from a user. db.getUser() Returns information about the specified user. db.getUsers() Returns information about all users associated with a database. ``` 示例: ``` >use test >db.createUser( { user: "accountUser", pwd: "password", roles: [ "readWrite", "dbAdmin" ] } ) ``` ## 備份和恢復 這玩意的重要性我想都不需要我來說了吧,這玩意要是搞不好會死人的,mongodb里面常用的手段有3種。 1: 直接copy 這個算是最簡單的了,不過要注意一點,在服務器運行的情況下直接copy是很有風險的,可能copy出來時,數據已經遭到破壞,唯一能保證的就是要暫時關閉下服務器,copy完后重開。 2:mongodump和mongorestore 這個是mongo給我們提供的內置工具,很好用,能保證在不關閉服務器的情況下copy數據。為了操作方便,我們先刪除授權用戶。 使用mongodump備份比較慢,在備份復制集時還有些問題,后續會說到。但是,用來備份單個數據庫、集合、子集合還是比較好的方法。 mongod未運行情況下: 備份全部: ``` mongodump -p 27017 ``` 將在當前目錄下創建dump目錄,備份所有的數據庫,所有的數據存儲在.bson文件中,可以使用mongodb提供的bsondump工具來檢索它。 備份test數據庫 ``` mongodump -p 27017 -d test -o D:\Projects\mongodb\dump ``` 恢復時,使用mongorestore工具恢復 恢復整個數據庫: ``` mongorestore --port 27017 D:\Projects\mongodb\dump ``` 恢復到特定的庫和集合: ``` mongorestore --db test --collection user --drop D:\Projects\mongodb\dump ``` --drop 先刪除原有數據庫里面的數據 注意: 1、mongodump和mongorestore版本最好相匹配。 2、--dbpath and related flags are not supported in 3.0 tools. 3、--db與-d是一樣的,即-表示縮寫 4、使用mongodump --help查看更多命令(使用 - 和 / 都可以) ``` mongodump --help Usage: mongodump <options> Export the content of a running server into .bson files. Specify a database with -d and a collection with -c to only dump that database or collection. See http://docs.mongodb.org/manual/reference/program/mongodump/ for more information. general options: /help print usage /version print the tool version and exit verbosity options: /v, /verbose more detailed log output (include multiple times for more verbosity, e.g. -vvvvv) /quiet hide all log output connection options: /h, /host: mongodb host to connect to (setname/host1,host2 for replica sets) /port: server port (can also use --host hostname:port) authentication options: /u, /username: username for authentication /p, /password: password for authentication /authenticationDatabase: database that holds the user's credentials /authenticationMechanism: authentication mechanism to use namespace options: /d, /db: database to use /c, /collection: collection to use query options: /q, /query: query filter, as a JSON string, e.g., '{x:{$gt:1}}' /forceTableScan force a table scan output options: /o, /out: output directory, or '-' for stdout (defaults to 'dump') /repair try to recover documents from damaged data files (not supported by all storage engines) /oplog use oplog for taking a point-in-time snapshot /dumpDbUsersAndRoles dump user and role definitions for the specified database /excludeCollection: collection to exclude from the dump (may be specified multiple times to exclude additional collections) /excludeCollectionsWithPrefix: exclude all collections from the dump that have the given prefix (may be specified multiple times to exclude additional prefixes) ``` 3:主從復制 這個我在上上篇有所介紹,這里也不贅述了。 其實上面的1,2兩點都不能保證獲取數據的實時性,因為我們在備份的時候可能還有數據灌在內存中不出來,那么我們想說能不能把數據暴力的刷到硬盤上,當然是可以的,mongodb給我們提供了fsync+lock機制就能滿足我們提的需求。 fsync+lock首先會把緩沖區數據暴力刷入硬盤,然后給數據庫一個寫入鎖,其他實例的寫入操作全部被阻塞,直到fsync+lock釋放鎖為止。這里就不測試了。 加鎖(需要use admin): ``` db.runCommand({"fsync":1,"lock":1}) ``` 釋放鎖:`db.fsyncUnlock() ` 或者`db.$cmd.sys.unlock.findOne()`
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看