![]() | |
Sun Java(TM) System Directory Server 5.2 2005Q1 管理指南 |
第 4 章
備份與還原資料目錄伺服器所管理的資料通常都是大量匯入的,Directory Server 提供可匯入和匯出整個尾碼的工具。此外,還提供可一次備份所有尾碼的工具,以及從備份還原所有資料的工具。
您可以使用 LDAP 資料交換格式 (LDIF) 備份和還原資訊。
本章描述下列用於備份和還原目錄資料的程序:
設定尾碼唯讀模式在 Directory Server 伺服器上執行特定匯出或備份作業前,您可以在任何指定的尾碼上啟用唯讀模式,以確定在指定時間您擁有尾碼內容狀態的真正影像。同時,在執行匯入或還原作業之前,您必須確定受該作業影響的尾碼不是唯讀模式。
在匯出或備份作業之前,Directory Server Console 和指令行公用程式並不會自動將目錄設定成唯讀模式,因為這會讓您的目錄無法進行更新。但是,如果您有多重主機配置,您可以將一台伺服器的唯讀模式啟用,而您的資料在其他主機上仍維持可寫入的狀態。
若要使尾碼唯讀,請遵循在設定存取權限及參照中所描述的程序。或者,您可以將整個目錄伺服器設定為無法寫入,如設定全域唯讀模式中所述。
匯入資料Directory Server 提供兩種匯入資料的方法:
您可以透過 Directory Server Console 和使用指令行公用程式來使用這兩種方法。
備註
所有匯入的 LDIF 檔都必須使用 UTF-8 字元集編碼。
匯入 LDIF 時,父項目必須存在目錄之中,或是從檔案中第一個加入。初始化尾碼時,LDIF 檔案必須包含有對應尾碼的根項目和所有樹狀目錄的節點。
下表顯示匯入和初始化之間的差異:
表 4-1 匯入資料與初始化尾碼的比較
比較的網域
匯入資料
初始化尾碼
覆寫內容
否
是
LDAP 作業
加入,修改,刪除
僅加入
效能
較慢
快
回應伺服器故障
最佳效果 (保留故障點之前所做的所有變更)
不可部分完成 (故障後遺失所有的變更)
LDIF 檔案位置
在用戶端電腦上
本機對用戶端或本機對伺服器
匯入配置資訊 (cn=config)
是
否
匯入 LDIF 檔案
執行匯入作業時,Directory Server Console 會執行 ldapmodify 作業將新的項目加入目錄中。項目是在 LDIF 檔中指定,此檔案也包含修改或刪除現有項目的更新敘述,這是匯入作業的一部分。
匯入項目的目標是 Directory Server 所管理的任何尾碼,以及任何在配置中定義的鏈接尾碼或鏈接子尾碼。伺服器與其他任何加入項目的作業結合使用時,會在所有新項目匯入時編製新項目的索引。
使用主控台匯入 LDIF
您必須以目錄管理員或管理員的身份登入才能執行匯入:
- 在 Directory Server Console 最上層的 [工作] 標籤,捲動至標籤的底部,按一下 [從 LDIF 匯入] 旁的按鈕。
顯示 [匯入 LDIF] 對話方塊。
- 在 [匯入 LDIF] 對話方塊的 [LDIF 檔案] 欄位中,輸入要匯入之 LDIF 檔的完整路徑,或按一下 [瀏覽] 選取本機檔案系統中的檔案。
如果所存取的是遠端電腦上的目錄,則欄位名稱會顯示成 [LDIF 檔案 (在主控台電腦上)]。這個標籤是提醒您正在瀏覽的是本機檔案系統,而不是遠端的目錄伺服器電腦。
- 視需要設定下列選項:
- 在 [拒絕的檔案] 欄位中,輸入記錄主控台所有無法匯入項目之檔案的完整路徑,或者是按一下 [瀏覽] 選取本機檔案系統中的檔案。
例如,伺服器無法匯入目錄內現有的項目,或是沒有父項物件的項目。主控台會將伺服器傳送的錯誤訊息寫入拒絕檔案中。
如果您將這個欄位空白,伺服器將不會記錄被拒絕的檔案。
- 按一下 [確定] 開始匯入作業。
Directory Server Console 會顯示一個對話方塊,其中含有作業的狀態,以及所發生任何錯誤的文字。如果 [拒絕的檔案] 欄位不是空白,則系統也會將所有錯誤訊息寫入指定的檔案中。
從指令行匯入 LDIF
directoryserver ldif2ldap 指令可透過 LDAP 匯入 LDIF 檔案,並執行其中的所有操作。使用此指令可以同時將資料匯入到所有目錄尾碼中。伺服器必須在執行中才能使用 ldif2ldap 匯入。
指令的完整路徑:
下列範例使用 ldif2ldap 指令執行匯入。您無需根權限來執行此指令,但必須以具有根權限的使用者,諸如目錄管理員身份進行驗證,最後的參數指定要匯入的 LDIF 檔名。
# /usr/sbin/directoryserver -s example ldif2ldap \
-D "cn=Directory Manager" -w password \
-f /var/opt/mps/serverroot/slapd-example/ldif/demo.ldif如需關於使用該指令的詳細資訊,請參閱 Directory Server Man Page Reference。
初始化尾碼
初始化尾碼會以 LDIF 檔案中只含額外項目的內容,覆寫尾碼中現有的資料。
小心
如果您正在管理的伺服器是配置 Directory Server,在初始化來自 LDIF 檔的尾碼時,除非正在還原資料,否則請小心不要覆寫 o=NetscapeRoot 尾碼。否則,您會刪除需要所有重新安裝之 Sun Java System 伺服器的資訊。
您必須以目錄管理員或系統管理員的身份登入驗證才能初始化尾碼。為安全起見,只有目錄管理員和系統管理員擁有尾碼根項目的存取權,例如 dc=example,dc=com。因此,只有這些身份可以匯入包含有根項目的 LDIF 檔案。
從主控台初始化尾碼
- 在 Directory Server Console 最上層的 [配置] 標籤上,展開 [資料] 節點,顯示您要初始化的尾碼。
- 在尾碼節點上按一下滑鼠右鍵,然後選取快顯功能表中的 [初始化]。或者,您可以選取尾碼節點,再選取 [物件] 功能表中的 [初始化]。顯示 [初始化尾碼] 對話方塊。
- 在 [LDIF 檔案] 欄位中,輸入您想要用來初始化的 LDIF 檔案完整路徑,或是按一下 [瀏覽] 找到電腦上的這個檔案。
- 如果您是從匯入檔案所在的本端電腦操作主控台,請跳到步驟 6。如果您是從含有 LDIF 檔案之伺服器的遠端電腦操作主控台,請選取下列其中一個選項:
於主控台上。指出 LDIF 檔位於您正在執行主控台的機器上。在此情況下,您可以瀏覽該檔案。
於伺服器上。表示 LDIF 檔案位於遠端伺服器上。在此情況下,[瀏覽] 按鈕是停用的。依預設值,主控台會在下列目錄中尋找檔案:
ServerRoot/slapd-serverID/ldif
- 按一下 [確定]。
- 請確認您要覆寫尾碼中的資料。尾碼初始化將繼續進行,任何錯誤將報告於對話方塊中。
使用 ldif2db 指令初始化尾碼
directoryserver ldif2db 指令會初始化尾碼,覆寫現有的資料。此指令在繼續匯入之前會要求您關閉伺服器。
依預設值,指令會先進行儲存,然後再將現有的任何 o=NetscapeRoot 配置資訊與匯入檔案中的 o=NetscapeRoot 配置資訊合併。
若要在伺服器停止時匯入 LDIF:
下列範例使用 ldif2db 指令將兩個 LDIF 檔案匯入至單一尾碼中。
/usr/sbin/directoryserver -s example ldif2db -n Database1 \
-i /var/opt/mps/serverroot/slapd-example/ldif/demo.ldif \
-i /var/opt/mps/serverroot/slapd-example/ldif/demo2.ldif
如需關於使用該指令的詳細資訊,請參閱 Directory Server Man Page Reference。
使用 ldif2db 初始化尾碼
與 ldif2db 指令相同,directoryserver ldif2db-task 指令會覆寫指定尾碼中的資料。此程序檔要求伺服器需執行才能執行匯入。
此程序檔的指令是:
下列範例使用 ldif2db-task 匯入 LDIF 檔。您無需根權限來執行此指令,但必須以具有根權限的使用者,諸如目錄管理員身份進行驗證,
/usr/sbin/directoryserver -s example ldif2db-task \
-D "cn=Directory Manager" -w password -n Database1 \
-i /var/opt/mps/serverroot/slapd-example/ldif/demo.ldif下表描述此範例中所使用的 ldif2db-task 選項:
如需關於使用該指令的詳細資訊,請參閱 Directory Server Man Page Reference。
匯出日期您可以使用 LDIF 匯出目錄的內容。下列情況適合匯出資料:
匯出作業並不會匯出配置資訊 (cn=config)。
使用主控台將整個目錄匯出到 LDIF
您可以根據最後一個匯出檔案的位置,來決定將部分或所有的目錄資料匯出到 LDIF 中。當 LDIF 檔案在伺服器上時,您可以只匯出伺服器上本機尾碼中鍵結的資料。如果 LDIF 檔案在伺服器遠端,您便可以匯出所有尾碼和鍵結的尾碼。
若要在伺服器執行時從 Directory Server Console 將目錄資料匯出到 LDIF:
- 在 Directory Server Console 最上層的 [工作] 標籤,捲動至標籤的底部,按一下 [匯出到 LDIF] 旁的按鈕。
顯示 [匯出] 對話方塊。
- 如果您是在伺服器遠端的電腦上執行主控台,則 LDIF 檔案欄位下會顯示兩個選項按鈕。選取 [在主控台電腦] 表示您要匯出至執行主控台的機器中的 LDIF 檔案。選取 [在伺服器電腦] 表示您要匯出至位在伺服器電腦上的 LDIF 檔案。
- 在 [LDIF 檔案] 欄位中輸入 LDIF 檔案的完整路徑和檔案名稱,或者按一下 [瀏覽] 找到此檔案。
如果您已選取 [在伺服器電腦],則停用 [瀏覽] 按鈕。[瀏覽] 按鈕未啟用時,檔案會依預設值儲存在下列目錄中:
ServerRoot/slapd-serverID/ldif
- 如果您要匯出整個目錄,請選取 [所有的尾碼] 選項按鈕。
如果您只要匯出目錄的樹狀子目錄,請選取 [樹狀子目錄] 選項按鈕,然後在文字方塊中輸入樹狀子目錄基礎的 DN。
您也可以按一下 [瀏覽] 選取樹狀子目錄。
- 按一下 [確定] 匯出目錄內容至檔案。
使用主控台將單一尾碼匯出到 LDIF
若要在伺服器執行時從 Directory Server Console 將一個尾碼匯出到 LDIF:
- 在 Directory Server Console 最上層的 [配置] 標籤上,展開 [資料] 節點,顯示您要匯出的尾碼。
- 在尾碼節點上按一下滑鼠右鍵,然後選取快顯功能表中的 [匯出]。或者,您可以選取尾碼節點,再選取 [物件] 功能表中的 [匯出]。
顯示 [匯出尾碼] 對話方塊。
- 在 [LDIF 檔案] 欄位中,輸入至 LDIF 檔案的完整路徑,或是按一下 [瀏覽] 找到電腦上的這個檔案。
[瀏覽] 按鈕未啟用時,依預設值檔案會儲存在下列目錄中:
ServerRoot/slapd-serverID/ldif
- 如果尾碼已複製,您可以選取核取方塊以 [匯出複製資訊]。此功能僅在您匯出 LDIF 以初始化此尾碼的其他複本時需要。
- 如果此尾碼的屬性加密已啟用,您可以選取核取方塊以 [解密] 屬性。為此,您必須提供保護伺服器憑證資料庫的密碼。選取選項以輸入密碼或輸入包含密碼的檔案名稱。如果您無法提供解密屬性值的密碼,加密的值將顯示於 LDIF 輸出中。
- 按一下 [確定] 匯出尾碼的內容至檔案。
從指令行匯出至 LDIF
您可以使用 directoryserver db2ldif 指令,匯出任何尾碼或目錄的樹狀子目錄至 LDIF。這個程序檔會將您所有的尾碼內容或部分內容匯出至 LDIF 檔案,不論伺服器正在執行或已經停止。
若要將資料庫的內容匯出至 LDIF 檔案,請使用下列指令:
下列範例將兩個尾碼匯出至單一 LDIF 檔案:
/usr/sbin/directoryserver -s example db2ldif \
-a /var/opt/mps/serverroot/slapd-example/output.ldif \
-s "dc=example,dc=com" -s "o=NetscapeRoot"下表描述此範例中所使用的 db2ldif 選項:
表 4-4 範例中所用 db2ldif 選項的描述
選項
描述
-a
定義伺服器儲存匯出 LDIF 之輸出檔案的名稱。這個檔案會依預設值儲存在 ServerRoot/slapd-serverID 目錄中。
-s
指定匯出時要包含的尾碼或樹狀子目錄。您可以使用多個 -s 引數來指定多個尾碼或樹狀子目錄。
db2ldif 指令也可以與 -r 選項結合使用,將複製的尾碼匯出到 LDIF 檔案中。所產生的 LDIF 將會含有複製機制所使用的屬性子類型。接下來,便可以將此 LDIF 檔案匯入到用戶的伺服器上以初始化用戶複本,如初始化複本中所述。
當 db2ldif 指令與 -r 選項結合使用時,伺服器必須不在執行狀態中。您必須先停止伺服器然後再啟動,或使用 db2ldif.pl 程序檔與 -r 選項,後者不需停止伺服器。
如需關於使用該程序檔的詳細資訊,請參閱 Directory Server Man Page Reference。
備份資料備份資料時系統會儲存目錄內容的快照,以防日後資料庫檔案損毀或刪除。您可以使用 Directory Server Console 或指令行程序檔來備份尾碼。
依預設值,此處所描述的所有備份程序都會將伺服器檔案的複本儲存在同一台主機上。為了安全起見,您應該複製備份,然後將它儲存在不同的電腦或檔案系統中。
使用主控台備份您的伺服器
從 Directory Server Console 備份伺服器時,伺服器會將所有資料庫的內容與相關的索引檔案,複製到備份位置上。您可以在伺服器執行時執行備份。
若要從主控台備份伺服器:
從指令行備份您的伺服器
您可以使用 directoryserver db2bak 指令,從指令行備份您的伺服器。不論伺服器是否在執行都可以使用此指令。
您無法使用這個備份方法來備份配置資訊。如需關於備份配置資訊的資訊,請參閱備份 dse.ldif 配置檔。
若要備份目錄,請使用下列指令:
backupDir 參數指定應該儲存備份的目錄。系統使用目前的日期產生預設的備份目錄名稱:YYYY_MM_DD_hh_mm_ss。如需關於使用該指令的詳細資訊,請參閱 Directory Server Man Page Reference。如需關於設計部署的備份策略的資訊,請參閱 Directory Server Deployment Planning Guide。
備份 dse.ldif 配置檔
當還原伺服器時,dse.ldif 配置檔必須含有與備份伺服器時相同的設定。若要確保如此,每當備份伺服器時,請備份 dse.ldif 配置檔複本並儲存在安全的地方。
此外,當您執行下列動作時,Directory Server 自動備份位於目錄 ServerRoot/slapd-serverID/config 的 dse.ldif 配置檔。
從備份還原資料下列程序描述如何使用 Directory Server Console 或指令行來還原目錄中的尾碼。您的伺服器必須已經使用備份資料中所描述的程序備份。在還原與複製協議有關的尾碼前,請先詳細閱讀還原複製的尾碼。
還原複製的尾碼
在將提供者伺服器與用戶伺服器之間複製的尾碼還原之前,您必須做特殊的考量。如果可能的話,您應該透過複製機制來更新尾碼,而不是從備份還原尾碼。
當您還原提供者或集線器執行個體時,伺服器配置必須和備份時的配置相同。若要確保如此,請在還原 Directory Server 資料前首先還原 dse.ldif。請參閱還原 dse.ldif 配置檔。
此節將解釋還原複本的時間和方式,以及如何確定該複本在作業後與其他複本同步化。如需使用備份和還原以初始化複本的詳細資訊,請參閱初始化複本。
還原單一主機案例中的提供者
作為單一主機供應者的尾碼含有整個複製拓樸的系統授權資料。因此,還原這個尾碼等於重新初始化整個拓樸中的所有資料。除非您想要從還原的備份內容將所有資料重新初始化,否則請勿還原單一主機。
如果單一主機資料因為錯誤而無法還原,您可以考慮使用其中一台用戶主機的資料,因為該主機可能包含比備份新的更新資料。在這種情況下,您必須將資料從用戶複本匯出到 LDIF 檔案,然後從 LDIF 檔案重新初始化主機。
不論您是還原備份或匯入主機複本上的 LDIF 檔案,之後您都必須將所有向此複本接收更新資料的集線器和用戶複本重新初始化。系統將會在提供者伺服器的記錄檔中記錄一個訊息,提醒您需要重新初始化用戶。
還原多重主機案例中的提供者
在多重主機複製中,其他主機每個都包含複製資料的系統授權複本。您無法用目前的複本內容來還原可能已經過時的舊備份。如果可能的話,您應該允許複製機制使用其他主機的內容更新此主機。
如果不可能,您只能用下列其中一種方法來還原多重主機複本:
- 最簡單的方法就是不還原備份,而是從其中一台其他主機重新初始化預定的主機。這樣可確保最新的資料會傳送至預定的主機,並且那些資料也已經準備好用來複製。請參閱使用主控台初始化複本或從指令行初始化複本。
- 當複本有上百萬個項目時,較快的方法是使用新的二進位複製功能來還原取自其中一個其他主機的最新備份。請參閱使用二進位複製初始化複本。
- 如果您已將主機備份,而該備份不比其他任何主機中的變更記錄內容還舊,則應該使用此備份來還原這台主機。如需變更記錄天數的描述,請參閱進階多重主機配置。還原舊備份時,其他主機會使用變更記錄,以自儲存備份之後的所有修改來更新此主機。
不論您如何還原或重新初始化,初始化之後的主機複本都將維持唯讀模式。此行為讓複本可以與其他主機同步化,同步化後便可允許寫入作業,如多重主機初始化後的交集中所述。
在允許於還原或初始化的主機上執行寫入作業之前,先允許所有複本聚集的優點是:沒有任何集線器或用戶伺服器需要重新初始化。
還原集線器
此節只適用於當複製機制無法自動更新集線器複本時,例如,資料庫檔案損毀或複製中斷太久。當發生這些情況時,您必須使用下列其中一種方法來還原或重新初始化集線器複本:
- 最簡單的方法就是不還原備份,而是從其中一台主機複本重新初始化集線器。這樣可確保最新的資料會傳送至集線器,以備複製。請參閱使用主控台初始化複本或從指令行初始化複本。
- 當複本有上百萬個項目時,較快的方法是使用新的二進位複製功能來還原取自另一個集線器複本的最新備份。請參閱使用二進位複製初始化複本。如果沒有其他集線器複本可以複製,您必須依照上一段的描述重新初始化集線器,或是下一段的描述將集線器還原 (如果可能的話)。
- 如果您已將集線器備份,而該備份不比任何提供者的變更記錄內容還舊 (不管是集線器或主機複本),則應該使用該備份來還原此集線器。如需變更記錄天數的描述,請參閱進階多重主機配置。還原舊備份時,其提供者會使用變更記錄,以自儲存備份之後的修改將此集線器更新。
還原專屬用戶
此節只適用於當複製機制無法自動更新專屬用戶複本時,例如,資料庫檔案被損毀或複製中斷太久。當發生這些情況時,您將必須使用下列其中一種方法來還原或重新初始化用戶:
- 最簡單的方法就是不還原備份,而是從其中一位提供者重新初始化用戶,主機或集線器複本皆可。這樣可確保最新的資料傳送至用戶,以備複製。請參閱使用主控台初始化複本或從指令行初始化複本。
- 當複本有上百萬個項目時,較快的方法是使用新的二進位複製功能來還原取自其他用戶複本的最新備份。請參閱使用二進位複製初始化複本。如果沒有其他用戶可以複製,您必須依照上一段的描述重新初始化複本,或是下一段的描述將用戶還原 (如果可能的話)。
- 如果您用戶的備份不比任何提供者的變更記錄內容還舊 (不管是集線器或主機複本),則應該使用該備份來還原此用戶。如需變更記錄天數的描述,請參閱進階多重主機配置。還原舊備份時,其提供者會使用變更記錄,以自儲存備份之後進行的所有修改更新此用戶。
使用主控台還原您的伺服器
您可以使用 Directory Server Console,從之前建立的備份中還原損毀的目錄資料。若要使用主控台還原資料,必須執行 Directory Server。但是在還原期間,無法使用對應的尾碼來處理作業。
若要從之前建立的備份還原伺服器:
從指令行還原您的伺服器
您可以使用下列程序檔從指令行還原伺服器:
使用 bak2db 指令
若要在伺服器關閉期間從指令行還原目錄:
下列範例從預設的備份目錄還原備份:
/usr/sbin/directoryserver -s example bak2db \
/var/opt/mps/serverroot/slapd-example/bak/2003_07_01_11_34_00如需關於 bak2db 指令的詳細資訊,請參閱 Directory Server Man Page Reference。
使用 bak2db-task
若要在伺服器執行期間從指令行還原目錄,請使用下列指令:
下列範例使用 bak2db-task 指令還原備份。-a 選項會提供備份目錄的完整路徑。
/usr/sbin/directoryserver -s example bak2db-task\
-D "cn=Directory Manager" -w password \
-a /var/opt/mps/serverroot/slapd-example/bak/2003_07_01_11_34_00如需詳細資訊,請參閱 Directory Server Man Page Reference。
還原 dse.ldif 配置檔
此目錄會在下列目錄中建立 dse.ldif 檔案的兩個備份複本:
ServerRoot/slapd-serverID/config
dse.ldif.startOK 檔案會在伺服器啟動時記錄 dse.ldif 檔案的複本。 dse.ldif.bak 檔案中包含對 dse.ldif 檔案最新變更的備份。將包含最新變更的檔案複製到您的目錄中。
若要還原 dse.ldif 配置檔: