有没有人成功镜像分发数据库?我们有一个专用服务器作为分销商。它处理我们从生产到报告的所有推送复制。我们想在附近建立一个相同的服务器,以防分销商崩溃。有没有人成功构建过这样的东西?
SQL Server 版本:2008 R2 Enterprise SP2
我正在尝试处理我们的 SQL Server 维护,但我遇到了一些我认为不正确的事情。我们有一个带有 3 个数据库的单个生产实例,每个数据库都异地镜像到一个 DR 实例。
在查看 DR 实例时,我注意到 LDF 文件很大,对于频繁使用的数据库超过 35GB。
我知道这可能是由于镜像数据库处于完全恢复模式并且日志从未备份过,它们只会继续增长,直到驱动器空间耗尽。
我们在主体数据库上做日志备份,我的问题是在镜像上做日志备份有什么问题?
在进行日志备份之前,必须至少完成一次来自镜像的完整数据库备份,在这种情况下,是否需要使用特殊选项,因为它是镜像?
这也是MIRROR数据库上的事务日志维护建议。
感谢您提供任何意见
我必须在镜像的辅助节点上做一些维护。由于这是在短暂的网络中断后重新建立镜像时站点变慢的结果,我希望安全并禁用镜像,然后在我完成对违规服务器的戳刺后重新启用它。
我现在的计划是:
这是打破/重新建立镜子的最安全方法吗?有什么我应该注意的问题吗?
这是上一个关于为什么我无法缩小主体数据库上的日志文件的问题的后续问题。
长话短说,我设置了数据库镜像,但忘记确保备份事务日志的作业再次运行,事务日志增长到近 60GB。
由于设置了镜像,这种大小的增加在镜像服务器上重复出现,最终占用了所有磁盘空间,使镜像数据库无法使用。
根据有关镜像数据库上事务日志维护的这个问题,您无法备份镜像上的日志,但是当在有关如何缩小镜像数据库上过度增长的日志文件的评论中特别询问时,留下了一条评论
一种方法是故障转移到镜像数据库并在那里进行收缩。在非生产环境中对此进行彻底测试,以确保它具有您想要/期望的行为。
这似乎表明可能有其他方法可以缩小镜像上的日志文件,并且这种方法在生产服务器上不一定安全。
有没有办法安全地缩小数据库镜像上的事务日志文件?
我的环境如下: VMWare 5.5激活服务器MS Windows Server 2008R2 Enterprise域和SQL Server 2008 R2 Enterprise。具有光纤通道连接的集中存储。
我的SQL Server DB. 我有 2 个file groups:一个带有实时数据 (FG1),第二个带有历史数据 (HDG)。
第二个文件组是read-only. 每个月我都会在分区中移动 - 我将新数据(来自上个月)添加到历史数据中。这个过程是自动的。
我们将数据库移至新服务器。最初,我必须手动完成该过程。在此操作期间,我的镜像出现故障(在操作 3 之后 - 请参阅下面的流程流程)并出现以下错误:
在主服务器上:
日志中的第 0 行:
Date 15.6.2015 20:54:11
Log SQL Server (Current - 16.6.2015 07:55:00)
Source spid84
Message
Setting database option MULTI_USER to ON for database MYDB.
Run Code Online (Sandbox Code Playgroud)
日志中的第 1 行:
Date 15.6.2015 20:54:11 …Run Code Online (Sandbox Code Playgroud) 我在具有自动故障转移配置的高安全性的 sqlserver2008-R2 的单个实例上有 3 个镜像数据库。有没有办法触发仅 1 个数据库的自动故障转移?
我想模拟数据库实际上无法访问的位置,而不仅仅是点击 SSMS 的“故障转移”按钮。我可以停止主节点上的端点,但这会使所有 3 个数据库都无法访问,因为它们使用相同的端点。
如何仅禁用 1 db?
我们有几十个主服务器和相应的镜像,大多数都运行良好,但其中1个运行异常。具体来说,sp_dbmmonitorresults对于给定的主数据库,proc 将所有列返回为 NULL,而sp_dbmmonitorresults在镜像上返回有效信息:


