<Power Shell>07查询AD角色拥有者和备份企业SQL数据库和日志

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
日志服务 SLS,月写入数据量 50GB 1个月
简介:

前一篇文章我们有效的利用powershell来查询和管理AD域的站点名称,这篇文章cantgis 将带给你的是关于如何查询自己所在域的角色拥有者和来使用powershell执行命令备份企业的SQL数据库和备份SQL日志文件。

这几个命令必须在powershell2.0以上才可以执行!
查询自己所在域的角色拥有者

普及知识AD(Active Directory) 中定义了五种FSMO(Flexible Single Master Operation)角色

  • Schema master(架构主控)

  • Domain naming master(域命名主控)

  • RID master(RID主控)

  • PDC master(PDC仿真器)

  • Infrastructure master(基础架构主控)


1.Schema Master
作用是修改活动目录的源数据。我们知道在活动目录里存在着各种各样的对像,比如用户、计算机、打印机等,这些对像有一系列的属性,活动目录本身就是一个数据库,对象和属性之间就好像表格一样存在着对应关系,那么这些对像和属性之间的关系是由谁来定义的,就是Schema Master,如果大家看过cantgis部署Exchange的话,就会知道Schema是可以被扩展的,但需要大家注意的是,扩展Schema一定是在Schema Master进行扩展的,在其它域控制器上或成员服务器上执行扩展程序,实际上是通过网络把数据传送到Schema上然后再在Schema Master上进行扩展的,要扩展Schema就必须具有Schema Admins组的权限才可以。

建议:在占有Schema Master的域控制器上不需要高性能,因为我们不是经常对Schema进行操作的,除非是经常会对Schema进行扩展,不过这种情况非常的少,但我们必须保证可用性,否则在安装Exchange或LCS之类的软件时会出错哦。

2.Domain Naming Master

这也是一个森林级别的角色,它的主要作用是管理森林中域的添加或者删除。如果你要在你现有森林中添加一个域或者删除一个域的话,那么就必须要和Domain Naming Master进行联系,如果Domain Naming Master处于Down机状态的话,你的添加和删除操作那上肯定会失败的。
建议:对占有Domain Naming Master的域控制器同样不需要高性能,我想没有一个网络管理员会经常在森林里添加或者删除域吧?当然高可用性是有必要的,否则就没有办法添加删除森里的域了。
3.PDC Emulator
在前面已经提过了,Windows 2000域开始,不再区分PDC还是BDC,但实际上有些操作则必须要由PDC来完成,那么这些操作在Windows 2000域里面怎么办呢?那就由PDC Emulator来完成,主要是以下操作:
⑴处理密码验证要求;
在默认情况下,Windows 2000域里的所有DC会每5分钟复制一次,但有一些情况是例外的,比如密码的修改,一般情况下,一旦密码被修改,会先被复制到PDC Emulator,然后由PDC Emulator触发一个即时更新,以保证密码的实时性,当然,实际上由于网络复制也是需要时间的,所以还是会存在一定的时间差,至于这个时间差是多少,则取决于你的网络规模和线路情况。
⑵统一域内的时间;
微软活动目录是用Kerberos协议来进行身份认证的,在默认情况下,验证方与被验证方之间的时间差不能超过5分钟,否则会被拒绝通过,微软这种设计主要是用来防止回放式攻击。所以在域内的时间必须是统一的,这个统一时间的工作就是由PDC Emulator来完成的。
⑶向域内的NT4 BDC提供复制数据源;
对于一些新建的网络,不大会存在Windows 2000域里包含NT4的BDC的现象,但是对于一些从NT4升级而来的Windows 2000域却很可能存有这种情况,这种情况下要向NT4 BDC复制,就需要PDC Emulator。
⑷统一修改组策略的模板;
⑸对Windows 2000以前的操作系统,如WIN98之类的计算机提供支持;
对于Windows 2000之前的操作系统,它们会认为自己加入的是NT4域,所以当这些机器加入到Windows 2000域时,它们会尝试联系PDC,而实际上PDC已经不存在了,所以PDC Emulator就会成为它们的联系对象!
建议:从上面的介绍里大家应该看出来了,PDC Emulator是FSMO五种角色里任务最重的,所以对于占用PDC Emulator的域控制器要保证高性能和高可用性。
4.RID Master
在Windows 2000的安全子系统中,用户的标识不取决于用户名,虽然我们在一些权限设置时用的是用户名,但实际上取决于安全主体SID,所以当两个用户的SID一样的时候,尽管他们的用户名可能不一样,但Windows的安全子系统中会把他们认为是同一个用户,这样就会产生安全问题。而在域内的用户安全SID=Domain SID+RID,那么如何避免这种情况?这就需要用到RID Master,RID Master的作用是:分配可用RID池给域内的DC和防止安全主体的SID重复。
建议:对于占有RID Master的域控制器,其实也没有必要一定要求高性能,因为我们很少会经常性的利用批处理或脚本向活动目录添加大量的用户。这个请大家视实际情况而定了,当然高可用性是必不可少的,否则就没有办法添加用户了。
5. Infrastructure Master
FSMO的五种角色中最无关紧要的可能就是这个角色了,它的主要作用就是用来更新组的成员列表,因为在活动目录中很有可能有一些用户从一个域(Domain)转移到另外一个域(Domain),那么用户的DN(DomainName)名就发生变化,这时其它域对于这个用户引用也要发生变化。这种变化就是由Infrastructure Master来完成的。

