sql2008R2sp1局域网镜像环境实操(无见证服务器)

环境介绍:

 

我的电脑:sql2008r2sp1_32 129.186.110.37 OS win2003 SP2 Enterprise     做主体服务器, 暂叫ServerA

服务器:    sql2008R2sp1_64bit 129.186.110.95 OS win2008R2 Enterprise  做镜像服务器, 暂叫ServerB

 

实验目的:镜像环境的搭建以及保证镜像服务器最终可用

 

一、数据库镜像操作

1.  在ServerA和ServerB中创建同名数据库bookdb,若要对此数据库进行镜像,要将其改成“完整恢复模式”,在ServerA的bookdb上面执行下面的SQL语句:

       use master

alter database bookdb set recovery full

 

注:默认就是完整恢复模式

2.  创建证书(主备都创建)

(1)主机执行:

use master

create master key encryption by password=‘1234‘

create certificate host_a_cert with subject ‘host_a certificate‘,start_date ‘2013-1-2‘

(2)备机执行:

use master

create master key encryption by password ‘1234‘

create certificate host_b_cert with subject ‘host_b certificate‘,start_date ‘2012-1-2‘

 

注:如果要删除创建的master key 先要删除证书;

             DROP CERTIFICATE host_a_cert 

             drop master key

3.  创建终结点(主备都创建)

(1) 主机执行:

create endpoint Endpoint_Mirroring

state started

as

tcp(listener_port=5022,listener_ip=all)

for

database_mirroring(authentication certificate host_a_certencryption required ALGORITHM AESrole=all);

(2)备机执行:

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);

 

4.  备份证书到文件,并互换证书

(1)主机执行

backup certificate host_a_cert to file=‘d:\host_a_cert.cer‘

(2)备机执行

backup certificate host_b_cert to file=‘d:\host_b_cert.cer‘

将备份好证书文件互相复制一份到对方相应位置

 

5.  在同步login

(1)主机执行:

create login host_b_login with password=‘1234‘

create user host_b_user for login host_b_login

create certificate host_b_cert authorization host_b_user from file=‘d:\host_b_cert.cer‘

grant connect on endpoint::Endpoint_Mirroring to [host_b_login]

(2)备机执行:

create login host_a_login with password=‘1234‘

create user host_a_user for login host_a_login

create certificate host_a_cert authorization host_a_user from file=‘d:\host_a_cert.cer‘

grant connect on endpoint::Endpoint_Mirroring to [host_a_login]

 

6.  上面都是对实例进行操作,下面开始对要进行镜像的数据库进行操作了,一开始我就创建了数据库bookdb,并将其设置成了“完整恢复模式”;

    默认好像就是完整恢复模式的。

7.  将ServerA数据库进行数据库完整备份和日志备份,然后在镜像机上进行分别还原,

    注意,一定要先完整备份,再事务日志备份。由于长时间不恢复数据库,他妈的连事务日志备份的扩展名都忘了。

    如果仅仅在镜像服务器上恢复完整备份,是不行的。这会你在执行第8步的时候报错。提示你"没有为数据库镜像配置数据库 "bookdb"",会有误导。实际上是缺事务日志恢复这步。另外多说一句

    在恢复的时候,完整的选项要选上“覆盖”,和下面的“不回滚”,完成这步后,相关数据库会显示“正在恢复”状态,

    事务日志恢复也要选上“不回滚”

    附加一句,如果某个数据库显示正在恢复状态,想停止这种状态,可输入:

   RESTORE database  dbname with recovery 

8.  建立镜像关系,设置伙伴

主机执行:alter database bookdb set partner=‘TCP://129.186.110.95:5022‘

镜像执行:alter database bookdb set partner=‘TCP://129.186.110.37:5022‘

9.  如果在执行上面两句没有出错的话,那么主体数据库服务器与镜像数据库服务器就成功建立了镜像关系

     主服务器:

     技术分享                

三.使用镜像数据库

如果主体数据库服务器宕机了,那么数据还保存在镜像数据库里面,那么怎么用呢,在镜像数据库中执行下面两句话(注意顺序)

 

1.  alter database bookdb set partner off

          alter database bookd set partner force_service_allow_data_loss

2.  应用程序方面自己改一下配置参数。

 

注意:如果镜像服务器正在使用,相关的数据库无删除,需要关闭alter database bookdb set partner off,上述这段是原引原作者的,我没有实验成功,所以改为手动转换,还因为没有见证服务器。

 

目前还没有程序测试是否可以使用,所以这篇文章还不完整,待续。。。。。。。

四、手动验证一下

           技术分享

 

点击“是”

此时,原主体服务器状态如下:

           技术分享

刚才的步骤再次切换后,状态又恢复到最初的主镜像状态。

 

注:有一天突然发现主体和镜像存在连接问题,后经查找,发现在关闭了windows防火墙后,连接正常。

 

 

如果有一天要删除镜像,可按如下操作:

             select * from sys.endpoints

            

drop endpoint Endpoint_Mirroring

            drop login host_a_login 

             drop user host_a_user

                drop certificate host_a_cert

               drop certificate host_b_cert

drop master key

 

故障转移,也可以把主机的网络断开,在镜像服务器上执行t-sql语句: 

Use master 

alter database <DatabaseName> set partner force_service_allow_data_loss 

Go” 

把镜像服务器启用,状态为“主机,断开”,为应用系统服务。 

 

 

当主机服务器正常后,在镜像服务器上执行transact-sql语句: 

USE master; 

ALTER DATABASE <DatabaseName> SET PARTNER RESUME;

 --恢复镜像 

ALTER DATABASE <DatabaseName> SET PARTNER FAILOVER; 

--切换主备” 恢复正常镜像。 另外还可以使用: 

ALTER DATABASE <DatabaseName> SET PARTNER SUSPEND ALTER DATABASE <DatabaseName> SET PARTNER RESUME” 

暂停镜像和启用镜像,以便于维护。 

使用“ALTER DATABASE <database_name> SET PARTNER OFF”,删除镜像

 

 注意事项 

(一)镜像相关服务器上的SQL SERVER 版本必须一致。 

(二)在实施镜像之前,一定要将主数据库完整备份到镜像数据库,这里一定要备份两次,一次数据库备份和一次事务日志备份。 

(三)数据帐号的孤立帐号处理,具体参见配置镜像数据库。 

(四)如果不是在域帐户间实施镜像,则一定需要为服务器制作证书,证书一定要指定过期时间,如果没有指定,默认的过期时间是开始时间开始计算,一年的有效期。 

(五)推荐使用64位版本的SQL Server 2008,64位的服务器可以提升服务器的性能和利用率,在32位的系统中,每个服务器实例,数据库最多支持10个数据库。 

(六)系统数据库,如master,msdb等无法实施镜像。 

(七)一旦建立镜像,镜像数据库就只作为主数据库的冗余备份使用。

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。