SQLServer2005数据库镜像搭建全过程

    SQLServer2005数据库镜像搭建走了很多弯路,很多时候卡在一个错误上几天,从打算做到最后成功完成,用了差不多一个月,如下是整理的全过程,还有一些错误解决可能没有记录上,如下记录在另外几台机子上都成功搭建完成。肯定能成功的,就是需要耐心,有错误一个一个地解决。 

   如下是操作步骤:

一、环境准备(主机和镜像机都一样)

(1)创建相同用户名和密码的windows用户并给予管理员权限,即两台机子操作系统的登录名和密码相同(不能为空)。然后进入新创建的用户系统。

(2)使用SQL数据库版本相同
 (3)相同的电脑的DNS尾码,右键点击【计算机】选择属性,选择计算机名称

     点击【其他】按钮,将DNS尾码设置成相同的值,如it.com,电脑名称若为

     primary,则完整的电脑名称就为primary.it.com,将镜像serverDNS尾码设

     置成相同值,需要重启计算机


4)在C:\WINDOWS\system32\drivers\etc路径内hosts文件的最后添加IP和完整主机和镜像机的电脑名称

 (5) 开始——Microsoft SQL Server 2005——配置管理工具——SQL Server配置管理器,点击左边的SQL Server2005网络配置——MSSQLSERVER的协议,启用右边的NamePigesTCP/IP选项;

     开始——Microsoft SQL Server 2005——配置管理工具——SQL Server外围应用配置器——服务和连接的外围配置器——MSSQLSERVER——Database Engine——远程服务,点击右边的“本地连接和远程连接”,选“同时使用TCP/IPNamePiges

6)开始——Microsoft SQL Server 2005——配置管理工具——SQL Server配置管理器,点击左边的SQL Server2005服务,右击右边的SQL ServerMSSQLSERVER)重新启动

7)登陆数据库,服务器名称填写IP,身份认证选Windows身份认证,点开“安全性”,右击登录名­——新建登录名——常规——搜索——高级——立即查找,找到新创建的用户名——确定,选服务器角色(左上角)——sysadmin选项勾上

     ——确定

二、备份操作

   1在主机上:恢复模式为FULL(右击要镜像的数据库,属性),将需进行数据库镜像的数据库进行两次备份,目标数据库填写数据库名称,备份类型分别为“完整”和“事务日志”。

     2在镜像机上:将备份好的bak文件在镜像机上进行还原,目标数据库填写数据库名称,点开“选项”(左上角),把“覆盖现有数据库”和“不对数据库进行任何操作。。。。其他事务日志(A)”勾上。(还原成功的数据库显示正在还原...

3在主机上:逐条执行以下语句(第个go为一个语句):其中在主机和镜像机上生成证书后要把证书文件相互复制过去

Use master

Createmasterkey encryption by password='********';--创建数据库主密

Go

 

 Createcertificate host_A_certwithsubject ='host_A_certificate',

 start_date='05/05/2015',expiry_date='12/12/2027';--创建主服务器SQL证书‘host_A_cert’,过期时间‘’,默认年

go

 

  Createendpoint Endpoint_Mirroring

 state=startedasTCP(listener_port=5022,Listener_IP=all)

 for Database_Mirroring(AUTHENTICATION=CERTIFICATE host_A_cert,

 ENCRYPTION=REQUIRED ALGORITHMAES,ROLE=PARTNER);--创建依附与证书的镜像端点'Endpoint_Mirroring',默认端口

 go 

 

  BACKUPCERTIFICATE host_A_certTOFILE='D:\host_A.cer'--将证书备份到D

Go

将备份好的证书复制一份到镜像机的D盘目录下

    4在镜像机上:逐条执行以下语句:

Use master Create masterkeyencryption by password='********';--创建数据库主密钥

Go

 

 Createcertificate host_B_certwithsubject ='host_B_certificate',

 start_date='05/05/2015',expiry_date='12/12/2017';--创建主服务器SQL证书‘host_A_cert’,过期时间‘’,默认年

 go

 

  Createendpoint Endpoint_Mirroring

 state=startedasTCP(listener_port=5022,Listener_IP=all)

 for Database_Mirroring(AUTHENTICATION=CERTIFICATE host_B_cert,

 ENCRYPTION=REQUIRED ALGORITHMAES,ROLE=PARTNER);--创建依附与证书的镜像端点'Endpoint_Mirroring',默认端口

  go

 

   BACKUPCERTIFICATE host_B_certTOFILE='D:\host_B.cer'--将证书备份到D

Go

将备份好的证书复制一份到主机的D盘目录下

     5在主机上:逐条执行以下语句:

Createlogin host_B_loginwithpassword='********'--为备机创建一个登录帐号‘host_B_login’

go

 

createuser host_B_userforloginhost_B_login;--为帐号‘host_B_login’创建登录名

go

 

Createcertificate host_B_cert

authorization host_B_user

from file='D:\host_B.cer'--将账户与证书关联起来

go

 

grant connectonendpoint::Endpoint_Mirroringto[host_B_login];--添加Connect权限

go

 

Createlogin host_A_loginwithpassword='********'

go

 

createuser host_A_userforCertificatehost_A_cert;

go

 

grant connectonendpoint::Endpoint_Mirroringto [host_A_login];

go

    6在镜像机上:逐条执行以下语句:

createlogin host_A_loginwithpassword='********'--为备机创建一个登录帐号‘host_A_login’

go

 

createuser host_A_userforloginhost_A_login;--为帐号‘host_B_login’创建登录名

go

 

Createcertificate host_A_cert

authorization host_A_user

from file='D:\host_A.cer'--将账户与证书关联起来

go

 

grant connectonendpoint::Endpoint_Mirroringto[host_A_login];--添加Connect权限

go

 

Createlogin host_B_loginwithpassword='********'

go

 

createuser host_B_userforCertificate host_B_cert;

go

 

grant connectonendpoint::Endpoint_Mirroringto [host_B_login];

go

    

(7) 在主机上: 右击要镜像的数据库——任务——镜像——配置安全性——下一步——否(有见证服务器就选是)——下一步——下一步——选镜像机IP(Windows身份认证)——下一步——完成——开始镜像
 (8) 成功后如下图所示:


三、测试镜像

--取消正在还原的状态 事务是否回滚

RESTOREDATABASE  数据库名称 WITH RECOVERY

RESTOREDATABASE  数据库名称  WITHNORECOVERY

--正在恢复 用如下语句运行后变为正在还原

alter database镜像的数据库set partner OFF

1.主体与镜像转换

--主机

use master;

alter database 数据库名称 set partner failover;

执行成功后原主体数据库会显示正在还原,备机数据库显示主体正在同步字样 

2. 测试主备切换

主机崩溃,强制备机当主机,原主机恢复后再切换回去

主机A

备机B

此时,在B机上执行

use master;

alter database  数据库名称 set partner FORCE_SERVICE_ALLOW_DATA_LOSS; --强制接收

停止主机A的SQL SERVER 服务(比如断电),此时备机上的数据库会显示正在恢复状态,大概持续几十秒,最后变成

dataName(主体,已断开链接),即现在的镜像B可以用来充当主机了

假如现在有业务往数据库里插也是能成功的

现在把原主机A恢复(通电),然后在B机里操作

use master;

alter database 数据库名称 set partner resume;

此时A机是作为镜像的,B机是作为主机的,要再切换一下,则再在B上执行

alter database 数据库名称 set partner failover;


猜你喜欢

转载自blog.csdn.net/Michael__mai/article/details/50659160