您的目錄伺服器所管理的資料經常需大量匯入。Directory Server Enterprise Edition 提供了可匯入及匯出整個尾碼的工具。它也提供可同時備份所有尾碼以及從備份復原所有資料的工具。
開始進行任何備份或復原作業前,請確實設計適合本身情況所需的備份與復原策略。如需有關不同備份選項的更多資訊、應考量的事項,以及規劃備份與復原策略的指導方針,請參閱「Sun Java System Directory Server Enterprise Edition 6.2 Deployment Planning Guide」中的「Designing Backup and Restore Policies」。
本章包含下列主題:
本節說明如何執行目錄資料的二進位備份。除了本節所提到的二進位備份程序以外,您也可以製作二進位副本,用以初始化複寫拓樸中的尾碼。請參閱使用二進位副本初始化複寫的尾碼。
二進位資料備份會儲存目錄資料的副本,以便在以後資料庫檔案損毀或遭刪除時使用。此作業不會備份配置資料。若要備份整個目錄伺服器以供嚴重損壞回復之用,請參閱嚴重損壞回復。
切勿在備份作業期間停止伺服器。
執行備份的頻率必須高於清除延遲。由屬性 nsDS5ReplicaPurgeDelay 所指定的清除延遲,係指對變更記錄執行內部清除作業之前所歷經的一段時間 (以秒為單位)。預設清除延遲為 604800 秒 (1 週)。變更記錄會保存更新記錄,可能已複寫、也可能未複寫。
若您執行備份的頻率低於清除延遲,變更記錄可能會在備份之前即已清除。因此,當您使用備份復原資料時,即會遺失變更。
本節所述之一切備份程序,預設會將伺服器檔案的副本儲存在相同的主機上。接著,您應將備份複製並儲存到不同的機器或檔案系統上,以確保更高的安全性。
您必須停止目錄伺服器,方可執行 dsadm backup 指令。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
備份目錄資料。
$ dsadm backup instance-path archive-dir |
例如:
$ dsadm backup /local/ds /local/tmp/20051205 |
您可以在伺服器執行時,使用 dsconf backup 指令備份目錄資料。但目錄資料若在備份執行時有所變更,即難以正確回復。若要避免在使用 dsconf backup 時出現此問題,請設定複寫參照,或將伺服器設為唯讀。
如需有關 dsadm 與 dsconf 指令的更多資訊,請參閱 dsadm(1M) 與 dsconf(1M) 線上手冊。
復原伺服器時,dse.ldif 配置檔案必須包含與伺服器備份時相同的配置資訊。
$ cp instance-path/config/dse.ldif archive-dir |
當您執行下列動作時,目錄伺服器會自動備份目錄 instance-path/config 中的 dse.ldif 配置檔案。
當您啟動目錄伺服器時,即會在名為 dse.ldif.startOK 的檔案中建立 dse.ldif 檔案的備份。
當您修改 cn=config 分支時,檔案會先備份到 config 目錄中的 dse.ldif.bak 檔案,接著伺服器才會將修改寫入 dse.ldif 檔案中。
此程序會使用凍結模式功能。凍結模式可讓您停止磁碟的資料庫更新,因此執行檔案系統快照作業時將更加安全。您可以額外採用凍結模式,使備份更形可靠。
進行檔案系統備份時,絕不能讓伺服器將使用者資料寫入磁碟中。若您確定在某段時間內不會有更新,請在這段期間進行備份。若您無法確定未來是否會有更新,請先將伺服器設為凍結模式,再進行備份。
使用凍結模式的伺服器會繼續寫入存取與錯誤記錄。在單一伺服器拓樸中,於凍結模式開啟時接收的作業,會導致傳回 LDAP 錯誤。所記錄的錯誤訊息即為離線資料庫的標準錯誤。在複寫拓樸中,會傳回參照。若要讓凍結模式正確運作,即不應在資料庫上執行任何其他作業。
請注意,使用凍結模式的伺服器資料庫比使用唯讀模式的伺服器資料庫更為穩定。唯讀模式與凍結模式不同,它允許建立作業及修改配置項目。開啟凍結模式後,所有配置的資料庫均會離線。任何進行中的內部作業,都會收到資料庫即將離線的通知。進行中的 LDAP 作業會先行完成,同時資料庫環境會進行清除。包括搜尋使用者資料等後續的內送作業,在凍結模式設為關閉之前都將遭拒絕。但在凍結模式開啟期間,您仍可搜尋配置參數。
針對此程序的某些部分,您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。此程序的其他部分只能使用指令行完成。
(可選擇) 將伺服器設為凍結模式。
$ dsconf set-server-prop -h host -p port read-write-mode:frozen |
使用適合您檔案系統類型的工具,進行檔案系統的備份。
若您的伺服器已在凍結模式中,請重新將伺服器設為讀寫模式。
$ dsconf set-server-prop -h host -p port read-write-mode:read-write |
若您的伺服器收到來自其他伺服器的複寫更新,這些更新將在凍結模式關閉後立即啟動。
備份至 LDIF 可讓您將目錄資料備份至格式化的 LDIF 檔案中。
您可以利用 LDIF 所匯出的尾碼內容,備份目錄資料。匯出資料對執行下列作業大有助益:
備份您伺服器中的資料
將您的資料複製到其他目錄伺服器
將您的資料匯出至其他應用程式
在變更您的目錄拓樸後重新寫入尾碼
匯出作業並不會匯出配置資訊 (cn=config)。
請勿於匯出作業進行時停止伺服器。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
使用下列其中一項指令,將尾碼匯出至 LDIF 檔案:
若您的伺服器是本機伺服器,並且已停止,請鍵入:
$ dsadm export instance-path suffix-DN LDIF-file |
若您的伺服器位於遠端且正在執行中,請鍵入:
$ dsconf export -h host -p port suffix-DN LDIF-file |
下列範例將使用 dsconf export,將兩個尾碼匯出至同一個 LDIF 檔案:
$ dsconf export -h host1 -p 1389 ou=people,dc=example,dc=com \ ou=contractors,dc=example,dc=com /local/ds/ldif/export123.ldif |
dsadm export 與 dsconf export 指令亦可與 --no-repl 選項搭配使用,以指定將不匯出任何複寫資訊。依預設,複寫的尾碼會與複寫資訊一併匯出至 LDIF 檔案。產生的 LDIF 檔案會包含複寫機制所使用的屬性子類型。此 LDIF 檔案可接著匯入用戶伺服器以初始化用戶複本,如初始化複本中所述。
如需有關這些指令的更多資訊,請參閱 dsadm(1M) 與 dsconf(1M) 線上手冊。
下列程序將說明如何復原您目錄中的尾碼。您的伺服器必須使用僅備份目錄資料中所述之程序完成備份。復原複寫協議中所載的尾碼之前,請先參閱復原已複寫的尾碼。
請勿於復原作業期間停止伺服器。由於復原伺服器會覆寫所有現有的資料庫檔案,因此備份之後的一切資料修改都會遺失。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
請使用下列其中一項指令復原您的伺服器:
若您的伺服器是本機伺服器,並且已停止,請鍵入:
$ dsadm restore instance-path archive-dir |
例如,若要從備份目錄中復原備份,請鍵入:
$ dsadm restore /local/ds/ local/ds/bak/2006_07_01_11_34_00 |
若您的伺服器位於遠端且正在執行中,請鍵入:
$ dsconf restore -h host -p port archive-dir |
例如,若要從備份目錄中復原備份:
$ dsconf restore -h host1 -p 1389 /local/ds/bak/2006_07_01_11_34_00 |
如需有關這些指令的更多資訊,請參閱 dsadm(1M) 與 dsconf(1M) 線上手冊。
目錄伺服器會在以下目錄中建立兩個 dse.ldif 檔案的備份副本:
instance-path/config |
dse.ldif.startOK 檔案會在伺服器啟動時,記錄 dse.ldif 檔案的副本。dse.ldif.bak 檔案含有 dse.ldif 檔案最新變更的備份。將含有最新變更的檔案複製到您的目錄中。
針對此程序的某些部分,您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。此程序的其他部分只能使用指令行完成。
停止伺服器。
$ dsadm stop instance-path |
切換至含有配置檔案的目錄。
$ cd instance-path/config |
以已知有效的備份配置檔案覆寫 dse.ldif 檔案,例如:
$ cp dse.ldif.startOK dse.ldif |
以下列指令啟動伺服器:
$ dsadm start instance-path |
從 LDIF 檔案初始化尾碼。此作業會刪除尾碼中目前的資料,並將其取代為 LDIF 檔案的內容。
使用 LDIF 檔案執行大量 ldapadd、ldapmodify 或 ldapdelete 作業。如此可讓您大量增加、修改及刪除目錄中任何尾碼的項目。
下表說明初始化尾碼與大量增加、修改及刪除項目等作業間的差異。
表 8–1 初始化尾碼與大量匯入資料的比較
比較網域 |
初始化尾碼 |
大量增加、修改及刪除項目 |
---|---|---|
覆寫內容 |
覆寫 內容 |
不覆寫內容 |
LDAP 作業 |
僅增加 |
增加、修改、刪除 |
效能 |
快速 |
較緩慢 |
回應伺服器失敗 |
不可分割 (失敗後會遺失所有變更) |
最大效率 (保留失敗前所做的所有變更) |
LDIF 檔案位置 |
用戶端或伺服器本機 |
於用戶端機器 |
匯入配置資訊 (cn=config) |
匯入配置資訊 |
不匯入配置資訊 |
指令 |
若伺服器為本機伺服器,並且已停止: dsadm import 若伺服器位於遠端,且正在執行中: dsconf import |
ldapmodify -B |
初始化尾碼後,會將尾碼中的現有資料覆寫為僅含有增加項目之 LDIF 檔案的內容。
您必須認證為「目錄管理員」或「管理員」,方可初始化尾碼。
伺服器執行時,只有「目錄管理員」與「管理員」可匯入含有根項目的 LDIF 檔案。基於安全性考量,只有這些使用者可存取尾碼的根項目,例如 dc=example,dc=com。
復原複寫協議中所載的尾碼之前,請先參閱復原已複寫的尾碼。
您所匯入的所有 LDIF 檔案均須使用 UTF-8 字元集編碼。
初始化尾碼時,LDIF 檔案必須含有對應尾碼的根項目與所有目錄樹狀結構節點。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
使用下列其中一項指令,可從 LDIF 檔案初始化尾碼,亦即將資料庫內容匯入 LDIF 檔案中。
這些指令可覆寫您尾碼中的資料。
若您的伺服器是本機伺服器,並且已停止,請鍵入:
$ dsadm import instance-path LDIF-file suffix-DN |
下列範例將使用 dsadm import 指令,將兩個 LDIF 檔案匯入單一尾碼中:
$ dsadm import /local/ds /local/file/example/demo1.ldif \ /local/file/example/demo2.ldif dc=example,dc=com |
若您的伺服器位於遠端且正在執行中,請鍵入:
$ dsconf import -h host -p port LDIF-file suffix-DN |
下列範例使用 dsconf import 匯入 LDIF 檔案。執行此指令時不需具備超級使用者權限,但必須將您認證為具有超級使用者權限的使用者,如「目錄管理員」。
$ dsconf import -h host1 -p 1389 /local/file/example/demo1.ldif \ ou=People,dc=example,dc=com |
如果在多個尾碼上平行執行 dsconf import、dsconf reindex 或同時執行兩個指令,作業事件記錄會變大而可能對效能造成不良影響。
如需有關這些指令的更多資訊,請參閱 dsadm(1M) 與 dsconf(1M) 線上手冊。
執行 ldapmodify 作業時,您可以大量增加、修改或刪除項目。這些項目指定於含有修改或刪除現有項目之更新陳述式的 LDIF 檔案中。此作業不會清除已存在的項目。
您的目錄伺服器所管理的任何尾碼均可為變更項目的目標。與任何其他增加項目的作業相同,伺服器也會在所有的新項目匯入時為其編製索引。
ldapmodify 指令會透過 LDAP 匯入 LDIF 檔案,並執行該檔案包含的所有作業。使用此指令可讓您同時修改所有目錄尾碼中的資料。
復原複寫協議中所載的尾碼之前,請先參閱復原已複寫的尾碼。
您所匯入的所有 LDIF 檔案均須使用 UTF-8 字元集編碼。
匯入 LDIF 檔案時,父系項目必須位於目錄中,或先從檔案中增加。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
從 LDIF 檔案大量增加、修改或刪除。
$ ldapmodify -D cn=admin,cn=Administrators,cn=config -w - -B baseDN -f LDIF-file |
下列範例將使用 ldapmodify 指令執行匯入。執行此指令不需要超級使用者權限,但是您必須以具有超級使用者權限的使用者身份進行認證,例如 cn=Directory Manager 或 cn=admin,cn=Administrators,cn=config。最後一個參數指定所匯入的 LDIF 檔案名稱。
$ ldapmodify -D cn=admin,cn=Administrators,cn=config -w - \ -B dc=example,dc=com -f /local/ds/ldif/demo.ldif |
進行復原前,需要特別注意供應者伺服器與用戶伺服器之間複寫的尾碼。請儘可能透過複寫機制更新尾碼,而不要從備份進行復原。
復原供應者或集散中心實例時,伺服器配置的內容必須與製作備份時相同。為確實做到這一點,請在復原目錄伺服器資料前,先復原 dse.ldif 檔案。請參閱復原 dse.ldif 配置檔案。
本節說明復原複本的方法與時機,以及如何確定此複本與其他複本在作業後仍保持同步。若要初始化複本,請參閱初始化複本。
若您具有大型複寫尾碼,而想要增加許多項目並確定複寫更新皆正確增加,請參閱遞增多個項目到大型複寫的尾碼。
本節包含下列項目的相關資訊:
屬於單一主伺服器供應者的尾碼,含有整個複寫拓樸的授權資料。因此,復原此尾碼即等於重新初始化整個拓樸中的所有資料。只有在需要從所要復原的備份內容重新初始化所有資料時,始應復原單一主伺服器。
若單一主伺服器資料因錯誤而無法回復,請考慮使用其中一個用戶的資料,因為其中可能包含比備份還新的更新。在此情況下,您必須將用戶複本的資料匯出至 LDIF 檔案,再從 LDIF 檔案重新初始化主伺服器。
無論您選擇復原備份還是在主伺服器複本上匯入 LDIF 檔案,接下來都必須重新初始化由此複本接收更新的所有集散中心與用戶複本。供應者伺服器的記錄檔會記錄一則訊息,提醒您必須重新初始化用戶。
在多重主伺服器複寫中,其他主伺服器均各含有複寫資料的授權副本。您無法復原舊的備份,因為它目前的複本內容可能已過期。請儘可能以複寫機制將主伺服器更新為其他主伺服器的內容。
若無法這麼做,請以下列其中一種方式復原多重主伺服器複本:
最簡單的方法是不要復原備份,而從其他主伺服器之一重新初始化預定主伺服器。如此可確保最新的資料將可傳送至預定主伺服器,並可供複寫之用。請參閱從 LDIF 初始化複本。
至於有數百萬個項目的複本,製作二進位副本以復原其他主伺服器之一的較新備份,可能是比較快的做法。請參閱使用二進位副本初始化複寫的尾碼。
若您的主伺服器備份不比任何其他主伺服器的變更記錄內容最長存在時間舊,即可使用備份進行此主伺服器的復原。如需變更記錄存在時間的說明,請參閱修改主伺服器複本上的變更記錄設定。復原舊的備份時,其他主伺服器將使用其變更記錄中所有在備份儲存後處理的修改,對此主伺服器進行更新。
無論您以何種方式復原或重新初始化,主伺服器複本在初始化後仍會處於唯讀模式。此運作方式可讓複本與其他主伺服器進行同步化,以便您後續允許寫入作業,如復原多重主伺服器方案中的主伺服器中所述。
在復原或重新初始化的主伺服器上允許寫入作業前先彙整所有複本的好處在於,所有集散中心或用戶伺服器都將不需再進行重新初始化。
本節僅適用於複寫機制無法自動更新集散中心複本的情況。資料庫檔案受損或複寫作業中斷過久,都屬於這種情況。在此類情況下,您必須以下列其中一種方式復原或重新初始化集散中心複本:
最簡單的方法是不要復原備份,而從其中一個主伺服器複本重新初始化集散中心。如此可確保最新的資料將可傳送至集散中心,並可供複寫之用。請參閱初始化尾碼。
至於有數百萬個項目的複本,製作二進位副本以復原來自其他集散中心之複寫尾碼的較新備份,可能是比較快的做法。請參閱使用二進位副本初始化複寫的尾碼。若沒有其他集散中心複本可複製,請以前述方式重新初始化集散中心,或以後述方式加以復原,視情況而定。
若您集散中心的備份不比其任何供應者的變更記錄內容最長存在時間舊,即可使用備份 (集散中心或主伺服器複本) 進行此集散中心的復原。復原集散中心時,其供應者將使用其變更記錄中所有在備份儲存後處理的修改,對此集散中心進行更新。
無論您以何種方式復原或重新初始化集散中心複本,您接下來都必須重新初始化此集散中心的所有用戶,包括任何其他層級的集散中心在內。
本節僅適用於複寫機制無法自動更新專屬用戶複本的情況。資料庫檔案受損或複寫作業中斷過久,都屬於這種情況。在此類情況下,您必須以下列其中一種方式復原或重新初始化用戶:
最簡單的方法是不要復原備份,而由其供應者之一重新初始化用戶 (主伺服器或集散中心複本)。如此可確保最新的資料將可傳送至用戶,並可供複寫之用。請參閱從 LDIF 初始化複本。
至於有數百萬個項目的複本,製作二進位複本以復原來自其他用戶之複寫尾碼的較新備份,可能是比較快的做法。請參閱使用二進位副本初始化複寫的尾碼。若沒有其他用戶可複製,請以前述方式重新初始化此複本,或以後述方式加以復原,視情況而定。
若您用戶的備份不比其任何供應者的變更記錄內容最長存在時間舊,即可使用備份 (集散中心或主伺服器複本) 進行此用戶的復原。復原用戶時,其供應者將使用其變更記錄中所有在備份儲存後處理的修改,對此用戶進行更新。
使用多重主伺服器複寫時,其他主伺服器可能會在指定主伺服器復原期間處理變更作業。因此,當復原完成時,新的主伺服器必須再行接收復原資料中未納入的最新更新。由於復原主伺服器可能需要很長的時間,在此期間擱置的更新也可能因此為數眾多。
為彙整這些擱置更新,剛復原的主伺服器將自動設為唯讀模式,以利復原後的用戶端作業執行。但只有在透過指令行從 LDIF 檔案匯入資料或使用備份執行二進位複本,以進行主伺服器的復原時,才會設定為此。
因此,在復原之後,多重主伺服器配置中的主伺服器會處理複寫更新並允許讀取作業,但也會傳回所有來自用戶端之寫入作業的參照。
若要在允許更新前先驗證新的主伺服器是否已完全與其他主伺服器同步化,請手動啟用初始化之主伺服器的更新。
由於主伺服器複本可能因其新運作方式而會傳送參照之故,需執行寫入作業的用戶端可能會達到其配置的躍點限制。您可以增加用戶端的躍點限制配置,使其能夠存取可用的主伺服器。若所有主伺服器複本均已初始化或重新初始化,則所有寫入作業都將失敗,因為沒有複本會接受用戶端更新。
無論如何,您都應該密切監視已初始化的主伺服器,並適當設定參照屬性,以儘可能提升伺服器的回應能力。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
您可以在程序檔中使用下列指令,將初始化多重主伺服器複本的程序自動化。
使用 insync 工具,可確保複本已與所有其他的主伺服器彙整。
若所有伺服器上各修改間的延遲為零,或複本從未有變更需複寫 (延遲為 -1),表示複本已同步化。如需更多資訊,請參閱 insync(1) 線上手冊。
開始接受更新。
$ dsconf set-suffix-prop -h host -p port suffix-DN repl-accept-client-update-enabled:on |
此指令會自動將伺服器設為讀寫模式。
若要備份或復原您的目錄伺服器以供嚴重損壞回復之用,請使用下列程序。
針對此程序的某些部分,您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。此程序的其他部分只能使用指令行完成。
使用 dsadn backup 或 dsconf backup 指令備份您的資料庫檔案。
使用二進位備份中的程序,並將備份檔案儲存於安全的位置。
將配置目錄 instance-path/config 複製到安全的位置。
將模式目錄 instance-path/config/schema 複製到安全的位置。
將別名目錄 instance-path/alias 複製到安全的位置。
針對此程序的某些部分,您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。此程序的其他部分只能使用指令行完成。