LDAP 伺服器從 Debian 遷移到 Ubuntu 錯誤

LDAP 伺服器從 Debian 遷移到 Ubuntu 錯誤

我們正在嘗試將 ldap 從過時的 Debian 伺服器遷移到 Ubuntu 伺服器。所有使用 slapcat、手動修改配置和其他技巧的嘗試都失敗了。我相信舊資料庫使用 bdb 結構,透過研究我發現它不再受支援。

我們在遷移過程中所採取的步驟如下:

使用 slapcat 備份並複製舊的 ldap 資料庫。

sudo slapcat -n 0 -l config.conf
sudo slapcat -n 1 -l database.ldif

然後,我們在新伺服器上安裝並重新配置了 slapd,以匹配舊伺服器的安裝規格。

接下來,我們將使用 slapadd 還原舊資料庫。

sudo slapadd -F /etc/ldap/slapd.d -n 0 -l config.conf

這產生了以下錯誤

slapadd: could not add entry dn="cn=config" (line=1):
Closing DB...

下一個指令我們嘗試恢復資料庫。

sudo slapadd -F /etc/ldap/slapd.d -n 1 -l database.ldif

但再次收到多個錯誤:

mdb_id2entry_put: mdb_put failed: MDB_KEYEXIST: Key/data pair already exists (-30799) "dc=cs"
=> mdb_tool_entry_put: id2entry_add failed: err=-30799
=> mdb_tool_entry_put: txn_aborted! MDB_KEYEXIST: Key/data pair already exists (-30799)
slapadd: could not add entry dn="dc=cs" (line=1): txn_aborted! MDB_KEYEXIST: Key/data pair already exists (-30799)
Closing DB...

此時我們在載入設定檔時遇到了錯誤。我們嘗試將其從 bdb 轉換為 mdb 架構,但在載入 database.ldif 檔案時仍然會出現錯誤。

有人有可靠的方法將 ldap 資料庫遷移到新伺服器嗎?因為大多數指南都非常過時。

答案1

這個錯誤是由於大多數舊 slapd 系統 (<2.4.x) 上的資料庫後端過時所致。手動轉換為 hdb/bdb => mdb 可修復新 slapd 版本上的這些問題。

sudo slapcat -n 0 -l config.conf
sudo slapcat -n 1 -l database.ldif

確保關閉 slapd 服務。

service slapd stop

將 config.conf 和 database.ldif 檔案中的所有 hdb/bdb 參考替換為 mdb。

在使用 slapadd 載入設定之前,請清空 slapd.d 目錄。

rm -rf /etc/ldap/slapd.d/*

然後載入更新的 mdb 配置。

slapadd -F /etc/ldap/slapd.d -n 0 -l config.conf

接下來確保也清空 ldap 目錄。

rm -rf /var/lib/ldap/*

現在載入轉換後的 mdb 資料庫。

slapadd -F /etc/ldap/slapd.d -n 1 -l database.ldif

授予 openldap slapd.d 目錄的權限。

chown -R openldap:openldap /etc/ldap/slapd.d

啟動 slapd 服務,您現在應該有一個遷移的 ldap 資料庫。

service slapd start

用 slapcat 確認

slapcat -n 0
slapcat -n 1

相關內容