我们对几个概念简单的介绍一下:
事务安全性:
FULL
主体和镜像数据库同步传输的模式,
主体在发送日志后等待镜像的确认
主体和镜像的日志完全一致
OFF
主体和发送日志后不等待镜像的确认,继续处理后继的操作。
主体失败时在镜像上可能丢失部分数据
仲裁:在高可用性或是高级别保护模式下需要仲裁。以决定那一个服务器是主体服务器,
仲裁的改变将导致故障转移,如主体服务器发生故障了,则会发生仲裁的改变,将镜像服务器定为主体服务器。
形成仲裁的形式一般有这么几种:
下面我们就来看一下如何配置数据库镜像:
这应该是大家感觉很兴奋的,因为听我西里哗拉的讲了半天。终于不用再受罪了。其实配置很简单的,只要注意几个步骤就行了。
准备镜像数据库
在镜像服务器上准备镜像数据库
创建数据库镜像端点
在各个服务器上配置镜像端点
配置安全性
启动数据库镜像
下面我们就具体看一下如何去做,有哪些需要注意:
这里需要提到的一点的就是在
SQL SERVER2005
刚刚发布出来的时候数据库镜像这个服务默认是关闭的,也是不支持的。在刚刚发布
SQL SERVER2005
正式版本的时候,认为数据库镜像这个技术还不成熟,有待完善。所以如果你使用的是正式版本则无法使用这个技术。
那么需要下载
SP1
或是以上的补丁。
・
版本号
|
sql server 2005
版本
|
9.00.1399
|
sql server 2005
(初始版本)
|
9.00.2047
|
sql server 2005 SP1
|
9.00.3042
|
sql server 2005 SP2
|
我们这里直接打
SP2
补丁:略
准备数据库:
条件
很重要:
主体数据库必须是完全恢复模式
创建镜像数据库
在主体数据库上做一个完全备份,在镜像服务器上使用
NORECOVER
选项恢复主体数据库。
继续恢复后续日志备份(
NORECOVER
)
NORECOVER
很重要
配置数据库镜像端点
(
ENDPOINT
)
数据库镜像端点实现镜像会话的通讯,也就是各个服务器的入口点,有点类似于端口号。但不是。也就是说你创建了这个端点之后,各个服务器之间就可以使用
TCP
协议进行实例间的通讯。每个镜像端点上都在一个唯一的
TCP
端口号上侦听,一般大家都使用
5022
号端口。
创建数据库镜像端点:
需要在每个实例上创建
只有管理员组的成员才能权限。
设置端点角色
即有的是伙伴端点,有的是见证端点,所以必须要指定。
激活端点
默认是不能使用的,所以要激活。
下面我们看一下使用
T-SQL
语句创建端点
CREATE ENDPOINT DBMIRRORING
AS TCP
(
LISTENER_PORT=5022
)当然也可以使用其他端口,只要没有被使用
FOR DATABASE_MIRRORING(ROLE=PARTNER,ENCRYPTION=SUPPORTED) GO
--
创建的是一个数据库镜像端点,角色是伙伴,通讯过程是通过加密的。
ALTER ENDPOINT DBMIRRORING STATE=STARTED GO --
激活
此时这个端点就开始侦听了。
创建见证服务器的端点:创建的时候激活端点。
CREATE ENDPOINT DBMIRRORING
STATE=STARTED AS TCP
(
LISTENER_PORT=5022
)
For DATABASE_MIRRORING (ROLE=WITNESS,ENCRYPTION=SUPPORTED)
配置安全性:
数据库镜像中的实例之间必须可信
都使用
WINDOWS
身份验证或是基于证书的身份验证(非信任域),为了简单为例,我们使用
WINDOWS
身份验证。
赋予服务帐户对端点的连接权限。
在这里我们都使用相同的用户名口令
下面我们创建完端点后就要启动数据库镜像,注意顺序很重要
指定镜像数据库的伙伴
在镜像服务器上操作
指定主体数据库伙伴
在主体服务器上操作
指定见证服务器
在见证服务器上操作
指定事务安全选项
FULL
还是
OFF
对应语句分别是:
ALTER DATABASE NOTHWIND SET PARTNER=N’TCP
:
/SERVER1H: 5022’
�C-
在
SERVER2
(镜像)上执行
ALTER DATABASE NOTHWIND SET PARTNER=N’TCP:/SERVER2: 5022’
--
在
SERVER1
(主体)上执行
ALTER DATABASE NOTHWIND SET WITNESS=N’TCP:/SERVER3: 5022’
--
在
SERVER1
(主体)上执行
ALTER DATABASE NOTHWIND SET SAFETY FULL;
--
在
SERVER1
(主体)上执行
高可用性
当然也可以使用
SMSS
那么完成之后怎么来查看数据库镜像是否完成,可以通过以下两种方法:
SMSS
数据库属性
---
镜像状态
T-SQL
SELECT * FROM SYS.DATABASE
――
MIRRORING
SELECT * FROM SYS.DATABASE
――
MIRRORING
――
WITNESS
下面我们具体看一下配置高可用性数据库镜像
我们使用
T-SQL
可以很明显的看到配置的过程。
下面我来介绍一下我们所使用的环境:
SERVER1
为主体服务器
SERVER2
为镜像服务器
SERVER3
为见证服务器
首先我们要
准备数据库
:一个是备份主体数据库,一个是在镜像服务器上恢复。
所以
在
SERVE1
上:
BACKUP DATABASE NORTHWIND TO DISK=’C:\NW.BAK’
在
SERVER2
上:
RESTORE DATABASE NORTHWIND FROM DISK=’C:\NW.BAK’ WITH NORECOVERY
创建数据库端点:
1.
在
SERVER1
上创建数据库镜像端点,用于伙伴通讯
Create endpoint dbmirrep as tcp (listener_port=5022)
For database_mirroring (role=partner,encryption=supported );
Alter endpoint dbmirrep state=started
通过图形界面可以查看到
2.
在
SERVER2
上创建数据库端点,也是用于伙伴通讯
Create endpoint dbmirrep as tcp (listener_port=5022)
For database_mirroring (role=partner,encryption=supported)
Alter endpoint dbmirrep state=started
3.
在
SERVER3
上创建镜像端点,用于见证通讯
CREATE ENDPOINT DBMIRREP AS TCP
(
LISTENER_PORT=5022
)
FOR DATABASE_MIRRORING (role=witness,encryption=supported)
ALTER ENDPOINT DBMIRREP STATE =STARTED
4.
检查端点配置
SELECT * FROM SYS.DATABASE_MIRRORING_ENDPOINTS
也可以通过图形界面查看
配置数据库镜像安全性:也就是指定哪些用户可以使用这个端点。肯定是管理员,一般用户不让他访问。