Active Directory數據庫複製原理

前面的博文中和大家聊了很多關於域的話題,比如說額外預控、域的恢復等,但是大家可否知道我們上面說的這些都是靠兩個域之間的數據庫相互複製實現的,那麼域之間的數據究竟是如何複製的呢,下面我們就來聊聊域數據庫的複製原理:

在聊之前我們首先要知道一下幾個關鍵問題:

1、域數據庫存放的位置:c:\\windows\ntdsntds.dit

2、站點:一組高速且可靠連接的計算機稱爲站點

域的複製分爲以下兩種模式:

1、多主機複製模式:一臺域控制器內的數據庫發上變化,會通知其他域控制器進行同步。(15s同步一次)

2、緊急數據:會立即同步到PDC主機。

 

數據庫複製遵循以下原理:

當域控中的控制器數量發生變化,例如增加或減少域控制器上的進程,KCC就會進行Active Directory複製括撲的計算。KCC被翻譯成知識一致性驗證器,我們在任務管理器的進程列表中看不到KCC,因爲它屬於LSACC進程的一部分,KCC可以自動計算出域控制器進行計算時所有的括撲,當域控制器數量減少時,KCC傾向於在域中使用環形括撲進行Active Directory進行復制。也就是說,當一個域控制器的Active Directory內容發生變化時,這個更改不會同時傳遞給其他域控制器,而是要沿着KCC設計的環形括撲一一傳遞下去。而且爲了實現冗餘以及爲了提高效率,KCC設計的括撲還是雙環括撲。下圖(圖一)就是一個域控制器的括撲示意圖,從圖中可以看到,每個域控制器都有兩個複製夥伴,Active Directory的複製沿着順時針和逆時針兩個方向進行。

image

                                                                  圖一

域的數據庫複製遵循以下規則:

1、對象屬性:對象的修改次數即版本號(屬性從1開始)

2、修改時間:在不同的DC上對對象修改的時間。(靠後優先)

3、修改對象的DC的GUID:對比GUID號大小。(誰大誰優先)

OK,說了這麼多文字性的東西詳細許多朋友看的都困了,下面我們就通過一個小實驗來爲大家說明一下:

server01、server02是一個域控的故障轉移羣就,我們在server01上新建用戶,然後利用我們前面說的windows server backup 工具對其進行 系統備份,然後刪除用戶,在利用我們所備份的數據對其進行恢復,請問所刪除用戶能還原成功嗎?

實驗準備:

1、兩臺windows server 2012的服務器

2、兩臺服務器做成故障轉移羣集

3、安裝windows server backup

具備上述條件以後我們開始實驗:

首先我們打開server01的服務器管理器:

image

點擊工具:

image

點擊Active Directory用戶和計算機:

image

鼠標右鍵我們的域名:

image

點擊新建:

image

點擊組織單位:

image

輸入我們要新建的組織單位名稱,在這裏我輸入text,點擊確定:

image

鼠標右鍵我們新建的text:

image

點擊新建:

image

點擊用戶:

image

在這裏我新建用戶tom,點擊下一步:

image

輸入用戶密碼,點擊確定:

image

新建用戶完成,我們打開另一臺域控的用戶和計算機:

image

可以看到,此域控也有TOM用戶。

ok,下面我們開始對server01的域控進行備份:

打開server01的服務器管理器:

image

點擊工具:

image

點擊windows server backup:

image

點擊本地備份:

image

點擊一次性備份:

image

系統彈出備份嚮導,我們保持默認點擊下一步:

image

注意,這裏要選擇自定義,點擊下一步:

image

點擊添加項目:

image

這裏我們勾選系統狀態,點擊確定:

image

點擊下一步:

image

系統詢問我們備份位置,我們選擇本地磁盤,點擊下一步:

image

可以看到系統已經自動讀取出我們的E盤了,點擊下一步:

image

點擊備份:

image

備份開始,我們等待備份結束:

image

OK,備份完成,點擊關閉。

下面我們刪除tom這個用戶:

打開服務器管理器:

image

點擊工具:

image

點擊用戶和計算機:

image

鼠標右鍵TOM:

image

點擊刪除:

image

點擊是:

image

OK!可以看到TOM用戶已經被刪除!

下面我們利用我們剛剛備份的對其進行恢復:

重新啓動計算機,在計算機開機時按F8,進入安全模式:

image

這裏我們選擇進入目錄修復模式:

image

我們以本地管理員身份登陸:

image

點擊管理----windows server backup:

image

點擊本地備份:

image

點擊恢復:

image

注意這裏勾選此服務器點擊下一步:

image

這裏可以看到我們要恢復的信息,點擊下一步:

image

注意這裏勾選系統狀態,點擊下一步:

image

這裏勾選原始位置,點擊下一步:

image

點擊確定:

image

點擊恢復:

image

點擊是:

image

OK系統開始恢復,我們稍等片刻:

image

恢復完成,系統提示我們重新啓動,我們點擊 重新啓動

image

重啓完成,系統提示我們按回車鍵繼續,我們按下回車鍵:

image

進入桌面後系統給我們彈出服務器管理器,我們點擊工具:

image

點擊用戶和計算機:

image

OK,進來之後我們發現我們所要恢復的用戶TOM並沒有成功恢復,這究竟是爲什麼呢?

如果仔細閱讀剛開始我所說的東西的朋友一定會明白其實這是因爲數據庫複製遵循對象屬性這個規則,我在備份時tom這個用戶的版本號小許我刪除時候的版本號,所以我在還原時候的版本號自然也就小於我刪除時候的版本號,所以對象還原不成功。但是有些情況下這個對象是必須要還原成功的,那麼我們就應該使用如下辦法:

必須進行授權還原,手動增大對象的屬性。具體操作如下:

重新啓動系統,在開機時按F8進入安全模式:

image

這裏我們選擇進入目錄修復模式:

image

我們以本地管理員身份登陸:

image

點擊管理----windows server backup:

image

點擊本地備份:

image

點擊恢復:

image

注意這裏勾選此服務器點擊下一步:

image

這裏可以看到我們要恢復的信息,點擊下一步:

image

注意這裏勾選系統狀態,點擊下一步:

image

這裏注意一定要勾選對Active Directory文件執行授權還原,然後點擊下一步:

image

點擊確定:

image

點擊恢復:

image

點擊是:

image

開始恢復,我們等其恢復完成:

image

OK,回覆完成,注意這裏我們先不重啓,在這裏我們同時按下WIN+R:

image

輸入cmd:

image

這裏我們輸入增大屬性命令:ntdsutil,然後敲回車:

image

然後我們輸入activate instance ntds,敲回車:

image

然後我們輸入授權還原命令:authoritative restore,敲回車:

image

然後我們輸入:restore object cn=tom,ou=text,dc=abc,dc=com,敲回車:

image

系統問我們是否確定進行授權還原,我們點擊是:

image

OK,這裏可以看到我們的版本號已經被增大到100000。現在我們點擊重新啓動:

開機之後打開服務器管理器:

image

點擊工具:

image

點擊用戶和計算機:

image

我們可以看到,用戶tom已經被成功恢復。

OK,到這裏我們的實驗就已經完成了,如果有不懂得朋友可以提問。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章