建议:其实在活动目录森林里仅仅只有一个域或者森林里所有的域控制器都是GC(全局编录)的情况下,Infrastructure Master根本不起作用,所以一般情况下对于占有Infrastructure Master的域控制器往忽略性能和可能性。


cantgis 对于这五个角色的理解
前两个条件:架构主控和域命名主控只能是一个森林角色。
其他三个:RID主控,PDC仿真器和基础设施主控是林中每个域的角色。每个域都有自己的RID主控,PDC仿真器和基础设施主控
同样我们使用 PowerShell AD模块也可以帮助我们得到我们想要得到的信息。
使用下面的代码我们当前用户就可以得到powershell林和域角色的拥有者

1
2
PS C:\Windows\system32>  [System.DirectoryServices.ActiveDirectory.Domain] ::GetCurrentDomain() |  Select-Object  *owner
PS C:\Windows\system32>  [System.DirectoryServices.ActiveDirectory.Forest] ::GetCurrentForest() |  Select-Object  *owner





使用powershell执行命令备份企业的SQL数据库和备份SQL日志文件
如今我们可以再powershell中执行SQL数据库备份
当然我们必须要利用这个类:Microsoft.SqlServer.Management.Smo.Backup
让我们来看看如何实现吧
首先们运行下面的来发现服务器的对象(Object

1
2
3
Add-Type  -AssemblyName  "Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
add-type  -AssemblyName  "Microsoft.SqlServer.SMOExtended, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
$server  New-Object  Microsoft.SqlServer.Management.Smo.Server  $env:ComputerName



我们知道了服务器对象(Object)后我们就可以执行下面的cmdlet命令来实现SQL备份。
我们选择的完全备份,最后输出的文件位于C盘的backup文件夹中.


1
2
3
4
5
6
7
8
9
$backup  New-Object  Microsoft.SqlServer.Management.Smo.Backup  -Property  @{
    Action =  [Microsoft.SqlServer.Management.Smo.BackupActionType] ::Database
    BackupSetDescription =  "Full backup of MyDB"
    BackupSetName =  "MyDB backup set"
    Database =  "MyDB"
    MediaDescription =  "Disk"
}
$backup .Devices.AddDevice( "C:\Backup\MyDB.bak" 'File' )
$backup .SqlBackup( $server )


好了下面cantgis 将继续讲一下如何利用powershell备份SQL事务日志
我们将使用SQL SMO备份日志, 枚举:BackupActionType 同样我们也可以使用上面备份数据库的值来备份日志
下面我们执行cmdlet

1
2
3
4
5
6
7
8
9
10
11
12
13
Add-Type  -AssemblyName  "Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
Add-Type  -AssemblyName  "Microsoft.SqlServer.SMOExtended, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
                                                    
$server  New-Object  Microsoft.SqlServer.Management.Smo.Server  $env:ComputerName
$backup  New-Object  Microsoft.SqlServer.Management.Smo.Backup  -Property  @{
    Action =  [Microsoft.SqlServer.Management.Smo.BackupActionType] ::Log
    BackupSetDescription =  "Transaction Log backup of MyDB"
    BackupSetName =  "MyDB TLog backup set"
    Database =  "MyDB"
    MediaDescription =  "Disk"
}
                                                    
$backup .Devices.AddDevice( "C:\Backup\MyDB-TLog.bak" 'File' )



上面的代码中我主要说一下关于Action = [Microsoft.SqlServer.Management.Smo.BackupActionType]::Log 
它是要定义一下:定义我们想要执行一个事务日志备份
好了,谢谢大家陪Cantgis 一起深入的进行powershell的使用。
请持续关注cantgis小屋




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




相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
11天前
|
SQL 监控 关系型数据库
SQL语句当前及历史信息查询-performance schema的使用
本文介绍了如何使用MySQL的Performance Schema来获取SQL语句的当前和历史执行信息。Performance Schema默认在MySQL 8.0中启用,可以通过查询相关表来获取详细的SQL执行信息,包括当前执行的SQL、历史执行记录和统计汇总信息,从而快速定位和解决性能瓶颈。
|
15天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
37 3
|
15天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
29 3
|
22天前
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
77 10
|
16天前
|
SQL 关系型数据库 MySQL
|
29天前
|
存储 定位技术 数据库
介绍一下数据库的备份和恢复策略
【10月更文挑战第21】介绍一下数据库的备份和恢复策略
|
15天前
|
数据库
【赵渝强老师】数据库的备份方式
备份数据库是指将数据库中的数据及相关信息保存起来,以便在系统故障时恢复。备份对象不仅限于数据本身,还包括数据库对象、用户权限等。根据备份策略、类型和模式的不同,可分为整体/部分备份、完全/增量备份、一致/非一致备份。文中还附有相关视频讲解。
|
26天前
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
31 0
|
14天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
29 1
|
16天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
30 4
下一篇
无影云桌面