设为首页 加入收藏

TOP

SQL Server 2005 镜像构建手册(一)
2014-11-24 01:44:41 来源: 作者: 【 】 浏览:14
Tags:SQL Server 2005 构建 手册

一、 镜像简介

1、 简介

数据库镜像是将数据库事务处理从一个SQL Server数据库移动到不同SQL Server环境中的另一个SQL Server数据库中。镜像不能直接访问;它只用在错误恢复的情况下才可以被访问。

要进行数据库镜像所需的最小需求包括了两个不同的SQL Server运行环境。主服务器被称为“主机”,第二个服务器被称作“备机”。主机数据库就是你实际用着的数据库,镜像数据库就是你的数据库的备用拷贝。当事务写入你的基本服务器的时候,他们也同样被传送到并写入你的镜像数据库中。

除了基本和镜像之外,你还可以引入另一个可选的组件,名为“见证”。见证服务器是第三个SQL Server 2005运行实例,它是在判断什么时候进行错误恢复的时候,用于基本和镜像之间内部交流。只有当你想实现自动错误恢复的时候用到这个选项。它实现了2比1投票的能力,当我的一个组件不可达,并因此需要进行错误恢复的时候。见证服务器只有在你想实现自动错误恢复的时候才需要用到。

2、 优点

下表是SQL Server可用性官方解决方案的一个对照表,现时我中心使用的恢复模式是“冷备份”中的“备份/恢复”,通常来说“热备份”比“冷备份”的可用性更高,恢复更快,更适合我中心现时的实际情况。如果不从成本考虑的话,“热备份”中的“故障转移群集”的可用性是最高的,但是故障转移群集需要借助磁盘阵列而且建设本身复杂性较高。数据库镜像的建立并没有太多的硬件要求,最起码没有像“故障转移群集”需要共享存储这么高的要求。

2、 缺点

(1)由于SQL Server是一个实例多个数据库的产品,数据库镜像技术是基于数据库级别的,因此每次主数据库新增数据库都必须为备机增加数据库并且为新增的数据库建立镜像关系。

(2)数据库的登录名和用户是存储在master数据库,master数据库是不能做镜像的,所以每次操作数据库的登录名和用户也是需要多维护一份,

(3)数据库作业不能得到相应的维护。

(4)微软号称镜像可以让客户端对故障透明,但是实际测试中发现只有满足特定的条件才能实现透明化,而且透明化得客户端支持才可行(.net Framework 2.0以上,Microsoft jdbc驱动1.1以上)。

(5)跨数据库事务和分布式事务均不支持数据库镜像。

纵观其他几种方式,仅有“热备份”的“故障转移群集”没有这些问题。

一、配置主备机

1、 物理连接

将主备数据库按照如图所示连接:

2、 检查SQL Server 2005数据库

只有SQL Server 2005 标准版、企业版和开发版才可以建立数据镜像。其他版本即Express只能作为见证服务器。如果实在不清楚什么版本,执行如下语句查看:

1 select @@version;

若要对此数据库进行数据库镜像,必须将它更改为使用完整恢复模式。若要用Transact-SQL 实现此目的,请使用ALTER DATABASE 语句:

1 USE master;

2 ALTER DATABASE

3 SET RECOVERY FULL;

4

二、主备实例互通

实现互通可以使用域或证书来实现,考虑实现的简单,以下选取证书的方式实现。注意:实现“主备数据库实例互通”的操作只需要做一次,例如为了将两个SQL Server 2005的实例中的5个数据库建成镜像关系,则只需要做一次以下操作就可以了;或者这样理解:每一对主备实例(不是数据库)做一次互通。

1、创建证书(主备可并行执行)

--主机执行:

1 USE master;

2 CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'killkill';

3 CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate' ,

4 START_DATE = '01/01/2008';

5

--备机执行:

1 USE master;

2 CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'killkill';

3 CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate',

4 START_DATE = '01/01/2008';

5

2、创建连接的端点(主备可并行执行)

--主机执行:

1 CREATE ENDPOINT Endpoint_Mirroring

2 STATE = STARTED

3 AS

4 TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL )

5 FOR

6 DATABASE_MIRRORING

7 ( AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );

8

--备机执行:

1 CREATE ENDPOINT Endpoint_Mirroring

2 STATE = STARTED

3 AS

4 TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL )

5 FOR

6 DATABASE_MIRRORING

7 ( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );

8

3、备份证书以备建立互联(主备可并行执行)

--主机执行:

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

4、互换证书

将备份到D:\SQLBackup\的证书进行互换,即HOST_A_cert.cer复制到备机的D:\SQLBackup\。HOST_B_cert.cer复制到主机的D:\SQLBackup\

5、添加登陆名、用户(主备可并行执行)

以下操作只能通过命令行运行,通过图形界面无法完成。(截至文档编写结束,SQL Server2005的不定号为SP2)

--主机执行:

1 CREATE LOGIN HOST_B_login WITH PASSWORD = 'killkill';

2 CREATE USER HOST_B_user FOR LOGIN HOST_B_login;

3 CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'D:\SQLBackup\HOST_B_cert.cer';

4 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];

5

--备机执行:

1 CREATE LOGIN HOST_A_login WITH PASSWORD = 'killkill';

2 CREATE USER HOST_A_user FOR LOGIN HOST_A_login;

3 CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'D:\SQLBackup\HOST

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇在SQL Server 2005中创建数据库镜.. 下一篇 SQL Server 2008 R2数据库镜像部..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: