国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

linux中MongoDB數據庫詳細配置介紹

2024-08-27 23:55:39
字體:
來源:轉載
供稿:網友
  下面看一站長分享一篇非常不錯的MongoDB數據庫詳細配置說明,這篇文章是非常的詳細的希望對各位朋友會帶來幫助。
 
  啟動MongoDB有2種方式,一是直接指定配置參數,二是指定配置文件。這里先介紹配置文件,啟動方式如下:
 
  mongod --config /etc/mongodb.conf
 
  配置如下:
 
  verbose:日志信息冗余。默認false。提高內部報告標準輸出或記錄到logpath配置的日志文件中。要啟用verbose或啟用verbosity 用vvvv參數,如:
 
  verbose = true
 
  vvvv = true
 
  ps:啟動verbose冗長信息,它的級別有 vv~vvvvv,v越多級別越高,在日志文件中記錄的信息越詳細。
 
  port:端口。默認27017,MongoDB的默認服務TCP端口,監聽客戶端連接。要是端口設置小于1024,比如1021,則需要root權限啟動,不能用mongodb帳號啟動,(普通帳號即使是27017也起不來)否則報錯:[mongo --port=1021 連接]
 
  ERROR: listen(): bind() failed errno:13 Permission denied for socket: 127.0.0.1:1021
 
  port = 27017
 
  bind_ip:綁定地址。默認127.0.0.1,只能通過本地連接。進程綁定和監聽來自這個地址上的應用連接。要是需要給其他服務器連接,則需要注釋掉這個或則把IP改成本機地址,如192.168.200.201[其他服務器用 mongo --host=192.168.200.201 連接] ,可以用一個逗號分隔的列表綁定多個IP地址。
 
  bind_ip = 127.0.0.1
 
  maxConns:最大連接數。默認值:取決于系統(即的ulimit和文件描述符)限制。MongoDB中不會限制其自身的連接。當設置大于系統的限制,則無效,以系統限制為準。這對于客戶端創建很多“表”,允許連接超時而不關閉“表”的時候很有用。設置該值的高于連接池和總連接數的大小,以防止尖峰時候的連接。注意:不能設置該值大于20000。
 
  maxConns = 100
 
  objcheck:強制驗證客戶端請求。2.4的默認設置為objcheck成為true,在早期版本objcheck默認為false。因為它強制驗證客戶端請求,確??蛻舳私^不插入無效文件到數據庫中。對于嵌套文檔的對象,會有一點性能影響。設置noobjcheck 關閉。
 
  objcheck = true
 
  #noobjcheck = false
 
  noobjcheck:同上,默認關閉false。
 
  #noobjcheck = false
 
  logpath:指定日志文件,該文件將保存所有的日志記錄、診斷信息。除非另有指定,mongod將所有的日志信息輸出到標準輸出。如果沒有指定logappend,重啟則日志會進行覆蓋操作。
 
  logpath=/var/log/mongodb/mongodb.log
 
  logappend:寫日志的模式:設置為true為追加。默認是覆蓋。如果未指定此設置,啟動時MongoDB的將覆蓋現有的日志文件。
 
  logappend=true
 
  syslog:日志輸出都發送到主機的syslog系統,而不是標準輸出到logpath指定日志文件。syslog和logpath不能一起用,會報錯:
 
  Cant use both a logpath and syslog
 
  syslog  = true
 
  pidfilepath:進程ID,沒有指定則啟動時候就沒有PID文件。默認缺省。
 
  pidfilepath = /var/run/mongo.pid
 
  keyFile:指定存儲身份驗證信息的密鑰文件的路徑。默認缺省。詳情見:”
 
  Replica Set Security” and “Replica Set Administration.”
 
  keyFile = /srv/mongodb/keyfile
 
  nounixsocket:套接字文件,默認為false,有生成socket文件。當設置為true時,不會生成socket文件。
 
  nounixsocket = false
 
  unixSocketPrefix:套接字文件路徑,默認/tmp
 
  unixSocketPrefix = /tmp
 
  fork:是否后臺運行,設置為true 啟動 進程在后臺運行的守護進程模式。默認false。
 
  fork = true
 
  auth:用戶認證,默認false。不需要認證。當設置為true時候,進入數據庫需要auth驗證,當數據庫里沒有用戶,則不需要驗證也可以操作。直到創建了第一個用戶,之后操作都需要驗證。
 
  auth = true
 
  比如:通過db.addUser(‘sa’,'sa’)  在admin庫下面創建一個超級用戶,只能在在admin庫下面先認證完畢了:ab.auth(‘sa’,'sa’) ,才能去別的庫操作,不能在其他庫驗證。這樣連接數據庫也需要指定庫:
 
  mongo -usa -psa admin     #sa 帳號連接admin
 
  mongo -uaa -paa test      #aa 帳號連接test
 
  noauth:禁止用戶認證,默認true。同上
 
  noauth = true
 
  cpu:設置為true會強制mongodb每4s報告cpu利用率和io等待,把日志信息寫到標準輸出或日志文件。默認為false。
 
  cpu = true
 
  開啟日志會出現:Mon Jun 10 10:21:42.241 [snapshotthread] cpu: elapsed:4000  writelock: 0%
 
  dbpath:數據存放目錄。默認: /data/db/
 
  dbpath=/var/lib/mongodb
 
  diaglog:創建一個非常詳細的故障排除和各種錯誤的診斷日志記錄,默認0,設置為1,為在dbpath目錄里生成一個diaglog.開頭的日志文件,他的值如下:
 
  Value    Setting
  0    off. No logging.       #關閉。沒有記錄。
  1    Log write operations.  #寫操作
  2    Log read operations.   #讀操作
  3    Log both read and write operations. #讀寫操作
  7    Log write and some read operations. #寫和一些讀操作
  設置不等于0,日志會每分鐘flush 一次:
 
  Mon Jun 10 11:16:17.504 [DataFileSync] flushing diag log
 
  Mon Jun 10 11:17:17.442 [DataFileSync] flushing diag log
 
  產生的日志可以用mongosniff 來查看:要是mongosniff[類似于tcpdump的作為一個MongoDB的特定的TCP/ IP網絡流量]出現報錯和具體用法,請見這里,之前先執行:apt-get install libpcap-dev
 
  root@m3:/var/lib/mongodb# mongosniff --source DIAGLOG diaglog.51b542a9
 
  注意:當重新設置成0,會停止寫入文件,但mongod還是繼續保持打開該文件,即使它不再寫入數據文件。如果你想重命名,移動或刪除診斷日志,你必須完全關閉mongod實例。
 
  diaglog = 3
 
  directoryperdb:設置為true,修改數據目錄存儲模式,每個數據庫的文件存儲在DBPATH指定目錄的不同的文件夾中。使用此選項,可以配置的MongoDB將數據存儲在不同的磁盤設備上,以提高寫入吞吐量或磁盤容量。默認為false。
 
  注意:要是在運行一段時間的數據庫中,開啟該參數,會導致原始的數據都會消失(注釋參數則會回來)。因為數據目錄都不同了,除非遷移現有的數據文件到directoryperdb產生的數據庫目錄中,如:
 
  root@m3:/var/lib/mongodb# mv test.* test/
 
  把test數據文件遷移到directoryperdb產生的數據庫test目錄中。 所以需要在規劃好之后確定是否要開啟。
 
  directoryperdb = ture
 
  原始數據結構:
 
  journal
  mongod.lock
  local.0
  local.1
  local.ns
  test.0
  test.1
  test.ns
  開啟 directoryperdb,并把數據文件遷移到相關的數據目錄后的結構:
 
  journal
  mongod.lock
  local/local.0
  local/local.1
  local/local.ns
  test/test.0
  test/test.1
  test/test.ns
  journal:日志.
 
  默認值:在64位系統,true.
 
  默認值:32位系統,false.
 
  設置為true,啟用操作日志,以確保寫入持久性和數據的一致性,會在dbpath目錄下創建journal目錄.
 
  設置為false,以防止日志持久性的情況下,并不需要開銷,為了減少磁盤上使用的日志的影響,您可以啟用nojournal,并設置為true.
 
  注意:在64位系統上禁用日志必須使用帶有nojournal的。
 
  #journal=true
  journal=false
  32位OS:
  
  Tue Jun 11 12:17:09.628 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.
  Tue Jun 11 12:17:09.628 [initandlisten] **       32 bit builds are limited to less than 2GB of data (or less with --journal).
  64位OS:
  
  Tue Jun 11 12:29:34 [initandlisten] journal dir=/var/lib/mongodb/journal  --phpfensi.com
  Tue Jun 11 12:29:34 [initandlisten] recover : no journal files present, no recovery needed
  nojournal:禁止日志
  默認值:(在64位系統)false。
  默認值:(32位系統)true。
  設置nojournal為true關閉日志,64位,2.0版本后的mongodb默認是啟用 journal日志。
 
  nojournal=true
 
  journalCommitInterval:刷寫提交機制,默認是30ms或則100ms。較低的值,會更消耗磁盤的性能。
 
  此選項接受2和300毫秒之間的值:
 
  如果單塊設備提供日志和數據文件,默認的日記提交時間間隔為100毫秒。
 
  如果不同的塊設備提供的日志和數據文件,默認的日記提交的時間間隔為30毫秒。
 
  journalCommitInterval=100
 
  ipv6:是否支持ipv6,默認false。
 
  jsonp:是否允許JSONP訪問通過一個HTTP接口,默認false。
 
  nohttpinterface:是否禁止http接口,即28017 端口開啟的服務。默認false,支持。
 
  nohttpinterface = false
 
  noprealloc:預分配方式。
 
  默認false:使用預分配方式來保證寫入性能的穩定,預分配在后臺進行,并且每個預分配的文件都用0進行填充。這會讓MongoDB始終保持額外的空間和空余的數據文件,從而避免了數據增長過快而帶來的分配磁盤空間引起的阻塞。
  設置noprealloc= true來禁用預分配的數據文件,會縮短啟動時間,但在正常操作過程中,可能會導致性能顯著下降。
 
  noprealloc = false
 
  noscripting:是否禁止腳本引擎。默認是false:不禁止。ture:禁止
 
  要是設置成true:運行一些腳本的時候會出現:JavaScript execution failed: group command failed: { "ok" : 0, "errmsg" : "server-side JavaScript execution is disabled" }
 
  #noscripting = true     <====> noscripting = false
 
  notablescan:是否禁止表掃描操作。默認false:不禁止,ture:禁止
 
  禁止要是執行表掃描會出現:error: { "$err" : "table scans not allowed:test.emp", "code" : 10111 }
 
  可以動態修改設置:
 
  db.adminCommand({setParameter:1, notablescan:false})
 
  #notablescan = true  <====> notablescan = false
 
  nssize:命名空間的文件(即NS)的默認大小,默認16M,最大2G。
 
  所有新創建的默認大小命名空間的文件(即NS)。此選項不會影響現有的命名空間的文件的大小。默認值是16M字節,最大大小為2 GB。讓小數據庫不讓浪費太多的磁盤空間,同時讓大數據在磁盤上有連續的空間。
 
  -rwxrwxrwx 1 mongodb zhoujy  16M  6月 11 14:44 test.0
  -rwxrwxrwx 1 mongodb zhoujy  32M  6月  1 21:36 test.1
  -rwxrwxrwx 1 mongodb zhoujy  16M  6月 11 14:44 test.ns
  drwxr-xr-x 2 root    root   4.0K  6月 10 11:57 _tmp
  nssize  = 16
 
  profile:數據庫分析等級設置。記錄一些操作性能到標準輸出或則指定的logpath的日志文件中,默認0:關閉。
 
  級別 設置
 
  0 關。無分析。
 
  1 開。僅包括慢操作。
 
  2 開。包括所有操作。
 
  控制 Profiling  的開關和級別:2種
 
  第一種是直接在啟動參數里直接進行設置或則啟動MongoDB時加上–profile=級別,其信息保存在 生成的system.profile 中。
 
  profile = 2
 
  第二種是在客戶端用db.setProfilingLevel(級別)命令來實時配置,其信息保存在 生成的system.profile 中。
 
  [initandlisten] creating profile collection: local.system.profile
  
  > db.setProfilingLevel(2)
  { "was" : 0, "slowms" : 100, "ok" : 1 }
  > db.getProfilingStatus()
  { "was" : 2, "slowms" : 100 }
  默認情況下,mongod的禁用分析。數據庫分析可以影響數據庫的性能,因為分析器必須記錄和處理所有的數據庫操作。所以在需要的時候用動態修改就可以了。
 
  slowms:記錄profile分析的慢查詢的時間,默認是100毫秒。具體同上。
 
  slowms  = 200
  > db.getProfilingStatus()
  { "was" : 2, "slowms" : 200 }
  quota:配額,默認false。是否開啟配置每個數據庫的最多文件數的限制。當為true則用quotaFiles來配置最多文件的數量。
 
  quota = true
 
  quotaFiles:配額數量。每個數據庫的數據文件數量的限制。此選項需要quota為true。默認為8。
 
  quotaFiles = 8
 
  rest:默認false,設置為true,使一個簡單的 REST API。
 
  rest = true
 
  設置為true,開啟后,在MongoDB默認會開啟一個HTTP協議的端口提供REST的服務(nohttpinterface = false),這個端口是你Server端口加上1000,即28017,默認的HTTP端口是數據庫狀態頁面,(開啟后,web頁面的Commands 行中的命令都可以點進去)。mongodb自帶的REST,不支持 增、刪、改,同時也不支持 權限認證。
 
  repair:修復數據庫操作,默認是false。
 
  設置為true時,啟動后修復所有數據庫,設置這個選項最好在命令行上,而不是在配置文件或控制腳本。如:
 
  命令行修復:
 
  > db.repairDatabase('xxx')
  { "ok" : 1 }
  > db.repairDatabase()
  { "ok" : 1 }
  啟動時修復:repair = true
 
  root@m3:/var/log/mongodb# mongod --repair
 
  啟動時修復,需要關閉journal,否則報錯:
 
  Can't specify both --journal and --repair options.
 
  并且啟動時,用控制文件指定參數和配置文件里指定參數的方式進行修復之后,修復信息見log,需要再禁用repair參數才能啟用mongodb.
 
  注意:mongod修復時,需要重寫所有的數據庫文件。如果在同一個帳號下不能運行修復,則需要運行chown修改數據庫文件的權限。
 
  repairpath:修復路徑,默認是在dbpath路徑下的_tmp 目錄。
 
  drwxr-xr-x 2 root    root   4.0K  6月 11 20:23 _tmp
 
  smallfiles:是否使用較小的默認文件。默認為false,不使用。
 
  設置為true,使用較小的默認數據文件大小。smallfiles減少數據文件的初始大小,并限制他們到512M,也減少了日志文件的大小,并限制他們到128M。
 
  如果數據庫很大,各持有少量的數據,會導致mongodb創建很多文件,會影響性能。
 
  smallfiles = true
 
  syncdelay:刷寫數據到日志的頻率,通過fsync操作數據。默認60秒。
 
  syncdelay = 60
 
  默認就可以,不需要設置。不會對日志文件(journal files)有影響
 
  警告:如果設置為0,SYNCDELAY 不會同步到磁盤的內存映射文件。在生產系統上,不要設置這個值。
 
  sysinfo:系統信息,默認false。
 
  設置為true,mongod會診斷系統有關的頁面大小,數量的物理頁面,可用物理頁面的數量輸出到標準輸出。
 
  Tue Jun 11 21:07:15.031 sysinfo:
  Tue Jun 11 21:07:15.035   page size: 4096
  Tue Jun 11 21:07:15.035   _SC_PHYS_PAGES: 256318
  Tue Jun 11 21:07:15.035   _SC_AVPHYS_PAGES: 19895
  當開啟sysinfo參數的時候,只會打印上面的信息,不會啟動mongodb的程序。所以要關閉該參數,才能開啟mongodb。
 
  upgrade:升級。默認為false。
 
  當設置為true,指定DBPATH,升級磁盤上的數據格式的文件到最新版本。會影響數據庫操作,更新元數據。大部分情況下,不需要設置該值。
 
  traceExceptions:是否使用內部診斷。默認false。
 
  traceExceptions = false
 
  quiet:安靜模式。
 
  quiet = true
 
  setParameter:2.4的新參數,指定啟動選項配置。想設置多個選項則用一個setParameter選項指定,setParameter設置在這個文件中,使用下面的格式:
 
  setParameter = <parameter>=<value>
 
  如配置文件里設置syncdelay:
 
  setParameter = syncdelay= 55,notablescan = true,journalCommitInterval = 50,traceExceptions = true
 
  Replication Options  復制選項
 
  replSet:使用此設置來配置復制副本集。指定一個副本集名稱作為參數,所有主機都必須有相同的名稱作為同一個副本集。
 
  oplogSize:指定的復制操作日志(OPLOG)的最大大小。mongod創建一個OPLOG的大小基于最大可用空間量。對于64位系統,OPLOG通常是5%的可用磁盤空間。
 
  一旦mongod第一次創建OPLOG,改變oplogSize將不會影響OPLOG的大小。
 
  fastsync:默認為false。在副本集下,設置為true,從一個dbpath里啟用從庫復制服務,該dbpath的數據庫是主庫的快照,可用于快速啟用同步,否則的mongod將嘗試執行初始同步。注意:如果數據不完全同步,mongod指定fastsync開啟,secondary或slave與主永久不同步,這可能會導致顯著的一致性問題。
 
  replIndexPrefetch:2.2版本出現的新參數,默認是all??梢栽O置的值有:all, none, and _id_only。只能在副本集(replSet)中使用。默認情況下,secondary副本集的成員將加載所有索引到內存中(從OPLOG之前的操作有關的)。您可以修改此行為,使secondary只會加載_id索引。指定_id_或none,防止mongod的任何索引加載到內存。
 
  Master/Slave Replication:主從復制的相關設置
 
  master:默認為false,當設置為true,則配置當前實例作為主實例。
 
  master = true
 
  slave:默認為false,當設置為true,則配置當前實例作為從實例。
 
  slave = true
 
  source:默認為空,格式為:<:port>。用于從實例的復制:設置從的時候指定該選項會讓從復制指定主的實例
 
  source = 127.0.0.1:30001
 
  only:默認為空,用于從選項,指定一個數據庫進行復制。
 
  only = abc #只同步abc集合(庫)
 
  slavedelay:設置從庫同步主庫的延遲時間,用于從設置,默認為0。
 
  slavedelay = 60 #延遲60s同步主數據
 
  autoresync:默認為false,用于從設置。是否自動重新同步。設置為true,如果落后主超過10秒,會強制從自動重新同步。如果oplogSize太小,此設置可能有問題。如果OPLOG大小不足以存儲主的變化狀態和從的狀態變化之間的差異,這種情況下強制重新同步是不必要的。當設置autoresync選項設置為false,10分鐘內從不會進行大于1次的自動重新同步。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广德县| 搜索| 唐山市| 通化市| 红河县| 乾安县| 潞城市| 壶关县| 习水县| 长寿区| 巴林左旗| 沧源| 金坛市| 民县| 山东省| 当阳市| 邢台市| 界首市| 台前县| 抚顺县| 宁德市| 获嘉县| 卫辉市| 万全县| 尖扎县| 云南省| 赤壁市| 湛江市| 赤城县| 洛隆县| 喀喇沁旗| 邛崃市| 瑞丽市| 峨山| 马鞍山市| 淮滨县| 高要市| 双鸭山市| 温州市| 齐齐哈尔市| 湖南省|