现在,我大致知道原因是什么;当设置主服务器和镜像服务器时,主服务器上的区域设置不正确(时间正确但使用的是 +4 区域(美国等),在设置镜像后,时间区域更正为 GMT +0我知道男孩的错误,但是c'est la vie!)
编辑:19/12/2012
今天我删除了镜像,删除了镜像上的副本并重新设置了镜像,但是这并没有解决问题!我将在这个问题上悬赏以尝试找出问题的根源。
确认一下,如果我EXEC sp_dbmmonitorresults @database_name = 'ProScript'在每台服务器上手动运行,它会为主要服务器上的大多数值返回 NULL,但在镜像上返回正常,如下所示:
在主要运行时:
缩放:点击查看全尺寸版本
对着镜子跑的时候:
缩放:点击查看全尺寸版本
如您所见,时间是当前的并且数据库是同步的,但是主数据库上的 log_generation_rate、unsent_log、send_rate 等变量都为 NULL?
两台服务器都有监控作业每分钟运行一次,exec sys.sp_dbmmonitorupdate作为作业步骤等。
查看 sys.sp_dbmmonitorupdate 的来源,它从中获取这些值sys.dm_os_performance_counters- 所以如果我在镜像上运行以下内容:
SELECT counter_name ,
cntr_value
FROM sys.dm_os_performance_counters
WHERE instance_name = 'ProScript'
AND counter_name IN ( N'Log Send Queue KB', N'Log Bytes Sent/sec', N'Redo Queue KB', N'Redo Bytes/sec', N'Transaction Delay', N'Log Bytes Flushed/sec', N'Transactions/sec' )
Run Code Online (Sandbox Code Playgroud)
我得到了很好的结果:

但是,如果我在主数据库上运行相同的 SQL,则没有行! …
首先,我必须承认我对事务日志的概念感到困惑。我的意思是 - 我确实理解它是发生在数据库上的所有事务的日志,但是当谈到将它正确地放入某些任务的上下文中时,我显然缺少一些东西。因此,对于将要回答这个问题的任何人 - 请随意扩展事务日志背后的理论。
主要问题是 - 我有需要镜像的 SQL Server 2008 和 2 GB 数据库(有 12 GB 事务日志)。如果我没有镜像该数据库,我认为我可以切换到简单模式或在备份后截断日志。但在这种情况下 - 如果我希望控制该事务日志,我该怎么办?据我了解 - 如果我希望能够轻松镜像数据库(只需进行完整备份),我需要保留整个事务日志。
有没有办法解决?理想情况下,我希望可以进行备份,每次将 MDF 和 LDF 都保存在 1 个文件中,并且在备份完成后,数据库上的事务日志 (LDF) 减少到 0。这种情况下的问题是增量备份 - 如果我的第一次备份截断的日志,我认为如果我想稍后进行镜像,第二个备份需要引用第一个(即我会坚持保留一堆文件而不是一个文件)。
那么 - 任何人都可以在这个主题上启发我吗?我知道我试图在这里填补很多漏洞,我提出的“解决方案”可能不是最好的,但如果有人能推动我在事务日志上朝着正确的方向前进,它们如何影响镜像和最佳解决方案,我将不胜感激与那两个练习。
我们在周末设置了数据库镜像,但忘记重新启用备份事务日志的作业。当我今天早上进来时,事务日志已经膨胀到 58GB,并且占用了大部分驱动器空间。
我将事务日志手动备份到磁盘以使数据库再次运行,但是运行 DBCC SHRINKFILE 似乎并没有减少事务日志文件的物理大小。
DBCC SHRINKFILE (N'MyDatabaseName_Log', 1000)
Run Code Online (Sandbox Code Playgroud)
如果我使用
DBCC SQLPERF(LOGSPACE)
Run Code Online (Sandbox Code Playgroud)
我可以看到只有 22% 的当前日志正在被使用
数据库名称 日志大小(MB) 已用日志空间 (%) 状态 我的数据库名称 55440.87 22.38189 0
如果我log_reuse_wait_desc在 sys.databses 中签出,我看到的唯一记录是DATABASE_MIRRORING,所以我猜测镜像在为什么日志文件的物理大小不会缩小方面发挥作用?
SELECT log_reuse_wait_desc
FROM sys.databases
WHERE name = N'MyDatabaseName';
Run Code Online (Sandbox Code Playgroud)
我还注意到我的主要数据库镜像状态是暂停,并且尝试恢复它立即失败并出现以下错误:
数据库“MyDatabaseName”的远程镜像伙伴遇到错误 5149,状态 1,严重性 25。数据库镜像已暂停。解决远程服务器上的错误并恢复镜像,或删除镜像并重新建立镜像服务器实例。
镜像服务器上的错误日志也包含此错误,但也包含有关日志文件驱动器已满的错误
MODIFY FILE 在尝试扩展物理文件时遇到操作系统错误 112(磁盘空间不足。)。
和
F:\Databaselogs\MyDatabaseName_1.ldf: 遇到操作系统错误 112(磁盘空间不足。)。
主体服务器在日志文件驱动器上有 60GB(这里还有其他数据库托管),而镜像服务器只有 45GB。
备份日志文件使数据库再次可用,但是我还想减小磁盘上物理日志文件的大小,并恢复镜像。
如何在不影响镜像或备份链的情况下缩小物理事务日志文件的大小?
我正在运行 SQL Server 2005
我有一些 Microsoft SQL Server 2012 镜像,在异步模式下没有见证,偶尔会断开连接。我正在运行 SQL Server 2012 11.0.5058。看着镜子边的原木我看到
未能分配 BUF:FAIL_BUFFER_ALLOCATION 1
有一大堆内存管理员消息
错误:802,严重性:17,状态:0。
缓冲池中没有足够的可用内存。
错误:1454,严重性:16,状态:1。
数据库镜像将被暂停。服务器实例 'instance' 在充当数据库 'database' 的镜像伙伴时遇到错误 802,状态 0,严重性 17。数据库镜像伙伴可能会尝试自动从错误中恢复并恢复镜像会话。有关更多信息,请查看错误日志以获取其他错误消息。
任何有关检查哪些内容以找出镜像在这一系列事件后进入暂停状态然后断开连接的帮助将不胜感激。在这之后我可以重新建立镜子,它们可以正常工作几天,然后它又会再次发生。