首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >镜像服务器的镜像问题

镜像服务器的镜像问题
EN

Database Administration用户
提问于 2018-12-28 10:14:29
回答 1查看 1.1K关注 0票数 1

我正在使用Server 2014标准版运行两个Windows 2012 R2。我对镜像有奇怪的看法。

我将镜像配置为15个数据库,而不是Witness服务器。主体服务器显示所有数据库都是同步的,镜像是镜像、同步/恢复。

当我打开数据库镜像监视器时,我看到角色主体处于同步镜像状态,但是镜像的角色没有连接。我在两个方向都失败了,数据库正常地出现在镜像服务器上。数据正在复制,以便进行故障排除,我已经完成了以下步骤。

  1. 原则上,我在错误日志中看到了与镜像跟踪无关的内容,我可以看到大多数原则上的错误是错误: 18456,严重性: 14,状态: 38。
  2. 我看到了镜像服务器中的错误,因为所有的数据库都是数据库镜像连接错误4‘接收数据时发生了错误:’10054(现有连接被远程主机强制关闭)‘。用于“TCP://server.company.com:5022”。错误: 1474,严重程度: 16,状态:
  3. 我已经尝试通过停止并启动端点来解决它没有被解析。
  4. 我试过暂停和恢复它也没有解决。
  5. 我已经验证了TCP/IP,在这两个服务器上都启用了它。
  6. 我试过配置别名,它也不是解析。
  7. 我互相打电话,似乎没有任何沟通问题。
  8. 我已经验证了连接到域级的权限,相同的服务帐户的原理和镜像。
  9. 之前是SQL server 2014 sp2,今天我已经用最新的服务sp3进行了更新,尽管我仍然可以在未连接到镜像的镜像监视器中看到相同的更新。

请在这个问题上有所帮助,如何解决这个问题?

EN

回答 1

Database Administration用户

发布于 2019-06-01 08:42:27

SQL2014 std不支持可用性组上的AlWays,您需要企业版,但需要SQL2016STD版本支持基本可用性组特性

您可以使用下面的查询来检查镜像的状态。

这将给你一个进一步调查的起点。

代码语言:javascript
复制
--==============================================================================
-- query that shows the current state of each database in the mirroring
--==============================================================================
  SELECT   db_name(sd.[database_id])           AS [Database Name]
          ,sd.mirroring_state                  AS [Mirror State]
          ,sd.mirroring_state_desc             AS [Mirror State] 
          ,sd.mirroring_partner_name           AS [Partner Name]
          ,sd.mirroring_role_desc              AS [Mirror Role]  
          ,sd.mirroring_safety_level_desc      AS [Safety Level]
          ,sd.mirroring_witness_name           AS [Witness]
          ,sd.mirroring_connection_timeout AS [Timeout(sec)]
    FROM sys.database_mirroring AS sd
    WHERE mirroring_guid IS NOT null
    ORDER BY [Database Name];

确保sql server服务帐户具有这两个服务器上的所有相关权限。

我不确定您的环境,但是根据下面的查询以及在日志中可以找到的内容,在方便的时候,计划重新启动sql server服务(这将导致故障转移)并返回。

另一件在过去对我有用的事情是编写整个程序,然后删除它,然后通过脚本重新设置它,每次一个数据库。

这样你就可以尽量缩小问题的范围。

有一个非常类似的问题:数据库镜像错误,但一切看起来都还好

答案建议查看权限。先做好。

另一件事是按照下面的示例进行故障转移:(原来的数据库很多,我每台服务器只留下一个DB,但您可以理解)

代码语言:javascript
复制
--============================================================================
--instructions:
--for each server,
--1) get the list of the alter database set safety full
--2) paste that script below
--3) run it
--4) get the list of the alter database set partner failover
--5) run the first line make sure it goes through
--6) run the other lines - failover all the databases
--version 20140624 Anne and Marcello

--============================================================================




--============================================================================
-- before failing over
-- the safety mode should be changed to FULL (SYNCHRONOUS)
--============================================================================

select 'ALTER DATABASE '+quotename(db_name(database_id))+
' SET SAFETY FULL'
from sys.database_mirroring
where mirroring_role_desc='PRINCIPAL'
and (substring(db_name(database_id),1,2) IN ('US')
 or db_name(database_id) LIKE '%ROW')
order by db_name(database_id)


*
-- sqlweblon3
ALTER DATABASE [US14AUTPProduct] SET SAFETY FULL


*
--sqlweblon4
ALTER DATABASE [USAccount] SET SAFETY FULL



--============================================================================
-- generate the failover scripts
--============================================================================
select 'ALTER DATABASE '+quotename(db_name(database_id))+' SET PARTNER FAILOVER'
from sys.database_mirroring
where mirroring_role_desc='PRINCIPAL'
and (substring(db_name(database_id),1,2) IN ('US')
 or db_name(database_id) LIKE '%ROW')
order by db_name(database_id)

*
--sqlweblon3 (principal)
ALTER DATABASE [US14AUTPProduct] SET PARTNER FAILOVER


*
--sqlWeblon4 (principal)
ALTER DATABASE [ProductOfferROW] SET PARTNER FAILOVER
ALTER DATABASE [USAccount] SET PARTNER FAILOVER
ALTER DATABASE [USProductOffer] SET PARTNER FAILOVER
ALTER DATABASE [USStock] SET PARTNER FAILOVER



ALTER DATABASE [ProductOfferROW] SET PARTNER FAILOVER


/** IF YOU ARE FAILING FROM DR TO LIVE CHECK THE LITESPEED 
ACTIVITY SERVICE IS RUNNING ON THE SERVER. IF IT IS NOT LITESPEED 
SQL AGENT JOBS WILL FAIL **/



--============================================================================
-- after the failover change the safety mode back to ASYNCHRONOUS   
-- this is to be done on what is now the principal
--============================================================================

-- DR-sqlweblon3
ALTER DATABASE [US14AUTPProduct] SET SAFETY OFF
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/225911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档