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、參考
- OpenLDAP Faq-O-Matic: How to maintain Berkeley DB
- OpenLDAP Faq-O-Matic: How do I configure the BDB backend?
- Chapter 6 OpenLDAP slapd.conf database bdb
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