我正在寻找必须采取的措施来导致包含多个镜像数据库的 SQL Server 2008 实例上的单个镜像数据库发生阈值警报。
仅供参考:这已经发布在ServerFault.com 上,并作为Microsoft Connect上的错误提交。
我正在建立一个基于三台 SQL Server 2008 R2 机器和数据库镜像的 HA SQL 服务器环境。
我会命名它们:
“company.intra”域是控股公司的域。
两个数据库引擎都在侦听静态 52002 端口,因此客户端应用程序可以通过以下方式访问它们:
principal.company.intra,52002 & mirror.company.intra,52002
Run Code Online (Sandbox Code Playgroud)
端点EP_Mirroring在主体和镜像、EP_Witness见证和侦听主体的 5022 端口、镜像的 5023 和见证的 5024 端口上调用。
服务帐户已正确配置并被授予对彼此端点的连接权限。
镜像功能工作正常,并且在 TSQL 手动故障转移或模拟系统故障的情况下,数据库可以正确进行故障转移。
问题在于应用程序在故障转移时行为异常。
应用程序测试上下文如下:
一个包含两个文本框和一个按钮的小型 .NET 应用程序:
单击按钮时,它会进行存储过程调用,并使用 sp 的输出填充 Textbox1,使用 my 的数据源属性填充 Textbox2 SqlConnection。
连接字符串如下所示:
Data source=principal.company.intra,52002;failover partner=mirror.company.intra,52002;
initial catalog = TEST_FAILOVER;user ID=user;password=pass;Connection Timeout=30
Run Code Online (Sandbox Code Playgroud)
我从我的笔记本电脑启动了这个应用程序,位于另一个域: laptop.childcompany.com
场景一:
场景二:
我们内部拥有主 SQL Server(目前有 15 个主服务器(总共约 500 个数据库),大多数服务器具有十六进制核心处理器)。
这些被镜像到附近建筑物中的其他备份服务器(通过专用的 0ms 光纤链路)。
我们想要做的是在数英里外的异地数据中心维护我们数据的实时副本(作为更大的 DR 项目的一部分 - 即如果我们所在地区存在通信问题)。
目前我们使用 SQL Server 2008 R2 - 标准版。
显然,使用 SQL Server 2008 R2 的“标准版”将我们限制为同步镜像,因为异步是“企业版”功能。
我们已经完成了异地同步镜像的测试,但延迟使它成为不可能。
我很想升级到 SQL Server 2012 Enterprise 并实施 AlwaysOn 可用性组,但该公司不愿意花费 100,000 英镑以上来升级 SQL 许可(2012 年的每核许可 + 我们的六核处理器 = 史诗般的失败)-他们甚至不愿意花钱升级到 2008 Enterprise,所以这也是窗口之外的异步镜像。
因此,由于这些财务限制,我的手被束缚在 2008 R2 标准版上。
留给我的唯一选择是日志传送和复制(如果我遗漏了什么,请纠正我)——日志传送很粗糙——但是如果管理得当是可行的——所以我们现在把它放在次要位置。
我的问题:
replication sql-server mirroring sql-server-2008-r2 high-availability
当您设置了 SQL Server 镜像时,您是否相信您的镜像数据库会与主数据库保持相同,即使经过数月的镜像?我知道我们都在检查状态,当然它说数据库已同步……但我担心镜像可能会因网络故障、软件错误等而失去同步,并且无法检测到故障。然后有一天我们需要镜子,我们惊恐地发现它已经损坏了。
我可以做的一件事是定期从主数据库刷新镜像,因为我们的数据库不是特别大。但也许我过于偏执了。
我想听听 SQL Server 或任何其他平台的 DBA 的意见,了解您是否对镜像 DB 的完整性存在这种担忧,如果是,您会采取哪些措施来减轻这种担忧。您是否偶尔将主数据库重新复制到镜像?您是否采取其他措施来确保两者之间的一致性?感谢您提供的任何建议。
我一直在尝试在镜像的 SQL Server 2008 R2 配置中启用 TDE。启用 TDE 并不是那么困难,但是当我在主体上启用 TDE 时,镜像数据库会进入挂起状态。
这里和这里有一些不错的文章以及许多其他文章,但它们都演示了在镜像配置上启用 TDE,并在启用加密之前将数据库导入镜像。我还没有找到在现有镜像系统中简单地打开 TDE 的方法。
我已经从 Principal 导出服务主密钥和服务密钥并将它们导入到镜像中。我尝试过 transact-sql'ing 镜像,希望我在 GUI 中看到的内容是错误的,因为一些高级镜像正在发生,但没有成功。
是否可以跨现有镜像 SQL Server 设置启用 TDE?
sql-server mirroring sql-server-2008-r2 transparent-data-encryption
我有一对 SQL Server 2008 R2 服务器托管一个没有见证的同步镜像数据库。这个周末,我们不得不做一些网络维护,所以我暂停了镜像。恢复后,委托人的状态恢复为通常的委托人,已同步。然而,镜像现在显示为镜像、同步/恢复......我不记得恢复......部分通常在那里。
尽管每小时进行日志备份,但主体上的事务日志也开始增长。这向我表明同步过程没有释放事务日志空间。
这里发生了什么,我该如何解决?
有没有办法在MySQL中镜像数据库?在 SQL Server 中,您可以以主对主关系链接 2 个数据库。一个数据库将接受事务,并且事务将同时在两个数据库上提交。MySQL中有类似的概念吗?
我们当前的设置是生产中使用的主要数据库,带有用于 HA 的手动故障转移镜像数据库。
我还需要设置一个报告数据库。最好的方法是什么?我应该设置一个 SQL 作业来删除和创建镜像数据库的快照并每晚刷新吗?
有没有人有其他建议?
谢谢
我即将设置Ola Hallengrens数据库维护计划。我们有我们的数据库镜像,我只是想知道我是否需要在我的两个 Sql Server 实例上运行脚本还是只在主实例上运行脚本?
sql-server-2008 sql-server maintenance mirroring ola-hallengren
我知道 SQL Server 2012 和 2014 提供了提供此功能的AlwaysOn 可用性组,但我仍然停留在 SQL Server 2008 R2 上一段时间。
我最近看到了这个 AWS 白皮书:http : //media.amazonwebservices.com/AWS_RDBMS_MS_SQLServer.pdf
我对第 11 页的这张图表感到困惑:
这似乎表明镜像数据库可以用于读取(检查“可读副本”功能列),就像使用日志传送时一样,因为根据我的经验,镜像数据库根本无法使用--它的唯一目的是用于故障转移。
这个问题的答案:数据库镜像仅限于原始数据库似乎证实了我的怀疑,即镜像数据库不可读,尽管只是顺便说一句。
这份白皮书是错误的,还是 SQL Server 2008 R2 镜像数据库确实可读?
如果是,需要做什么,因为尝试在 SSMS 中连接会导致一个窗口连接到主数据库,并且运行USE [database]会出现以下错误:
Msg 954, Level 14, State 1, Line 1
The database "database" cannot be opened. It is acting as a mirror database.
Run Code Online (Sandbox Code Playgroud)
更新:我知道有一些方法可以解决这个问题,并从镜像和延时中获取一些可读的东西,我想有人可以争论快照是“可读副本”,但那是与您通过日志传送或事务复制获得的可读副本类型非常不同,因为这两者都会自动更新,即使稍微过时(也许快照也可能是 - 我坚持标准Edition,所以我对Enterprise Edition功能集不太熟悉)。除此之外,一个真正可读的同步镜像(比如使用AlwaysOn Availability Groups在 2012+ 中)将提供一个完美同步的可读版本——这更有用,因为镜像可用于分配读取查询负载并避免返回过时数据的所有问题。我的主要目的(如上面的问题所述)实际上是获得关于镜像本身可读性的明确答案(不是快照或它的副本)。虽然提供的答案与我自己的经验一致,但所提供的确定来源的唯一链接是实现类似结果的可能方法——它们都没有明确说明镜像不可读。我将接受提供此类链接的第一个答案。