新添加了一台服务器,做原来服务器的备份机,用交叉线+双网卡配置了内网。

系统环境:Windows 2008 R2
数据库:SQL2005 SP3
 
设置镜像可以用证书和域两种情况,不过域设置的权限比较复杂,而且需要改动现在的设置,所以决定用证书来设置,中间出现了各种问题,一一记录。
 

搭建的步骤,有不少,前期都是一致的:
 
 
不过没有用见证服务器。
 
一、首先要确保数据库的版本为标准版、企业版或者开发版,坚持版本可以用命令:
 
  1.      select@@version;
二、把数据库回复模式改为完整模式:
     USE master;
ALTER DATABASE <DatabaeName>   //<DatabaeName>既为需要配置镜像的数据库名
SET RECOVERY FULL;
或者:

如果是简单模式,在简历镜像的时候会报错:无法启用数据库镜像,因为'DataName'数据库在两个伙伴上都不处于完全恢复模式
 
三、在镜像服务器上建立空库。
在镜像服务器上建立和主服务器上名称一样的空数据库,为的是配置用户。
 
四、在镜像服务器上建立和主服务器上一样的用户,并赋予数据库
 
4.1、在主服务器上执行命令:
     USE master;
select sid,name from syslogins;
出现如上图的结果。
 
4.2、在镜像服务器上安装这个表建立用户,大部分都是系统用户不用管,只建立我们自定义的用户。
     USE master;
exec sp_addlogin
@loginame='<LoginName>',
@passwd='<Password>',
@sid=<sid>;
sid就是上面查询结果中的sid,复制过来。
 
4.3、把新建的用户付给对应数据库。
    登录数据库→安全性→登录名→【对应用户名】上右键。
    在弹出的窗体中,左侧找到用户映射,然后在右侧选中对应的数据库,如下图:
    
    
在右下方的“数据库角色成员身份”中,选择db_owner和public。
 
五、开始创建证书环境。
 
5.1、创建证书。
 
    主机执行:    
     USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD ='证书的密码';
CREATE CERTIFICATE HOST_A_cert WITH SUBJECT ='HOST_A certificate',
START_DATE ='08/21/2014';
    备机执行:    
     USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD ='证书的密码';
CREATE CERTIFICATE HOST_B_cert WITH SUBJECT ='HOST_B certificate',
START_DATE ='08/21/2014';
如果提示证书已存在,则可先删除证书:
     DROP CERTIFICATE HOST_A_cert
drop master key
 
5.2、创建连接的端点:
    
    主机执行:
     CREATE ENDPOINT Endpoint_Mirroring
STATE = STARTED
AS
TCP ( LISTENER_PORT=5022, LISTENER_IP = ALL )
FOR
DATABASE_MIRRORING
( AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );
    备机执行:
    
     CREATE ENDPOINT Endpoint_Mirroring
STATE = STARTED
AS
TCP ( LISTENER_PORT=5022, LISTENER_IP = ALL )
FOR
DATABASE_MIRRORING
( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );
    5.3、备份证书
    
    先建立一个目录:D:\SQLBackup,目录名可任意。
    主机执行:    
  1.     BACKUP CERTIFICATE HOST_A_cert TO FILE ='D:\SQLBackup\HOST_A_cert.cer';

    备机执行:

  1.     BACKUP CERTIFICATE HOST_B_cert TO FILE ='D:\SQLBackup\HOST_B_cert.cer';
    5.4、互换证书
    把主机中的HOST_A_cert.cer拷贝到备机的D:\SQLBackup(5.3中建立的目录)目录中
    把备机中的HOST_B_cert.cer拷贝到主机的D:\SQLBackup目录中
 
    5.5、添加登录名、用户
    
    主机执行:    
    CREATE LOGIN HOST_B_login WITH PASSWORD ='证书的密码';
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE ='D:\SQLBackup\HOST_B_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
    备机执行:
    
    CREATE LOGIN HOST_A_login WITH PASSWORD ='证书的密码';
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE ='D:\SQLBackup\HOST_A_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
    执行成功后再主机中的登录名中会看到:
    
 
    对应的备机中也有一个用户:HOST_A_login
 
    到此证书环境建立完毕,就是一堆命令,其实并不太复杂。
 
六、建立镜像
    
    6.1、备份主机中的数据库。
    找到要建立镜像的数据库→右键任务→备份,备份类型现在“完整”。
 
    把备份文件复制到备机中备用。
 
    在备机中建立的空数据库上右键任务→还原→数据库
    
 
    
 
    选项中一定要选择:不对数据库执行任何操作,不会滚未提交的事物。
    
    点击确定,备机的数据库会显示:
 
    这时候前期准备就已经完成,可以建立镜像了。
 
七、建立镜像
 
    先在备机中执行:    
    ALTER DATABASE NewDB
SET PARTNER = N'TCP://hostA:5022'-- boat主机名
GO
    然后在主机中执行:    
    ALTER DATABASE NewDB
