關於openldap bdb的一些配置和維護的問題

2022-03-25 06:28:09 字數 2137 閱讀 4595

一、 配置部份

在基本配置完成之後,可以在slapd.conf設定一些提高安全和效率的選項

cachesize 5000

checkpoint 1024 5

cachesize是ldap在記憶體中快取的記錄條數。這個快取是openldap自己維護的,與bdb庫無關。

為了提高效率bdb在修改資料庫時,是先修改記憶體裡面的,然後分批回寫到資料庫檔案裡面。checkpoint操作就是把記憶體中的資料回寫資料庫檔案的操作。

checkpoint 1024 5表示每寫1024kb資料,或者是每隔5分鐘,bdb會執行一次checkpoint的操作。

在bdb庫中提拱了乙個命令db_checkpoint,用來給使用者執行checkpoint用。比如,當使用者需要刪除日誌的時候,他需要先執行一下db_checkpoint,來確保資料已經回寫到資料庫檔案中了,這時才能放心地刪掉日誌。

還有一些設定bdb環境的選項設定,這些選項存在於db_config。這個檔案放在openldap-data/下

set_cachesize是bdb庫自己的cache,這個選項用來設定cache的大小。這個選項的格式

set_cachesize

: cache 的 gb 大小

: cache 的 bytes

: cache 段的數目, 如果配置為 0 or 1, 那麼是一段連續的 cache. 

set_cachesize一旦設定,就不能更改,除非你再用db_recover重建庫。

set_lg_dir 設定操作日誌存放的目錄。

set_lg_bsize 設定操作日誌的快取

set_lg_max 設定操作日誌檔案大小

set_flags 配置資料庫啟動引數, 可以配置多個選項標誌,比如 db_txn_nosync 告訴資料庫不要立即重新整理事務緩衝, 設定該值可以提高資料庫寫效能, 但伴隨的是資料丟失的風險(無法通過操作日誌恢復). 因此並不推薦使用該選項。

二、維護

1) 資料庫和日誌的歸檔(或者叫備份)

有兩種備份方法

a)標準備份

這種備份方法,要求是在備份的時候停止對資料庫的寫操作。方法是,

1)停止對資料庫的寫

2)執行一次checkpoint

3)在資料庫檔案的目錄下,執行db_archive –s標識出資料庫檔案,把它們拷到要備份的目錄下。

4)在日誌目錄下,執行db_archive,列出的是不活動的日誌檔案,再用db_archive –l列出所有

的日誌檔案,由些來判斷哪個是活動日誌檔案。一般是日誌檔案編號最大的乙個。把這個日誌檔案拷到

備份的目錄下。

這種備份不需要recover,直接就能用。

b)熱備份

這種備份方法,可以在任何時候用。方法如下

1)在資料庫檔案的目錄下,執行db_archive –s標識出資料庫檔案,把它們都拷到備份目錄下。

2)在日誌目錄下,執行db_archive –l標識出所有的日誌檔案。把它們拷到備份目錄下。

為了節省備份目錄的空間,可以在熱備份之前,在備份目錄執行db_archive列出不再需要的日誌檔案

的列表,可以不把這些日誌檔案拷到備份目錄下。

2)資料恢復

資料恢復有兩種,一種是正常恢復,一種是熱恢復。 

正常恢復是,當資料庫檔案和日誌檔案都沒有被損壞時,執行db_recover,不要帶引數。當採用熱備份的方法所做的備份,必段要用熱恢復的方法來恢復

熱恢復是,當資料庫檔案或者日誌檔案損壞時,在熱備份的備份目錄下,執行db_recover -c 來恢復資料。

幾個工具的簡介

db_archive 用來確定歸檔檔案的工具,常用的用法

在資料檔案目錄下,執行db_archive –s 用來確定哪些是資料庫檔案

db_archive 不帶任保引數,列出不再需要的日誌檔名。db_archive –l 列出所有日誌檔名

db_checkpoint 用來手工checkpoint的工具,比如,在資料檔案目錄下,執行db_checkpoint –1 執行一次checkpoint的操作。

db_recover 用於恢復資料庫,常用的用法,db_recover 不帶任務引數,表示用正常恢復方法恢復資料庫。db_recover –c 用於熱恢復用的,db_reover –t 可以把資料庫恢復到指定時間的狀態。

關於Integer int String的一些方法

關於integer int string的一些方法 1.integer的parseint 和 valueof。integer靜態記憶體儲存 128 127 1 返回型別 parseint 返回的是int。valueof 返回的是integer 2 判斷相等 int 用 integer 用 equal...

關於Android Broadcast 的一樁血案

之前一直使用broadcast都僅僅侷限於簡單呼叫,疑惑是根據需求選擇傳送方式,亦或是看心情決定是什麼方式註冊,直到今天,發生了乙個關於廣播的血案,事情的經過是這樣 嫌疑人 傳送了乙個無序廣播,通知各位聽眾某某事情,聽眾 舉報別人聽到了,它沒聽見,大喊冤枉,我都廣播了,並且是不分高低貴賤的無序廣播,...

mysql關於日期 關於mysql日期的一些例子

mysql中的月份計算 減少乙個月,比如 原來的subtime 2006 10 22 12 22 22 減少後變成 2006 9 22 12 22 22 update message set subtime date sub subtime,interval 1 month 增加乙個月 update...