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,到这里我们的实验就已经完成了,如果有不懂得朋友可以提问。



本文转自wuyvzhang 51CTO博客,原文链接:http://blog.51cto.com/wuyvzhang/1635896,如需转载请自行联系原作者


相关文章
|
1月前
|
缓存 算法 关系型数据库
Mysql(3)—数据库相关概念及工作原理
数据库是一个以某种有组织的方式存储的数据集合。它通常包括一个或多个不同的主题领域或用途的数据表。
46 5
Mysql(3)—数据库相关概念及工作原理
|
9天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
24 2
|
1月前
|
SQL 关系型数据库 MySQL
|
5月前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
|
1月前
|
SQL 关系型数据库 数据库
SQL数据库:核心原理与应用实践
随着信息技术的飞速发展,数据库管理系统已成为各类组织和企业中不可或缺的核心组件。在众多数据库管理系统中,SQL(结构化查询语言)数据库以其强大的数据管理能力和灵活性,广泛应用于各类业务场景。本文将深入探讨SQL数据库的基本原理、核心特性以及实际应用。一、SQL数据库概述SQL数据库是一种关系型数据库
36 5
|
1月前
|
SQL 关系型数据库 MySQL
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
|
1月前
|
SQL 存储 Java
sql注入原理与实战(二)数据库原理
sql注入原理与实战(二)数据库原理
|
3月前
|
消息中间件 Kafka 数据库
深入理解Kafka的数据一致性原理及其与传统数据库的对比
【8月更文挑战第24天】在分布式系统中,确保数据一致性至关重要。传统数据库利用ACID原则保障事务完整性;相比之下,Kafka作为高性能消息队列,采用副本机制与日志结构确保数据一致性。通过同步所有副本上的数据、维护消息顺序以及支持生产者的幂等性操作,Kafka在不牺牲性能的前提下实现了高可用性和数据可靠性。这些特性使Kafka成为处理大规模数据流的理想工具。
73 6
|
4月前
|
存储 SQL 关系型数据库
(六)MySQL索引原理篇:深入数据库底层揭开索引机制的神秘面纱!
《索引原理篇》它现在终于来了!但对于索引原理及底层实现,相信大家多多少少都有了解过,毕竟这也是面试过程中出现次数较为频繁的一个技术点。在本文中就来一窥`MySQL`索引底层的神秘面纱!
315 5
|
4月前
|
SQL 存储 安全
SQL数据库:核心原理、应用实践与未来展望
在电子商务领域,SQL数据库用于存储商品信息、用户信息、订单信息等。通过SQL数据库,电商平台可以实现商品的快速检索、用户行为的跟踪分析、订单状态的实时更新等功能,提升用户体验和运营效率。