SQL SERVER 2005数据库镜像

来源:互联网 发布:行业数据购买 编辑:程序博客网 时间:2024/05/11 09:34

数据库镜像是一种基于软件的高可用性解决方案,是基于数据库级别的快速的故障转移恢复.

    其中的角色有
主体服务器:承载主体数据库、接受用户连接和处理事务请求.
镜像服务器:承载镜像数据库、作为主体数据库的热备份、仅在故障转移后接受用户连接和处理事务请求.
见证服务器:监视服务器状态和连接、实现自动故障转移.
主体服务器和镜像服务器的角色不是固定不变的是互为伙伴的(主体和镜像是可以相互转换的)当故障转移后服务器角色发生转变.每个伙伴(主体服务器,镜像服务器,见证服务器)都维护数据库镜像的状态信息,他们之间是通过ping交换消息,相互监视.数据库镜像中的ping不仅验证网络之间的连接,还包括实例运行的操作系统运行情况,数据库实例的当前运行状况以及数据库的运行情况.
  镜像会话的周期
1.创建会话的过程(会话初始化)
当镜像创建后,镜像数据库会向主体数据库请求事务日志记录,与主体数据库同步实现数据的一致性的过程.
2.会话过程
会话初始化完成(主体数据库和镜像数据库一致)会话过程开始,在这个过程中主体服务器为用户提供服务,用户对数据库的操作发送到主体数据库,如果发生了更新主体服务器会把事务日志传送给镜像数据库,镜像数据库把传送来的日志应用到镜像数据库中,在这个过程中各个角色相互监视会话状况.
3.会话终止
发生故障转移或 数据库镜像工作原理
当数据库镜像创建完成后,主体数据库为用户提供服务,镜像数据库是不可用的.当用户对主体数据库进行更新时,把更新事务写到日志中同时把更新操作传给镜像服务器此时主体服务器等待镜像服务器的确认,镜像服务器把操作应用到数据库中并给主体服务器发送确认同时对数据库实行Redo,主体服务器收到确认向用户发送成功信息.
   快速恢复机制
数据库重启或还原需经过三个阶段.分析阶段,数据库服务器对当前的状态和日志文件中的信息进行分析,Redo阶段:数据库服务器对日志文件中已经提交的事务应用到数据库文件中去.Undo阶段:对数据库中未提交的事务进行回滚.在 SQl 2000中数据库必须等还原过程全部完成后才能使用,SQL 2005数据库在完成Redo后就可使用.
   数据库镜像有三种操作模式
1.高可用性事务安全(FULL)传输机制(同步)是否需要仲裁(是)见证服务器(Y)故障转移类型(自动或手动)主要应用于要求高可用性服务,实现自动故障转移,确保数据的完整性.主体和镜像服务器同步传输,主体在发送日志后等待镜像的确认,主体和镜像的日志完全一致.如果主体数据库不可用将发生自动故障转移.
2.高级别保护事务安全(FULL)传输机制(同步)是否需要仲裁(是)见证服务器(N)故障转移类型(手动)应用于高的数据完整性,不要求自动故障转移.主体和镜像服务器同步传输,主体在发送日志后等待镜像的确认,主体和镜像的日志完全一致.管理员终止数据库镜像.
3.高性能事务安全(OFF)传输机制(异步)是否需要仲裁(N)见证服务器(N/A)故障转移类型(强制)应用于主体数据库和镜像数据库离的远通信线路有明显的延时,对性能的要求高于数据的完整性.主体在发送日志后不等待镜像确认继续处理后续的操作,主体失败时在镜像上有可能丢失一些数据.
    仲裁只适用于设置了见证服务器的会话(高可用性)必须连接两个或两个以上的服务器实例时数据库才可用.主要目地是确保在任何时间只有一个伙伴为数据库提供服务,仲裁的改变将会导致故障转移.当所有的服务器都在线仲裁形成,当镜像服务器故障时主体和见证形成仲裁,见证服务器故障时主体和镜像形成仲裁,主体故障时见证和镜像形成仲裁,有两个故障就失去仲裁数据库不可用.

配置数据库镜像有以下步骤:

一.准备镜像数据数

1.在主体服务器(A)上对镜像数据库(Northwind)进行全完备份

Backup database Northwind  to disk='d:/Northwind.bak'

2.在镜像服务器(B)上使用NORECOVERY参数恢复A上的Northwind备份

Restore database Northwind from disk ='d:/Northwind.bak' with NORECOVERY

二.创建数据库镜像端点

1,在A上创建数据库镜像端点(DBMirroring),用于伙伴通信,并启用.

Create Endpoint DBMirroring as tcp (listener_port=5022) for database_Mirroring (role=partner,Encryption=Supproted)

Go

Alter Endpoint DBmirroring state=started

2.在镜像服务器(B)上创建数据库镜像端点(DBMirroring),用于伙伴通信,并启用.

Create Endpoint DBMirroring as tcp (listener_port=5022) for database_Mirroring (role=partner,Encryption=Supproted)

Go

Alter Endpoint DBmirroring state=started

3,在见证服务器(C)上创建数据库镜像端点(DBMirroring),用于见证通信,并启用.

Create Endpoint DBMirroring as tcp (listener_port=5022) for database_Mirroring (role=witness,Encryption=Supproted)

Go

Alter Endpoint DBmirroring state=started

4.检查端点配置

Select * from sys.database_Mirroring_Endpoints

三.配置数据库镜像的安全性(当前所有服务器使用相同的服务账号:SQLserver)

1,在A上授予SQLserver对DBMirroring的连接权限

Use master

Grant connect  on Endpoint ::'DBMirorring' to SQLserver 

2,在B上授予SQLserver对DBMirroring的连接权限

Use master

Grant connect  on Endpoint ::'DBMirorring' to SQLserver 

3,在B上授予SQLserver对DBMirroring的连接权限

Use master

Grant connect  on Endpoint ::'DBMirorring' to SQLserver 

四.启动数据库镜像(要注意顺序)

1.在镜像服务器B上指定伙伴端点

Alter database Northwind set partner=N 'TCP://A:5022'

2.在主体服务器A上指定伙伴端点

Alter database northwind set partner = N 'TCP://B:5022'

3.在主体服务器A上指定见证端点

Alter database Northwind set witness= N 'TCP://C:5022'

4.在主体服务器A上配置数据库镜像事务安全级别

Alter database Northwind set Safety FULL

注意事项:

主全数据库必须是完全还原模型.

镜像数据库的初始过程,必须由主体数据库的备份进行还原,且必须使用NoRECOVERY选项

镜像数据库的数据库名称必须和主体数据库的数据库名相同

镜像数据库在会话过程中是不可用的

SQl 2005 SP1之前的需要使用-t 1400跟踪标志启动服务

在无故障的情况下手动切换角色:在主体服务器上手动执行
alter database <数据库名>set partner failover

在高性能模型下,在镜像服务器上强启用服务
alter database <数据库名> set partner force_sevices_allow_data_loss


原创粉丝点击