前面的博文中和大家聊了很多关于域的话题,比如说额外预控、域的恢复等,但是大家可否知道我们上面说的这些都是靠两个域之间的数据库相互复制实现的,那么域之间的数据究竟是如何复制的呢,下面我们就来聊聊域数据库的复制原理:
在聊之前我们首先要知道一下几个关键问题:
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的复制沿着顺时针和逆时针两个方向进行。
图一
域的数据库复制遵循以下规则:
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的服务器管理器:
点击工具:
点击Active Directory用户和计算机:
鼠标右键我们的域名:
点击新建:
点击组织单位:
输入我们要新建的组织单位名称,在这里我输入text,点击确定:
鼠标右键我们新建的text:
点击新建:
点击用户:
在这里我新建用户tom,点击下一步:
输入用户密码,点击确定:
新建用户完成,我们打开另一台域控的用户和计算机:
可以看到,此域控也有TOM用户。
ok,下面我们开始对server01的域控进行备份:
打开server01的服务器管理器:
点击工具:
点击windows server backup:
点击本地备份:
点击一次性备份:
系统弹出备份向导,我们保持默认点击下一步:
注意,这里要选择自定义,点击下一步:
点击添加项目:
这里我们勾选系统状态,点击确定:
点击下一步:
系统询问我们备份位置,我们选择本地磁盘,点击下一步:
可以看到系统已经自动读取出我们的E盘了,点击下一步:
点击备份:
备份开始,我们等待备份结束:
OK,备份完成,点击关闭。
下面我们删除tom这个用户:
打开服务器管理器:
点击工具:
点击用户和计算机:
鼠标右键TOM:
点击删除:
点击是:
OK!可以看到TOM用户已经被删除!
下面我们利用我们刚刚备份的对其进行恢复:
重新启动计算机,在计算机开机时按F8,进入安全模式:
这里我们选择进入目录修复模式:
我们以本地管理员身份登陆:
点击管理----windows server backup:
点击本地备份:
点击恢复:
注意这里勾选此服务器点击下一步:
这里可以看到我们要恢复的信息,点击下一步:
注意这里勾选系统状态,点击下一步:
这里勾选原始位置,点击下一步:
点击确定:
点击恢复:
点击是:
OK系统开始恢复,我们稍等片刻:
恢复完成,系统提示我们重新启动,我们点击 重新启动
重启完成,系统提示我们按回车键继续,我们按下回车键:
进入桌面后系统给我们弹出服务器管理器,我们点击工具:
点击用户和计算机:
OK,进来之后我们发现我们所要恢复的用户TOM并没有成功恢复,这究竟是为什么呢?
如果仔细阅读刚开始我所说的东西的朋友一定会明白其实这是因为数据库复制遵循对象属性这个规则,我在备份时tom这个用户的版本号小许我删除时候的版本号,所以我在还原时候的版本号自然也就小于我删除时候的版本号,所以对象还原不成功。但是有些情况下这个对象是必须要还原成功的,那么我们就应该使用如下办法:
必须进行授权还原,手动增大对象的属性。具体操作如下:
重新启动系统,在开机时按F8进入安全模式:
这里我们选择进入目录修复模式:
我们以本地管理员身份登陆:
点击管理----windows server backup:
点击本地备份:
点击恢复:
注意这里勾选此服务器点击下一步:
这里可以看到我们要恢复的信息,点击下一步:
注意这里勾选系统状态,点击下一步:
这里注意一定要勾选对Active Directory文件执行授权还原,然后点击下一步:
点击确定:
点击恢复:
点击是:
开始恢复,我们等其恢复完成:
OK,回复完成,注意这里我们先不重启,在这里我们同时按下WIN+R:
输入cmd:
这里我们输入增大属性命令:ntdsutil,然后敲回车:
然后我们输入activate instance ntds,敲回车:
然后我们输入授权还原命令:authoritative restore,敲回车:
然后我们输入:restore object cn=tom,ou=text,dc=abc,dc=com,敲回车:
系统问我们是否确定进行授权还原,我们点击是:
OK,这里可以看到我们的版本号已经被增大到100000。现在我们点击重新启动:
开机之后打开服务器管理器:
点击工具:
点击用户和计算机:
我们可以看到,用户tom已经被成功恢复。
OK,到这里我们的实验就已经完成了,如果有不懂得朋友可以提问。