OpenLDAP - Berkeley DB 設定

1、前言

以下前言內容為引述自 Berkeley DB - 維基百科
Berkeley DB (DB) 是一個高性能的,嵌入資料庫編程庫,和 C 語言, C++, Java, Perl, Python, Tcl 以及其他很多語言都有綁定。Berkeley DB 可以保存任意類型的鍵/值對,而且可以為一個鍵保存多個數據。Berkeley DB 可以支持數千的併發執行緒同時操作資料庫,支持最大 256TB 的數據,廣泛用於各種作業系統包括大多數 Unix 類作業系統和 Windows 作業 db_arch 系統以及實時作業系統。


以下前言內容為引述自 Berkeley DB - 灰狐维客-你的知识库
BDB 之所以適合 LDAP 一個關鍵的因素是它可以保證 LDAP 的快速響應,因為 BDB 本身是一種嵌入式的數據庫速度快是它最大的特點,也是它和其他數據庫系統相比最大的優勢。我們再來看 LDAP,LDA P是一種一旦數據建立就很少需要改動的數據庫並且它最常用的操作是讀取、查詢、搜索等等不改變數據庫內容的操作,而讓 BDB 來做這幾種事情無疑是最好的選擇,即使在有大量用戶提交數據庫查詢的情況下,LDAP 仍能快速反饋給用戶有用信息。所以速度的考慮是LDAP 選用 BDB 的最大因素。這也是目前絕大多數的 LDAP 服務器都選用 BDB 的根本原因。

Berkeley DB 設定檔 (DB_CONFIG),設定後好處如下:

  • 保留 DATA 及 Log 在不同的儲存設備 (例如:硬碟) 而且能增加效率及可靠性。
  • 可針對部份選項進行最佳化 (例如:共享記憶體大小)。
  • 可改變預設 Log 檔大小 (預設為 10MB)。





文章目錄

1、前言
2、實作環境
3、安裝及設定
          步驟1.複製設定檔至 BDB 目錄
          步驟2.Berkeley DB 資料庫工具
          步驟3.備份 Berkeley DB
          步驟4.還原 Berkeley DB
4、參考
5、Me FAQ
          Q1.bdb_db_open: Warning - No DB_CONFIG file found in directory /var/db/openldap-data?





2、實作環境

  • FreeBSD 6.1-STABLE
  • db43-4.3.29





3、安裝及設定

本文將實作下列項目
  • 安裝及設定 Berkeley DB Database (存放 OpenLDAP Data)。
  • 了解有哪些 Berkeley DB 資料庫工具。
  • 如何備份及還原 Berkeley DB。

步驟1.複製設定檔至 BDB 目錄

將 Berkeley DB 設定檔 (DB_CONFIG) 複製到 ldap 目錄下,以下設定數值單位皆為 bytes。
cp /usr/local/etc/openldap/DB_CONFIG.example /var/db/openldap-data/DB_CONFIG
vim /var/db/openldap-data/DB_CONFIG   //修改 BDB 設定檔
   set_cachesize     0 268435456 1          //設定 BDB 的 Cache 大小為 256 MB
   set_lg_regionmax  1048576                //設定存於 Memory Cache 大小
   set_lg_max        10485760               //設定資料庫 Log 最大值
   set_lg_bsize      2097152                //設定資料庫 Log 時 Buffer Cache
   set_lg_dir        /var/db/openldap-data  //設定資料庫 Log 存放路徑




步驟2.Berkeley DB 資料庫工具

Berkeley DB 支援的資料庫工具列表如下 (公用程式)。




步驟3.備份 Berkeley DB

以下步驟為說明如何備份 Berkeley DB Database,列出相關資料庫檔案(*.bdb、log.*)之後,請自行備份到儲存媒介。
/usr/local/etc/rc.d/slapd stop                    //停止 slapd 服務 (停止資料寫入)
db_checkpoint-4.3 -1 -h /var/db/openldap-data/  //確保資料寫入資料庫中
db_archive-4.3 -s -h /var/db/openldap-data/     //列出所有資料庫檔案 (*.bdb)
db_archive-4.3 -l -h /var/db/openldap-data/     //列出所有資料庫 Log(log.*)
/usr/local/etc/rc.d/slapd start                   //啟動 slapd 服務




步驟4.還原 Berkeley DB

以下步驟為說明如何還原 Berkeley DB Database。
/usr/local/etc/rc.d/slapd stop              //停止 slapd 服務 (停止資料寫入)
將備份的 (*.bdb,log.*******) 複製到 /var/db/openldap-data。
db_recover-4.3 -h /var/db/openldap-data    //還原資料庫
/usr/local/etc/rc.d/slapd start             //啟動 slapd 服務 






4、參考






5、Me FAQ

Q1.bdb_db_open: Warning - No DB_CONFIG file found in directory /var/db/openldap-data?

Error Message:
啟動 slapd 服務後,查看 ldap.log 發現如下訊息?
Jul 19 10:19:34 ldap slapd55696: bdb_db_open: Warning - No DB_CONFIG file found in directory /var/db/openldap-data: (2) Expect poor performance for suffix dc=weithenn,dc=org.
Ans:
上述警告訊息為說明您的網域 LDAP 未設定 Berkeley DB 將會造成效率低落,以下為設定 Berkeley DB 設定檔 (DB_CONFIG) 內容及步驟
cp /usr/local/etc/openldap/DB_CONFIG.example /var/db/openldap-data/
vim DB_CONFIG                              //修改 BDB 設定檔
   set_cachesize 0 268435456 1               //設定 BDB 的 Cache 大小為 256MB
   set_lg_regionmax   1048576                //設定存於 Memory Cache大小
   set_lg_max         10485760               //設定操作 Log 最大值
   set_lg_bsize       2097152                //設定操作 Log 時 Buffer Cache
   set_lg_dir         /var/db/openldap-data  //設定操作 Log 存放路徑
/usr/local/etc/rc.d/slapd stop
db_recover-4.3 -h /var/db/openldap-data
/usr/local/etc/rc.d/slapd start