SET PARTNER = N'TCP://hostB:5022'-- boat主机名
GO
    执行成功后会如下图所示(图片来自上文提到的blog中):
    
 
    八、可能遇到的问题。
    镜像一路顺风其实很快,但是各种各样的 问题都会出现,记录下我遇到的问题。
   
    8.1、 在,执行步骤七的时候,主机执行语句的时候报错:    
    无法启用数据库镜像,因为'NewDB'数据库在两个伙伴上都不处于完全恢复模式
    这个上文已经提到过,把数据库的恢复模式设为完整即可。
 
    8.2、依然是步骤七    
    1. 镜像数据库"pqsys_config"包含的事务日志数据不足,无法保留主体数据库的日志备份链。如果没有从主体数据库进行日志备份或者没有在镜像数据库上还原日志备份,则可能会出现这种情况。

    这个是步骤6.1中备份完数据库后,主机数据库要有了新的操作,这时候重新备份一下,再还原即可。一般是在主机中备份事务日志而不是完整。
    
 
    在备机上还原的时候也选择还原事务日志。
 
    注:如果备机的数据库的状态不是“正在还原”,还原的时候“事务日志”不可选,所以要保证备机的数据库的状态,一次不成功多试几次。这个错话最有可能遇到。
 
    8.3、在第七步的时候,如果主机和备机的执行顺序反了,也会报一个错,大意是镜像服务器为准备好之类的。
 
    PS:再次鄙视网络少无意义的复制转载。查找问题时搜索的帖子或blog,相当大一部分都是各种转来转去,代码的样式都丢了,排版惨不忍睹,而且错误不加验证,为转而转浪费大家时间。

SQL2005 镜像配置的更多相关文章

  1. 实战SQL Server 2005镜像配置全过程

    SQL Server 2005镜像配置基本概念 我理解的SQL Server 2005镜像配置实际上就是由三个服务器(也可以是同一服务器的三个 SQL 实例)组成的一个保证数据的环境,分别是:主服务器 ...

  2. Maven镜像配置

    镜像是为了提供更快的服务 如图:X就认为是Y的一个镜像. 编辑settings.xml配置中央仓库镜像: <settings> ... <mirrors> <mirror ...

  3. [转] Maven镜像配置

    参考:许晓斌的<Maven实战> 镜像是为了提供更快的服务 如图:X就认为是Y的一个镜像. 编辑settings.xml配置中央仓库镜像: <settings> ... < ...

  4. 阿里云Maven配置,Maven仓库配置,Maven镜像配置

    阿里云Maven配置,Maven仓库配置,Maven镜像配置 ======================== 蕃薯耀 2018年1月29日 http://www.cnblogs.com/fanshu ...

  5. SQLServer数据库镜像配置

    目录 一.目标...2 二.前提条件.限制和建议...2 三.设置概述...2 四.安装Sql Server 2008 enterprise X64.3 4.1.安装.NET3.5.3 4.2.安装时 ...

  6. 使用 ISO镜像配置 本地yum 源(RHEL, CentOS, Fedora等适用)

    使用 ISO镜像配置 本地yum 源(RHEL, CentOS, Fedora等适用)   1.上传ISO镜像和挂载 1) 上传Centos7.2 ISO镜像到 /usr/local/src目录 2) ...

  7. SQL SERVER镜像配置,无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法

    环境:非域环境 因为是自动故障转移,需要加入见证,事务安全模式是,强安全FULL模式 做到最后一步的时候,可能会遇到 执行( ALTER DATABASE [mirrortest] SET WITNE ...

  8. SQL SERVER镜像配置(包含见证服务器)

    镜像简介   重要说明:保持数据库镜像运行.如果您关闭数据库镜像,则必须执行完全备份并还原数据库以重建数据库镜像.   一. 简介 SQL SERVER 2005镜像基于日志同步,可良好实现故障转移. ...

  9. docker拉取oracle11g镜像配置

    开始拉取oracle11g镜像 下载过程稍长,镜像大小6.8G(之前拉取过了,所以就不截图了) #docker pull registry.cn-hangzhou.aliyuncs.com/helow ...

随机推荐

  1. AOP的自动代理

    Spring的aop机制提供两类方式实现类代理.一种是单个代理,一种是自动代理. 单个代理通过ProxyFactoryBean来实现(就如上面的配置). 自动代理:自动代理能够让切面定义来决定那个be ...

  2. 缩略图信息提取工具vinetto

    缩略图信息提取工具vinetto   在Windows操作系统中,为了方便用户快速浏览图片,系统会自动为每个图片生成预览图.预览图默认保存在同目录的Thumbs.db文件中.当图片文件删除后,Thum ...

  3. Codeforces 839E Mother of Dragons(极大团)

    [题目链接] http://codeforces.com/contest/839/problem/E [题目大意] 现在有一些点,现在你有k的液体,随意分配给这些点, 当两个点有边相连的时候,他们能产 ...

  4. hibernate之条件查询

    一.条件查询简介 条件查询是更据面向对象特色的数据查询方式,主要通过如下3个类完成 1.Criteria:代表一次查询 2.Criterion:代表一个查询条件 3.Restrictions:产生查询 ...

  5. 机器学习中的 precision、recall、accuracy、F1 Score

    1. 四个概念定义:TP.FP.TN.FN 先看四个概念定义: - TP,True Positive - FP,False Positive - TN,True Negative - FN,False ...

  6. VMware中网络设置之NAT

    当完成VMwareWorkStation安装之后,网络连接中会多出两个网络连接,分别是VMnet1和VMnet8,如下图所示: 整个机器的结构就可以抽象成:VMware虚拟机系统(虚拟网卡vmnet0 ...

  7. Android中的数据存储(二):文件存储 2017-05-25 08:16 35人阅读 评论(0) 收藏

    文件存储 这是本人(菜鸟)学习android数据存储时接触的有关文件存储的知识以及本人自己写的简单地demo,为初学者学习和使用文件存储提供一些帮助.. 如果有需要查看SharedPreference ...

  8. Delphi CompilerVersion Constant / Compiler Conditional Defines

    http://delphi.wikia.com/wiki/CompilerVersion_Constant The CompilerVersion constant identifies the in ...

  9. set bin 集合

    set: create table rr(zz char(4));create table test5 (rr set('美丽','态度好','温柔','善良'));insert into test5 ...

  10. 【java】弃用System.out.println(),迎接log

    展示性能差异: 1.System.out.println()输出 package com.sxd.swapping.test; import org.junit.Test; public class ...