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

系统环境: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. 理解裸机部署过程ironic

    部署物理机跟部署虚拟机的概念在nova来看是一样,都是nova通过创建虚拟机的方式来触发,只是底层nova-scheduler和nova-compute的驱动不一样.虚拟机的底层驱动采用的libvir ...

  2. go语言学习框架

    根据框架学习 https://books.studygolang.com/gopl-zh/ 看电子书 http://shinley.com/index.html

  3. POJ poj 2155 Matrix

    题目链接[http://poj.org/problem?id=2155] /* poj 2155 Matrix 题意:矩阵加减,单点求和 二维线段树,矩阵加减,单点求和. */ using names ...

  4. 【BZOJ 2916】 2916: [Poi1997]Monochromatic Triangles (容斥)

    2916: [Poi1997]Monochromatic Triangles Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 310  Solved: 1 ...

  5. Java并发(十一):Condition条件

    先做总结: 1.为什么使用Condition条件? synchronized配合Object的wait().notify()系列方法可以实现等待/通知模式. Lock提供了条件Condition,对线 ...

  6. PHP -- 8个必备的PHP功能开发

    原文出处:http://www.codeceo.com/8-php-functions.html 做过PHP开发的程序员应该清楚,PHP中有很多内置的功能,掌握了它们,可以帮助你在做PHP开发时更加得 ...

  7. 基于CDH,部署Apache Kylin读写分离

    一. 部署读写分离的契机 目前公司整体项目稳定运行在CDH5.6版本上,与其搭配的Hbase1.0.0无法正确运行Kylin,原因是Kylin只满足Hbase1.1.x+版本.解决方案如下 1. 升级 ...

  8. HTML导出Excel数据类型转换样式参考

    mso-number-format:"0" NO Decimals mso-number-format:"0/.000" 3 Decimals mso-numb ...

  9. HTML5 元素拖动 - 实现元素左右拖动, 或更改自身排序

    1.拖放(Drag 和 drop)是 HTML5 标准的组成部分. 拖放是一种常见的特性,即抓取对象以后拖到另一个位置.在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 浏览器支持:Int ...

  10. gridview 空数据绑定

    private void getDataBind() { DataTable dt = new DataTable(); dt.Columns.Add("id"); dt.Colu ...