《SQLServer镜像备》由会员分享,可在线阅读,更多相关《SQLServer镜像备(12页珍藏版)》请在金锄头文库上搜索。
1、SQL Server 2005 镜像构建手册镜像构建手册ALTER DATABASE csk2 SET PARTNER = TCP:/192.168.2.21:5022;( 建立伙伴关系语句,其中建立伙伴关系语句,其中)镜像简介 1、 简介数据库镜像是将数据库事务处理从一个 SQL Server 数据库移动到不同 SQL Server 环境中的另一个 SQL Server 数据库中。镜像不能直接访问;它只用在错误恢复的情况下才可以被访问。要进行数据库镜像所需的最小需求包括了两个不同的 SQL Server 运行环境。主服务器被称为“主机”,第二个服务器被称作“备机”。主机数据库就是你实际用着的
2、数据库,镜像数据库就是你的数据库的备用拷贝。当事务写入你的基本服务器的时候,他们也同样被传送到并写入你的镜像数据库中。除了基本和镜像之外,你还可以引入另一个可选的组件,名为“见证”。见证服务器是第三个 SQL Server 2005 运行实例,它是在判断什么时候进行错误恢复的时候,用于基本和镜像之间内部交流。只有当你想实现自动错误恢复的时候用到这个选项。它实现了 2 比1 投票的能力,当我的一个组件不可达,并因此需要进行错误恢复的时候。见证服务器只有在你想实现自动错误恢复的时候才需要用到。2、 优点:下表是 SQL Server 可用性官方解决方案的一个对照表,现时我中心使用的恢复模式是“冷备
3、份”中的“备份/恢复”,通常来说“热备份”比“冷备份”的可用性更高,恢复更快,更适合我中心现时的实际情况。如果不从成本考虑的话,“热备份”中的“故障转移群集”的可用性是最高的,但是故障转移群集需要借助磁盘阵列而且建设本身复杂性较高。数据库镜像的建立并没有太多的硬件要求,最起码没有像“故障转移群集”需要共享存储这么高的要求。3、 缺点:(1)由于 SQL Server 是一个实例多个数据库的产品,数据库镜像技术是基于数据库级别的,因此每次主数据库新增数据库都必须为备机增加数据库并且为新增的数据库建立镜像关系。(2)数据库的登录名和用户是存储在 master 数据库,master 数据库是不能做镜
4、像的,所以每次操作数据库的登录名和用户也是需要多维护一份,(3)数据库作业不能得到相应的维护。(4)微软号称镜像可以让客户端对故障透明,但是实际测试中发现只有满足特定的条件才能实现透明化,而且透明化得客户端支持才可行(.net Framework 2.0 以上,Microsoft jdbc 驱动 1.1 以上)。(5)跨数据库事务和分布式事务均不支持数据库镜像。纵观其他几种方式,仅有“热备份”的“故障转移群集”没有这些问题。一、配置主备机1、 物理连接将主备数据库按照如图所示连接:2、 检查 SQL Server 2005 数据库只有 SQL Server 2005 标准版、企业版和开发版才可
5、以建立数据镜像。其他版本即 Express 只能作为见证服务器。如果实在不清楚什么版本,执行如下语句查看:1select version;若要对此数据库进行数据库镜像,必须将它更改为使用完整恢复模式。若要用 Transact-SQL 实现此目的,请使用 alter DATABASE 语句:1 USE master;2 alter DATABASE3 SET RECOVERY FULL; 二、主备实例互通实现互通可以使用域或证书来实现,考虑实现的简单,以下选取证书的方式实现。注意:实现“主备数据库实例互通”的操作只需要做一次,例如为了将两个 SQL Server 2005 的实例中的 5 个数据
6、库建成镜像关系,则只需要做一次以下操作就可以了;或者这样理解:每一对主备实例(不是数据库)做一次互通。1、创建证书(主备可并行执行)-主机执行:1USE master;2create MASTER KEY ENCRYPTION BY PASSWORD = killkill;3create CERTIFICATE HOST_A_cert WITH SUBJECT = HOST_A certificate ,4START_DATE = 01/01/2008;5-备机执行:1USE master;2create MASTER KEY ENCRYPTION BY PASSWORD = killkill
7、;3create CERTIFICATE HOST_B_cert WITH SUBJECT = HOST_B certificate,4START_DATE = 01/01/2008;52、创建连接的端点(主备可并行执行)-主机执行:1create ENDPOINT Endpoint_Mirroring2STATE = STARTED3AS4TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL )5FOR6DATABASE_MIRRORING7( AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION =
8、REQUIRED ALGORITHM AES , ROLE = ALL );8-备机执行:1create ENDPOINT Endpoint_Mirroring2STATE = STARTED3AS4TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL )5FOR6DATABASE_MIRRORING7( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );83、备份证书以备建立互联(主备可并行执行)-主机执行:1BACKU
9、P CERTIFICATE HOST_A_cert TO FILE = D:SQLBackupHOST_A_cert.cer;-备机执行:1BACKUP CERTIFICATE HOST_B_cert TO FILE = D:SQLBackupHOST_B_cert.cer;4、互换证书将备份到 D:SQLBackup 的证书进行互换,即 HOST_A_cert.cer 复制到备机的 D:SQLBackup。HOST_B_cert.cer 复制到主机的 D:SQLBackup5、添加登陆名、用户(主备可并行执行)以下操作只能通过命令行运行,通过图形界面无法完成。(截至文档编写结束,SQL Se
10、rver2005 的不定号为 SP2)-主机执行:1create LOGIN HOST_B_login WITH PASSWORD = killkill;2create USER HOST_B_user FOR LOGIN HOST_B_login;3create CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = D:SQLBackupHOST_B_cert.cer;4GRANT CONNECT ON ENDPOINT:Endpoint_Mirroring TO HOST_B_login;5-备机执行:1create L
11、OGIN HOST_A_login WITH PASSWORD = killkill;2create USER HOST_A_user FOR LOGIN HOST_A_login;3create CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = D:SQLBackupHOST_A_cert.cer;4GRANT CONNECT ON ENDPOINT:Endpoint_Mirroring TO HOST_A_login;5三、建立镜像关系以下步骤是针对每个数据库进行的,例如:现有主机中有 5 个数据库以下过程就要执行
12、5 次。1、手工同步登录名和密码在第一章中提到数据库镜像的缺点之一是无法维护登录名,所以需要我们手工维护登录。通常来说数据库都将会有若干个用户作为访问数据库的用户,并且数据库会有相应的登录名,但是在备机中缺少与之相对应的登录名,例如某业务系统使用myuser作为登录名访问数据库,但是在备机中没有myuser这个登录名,因此一旦主备切换,业务系统就无法登录数据库了,这种情况称为“孤立用户“在主数据库中执行如下语句:1USE master;2select sid,name from syslogins;3查找出相应的用户名和 sid,例如:上述的myuser在备数据库中执行如下语句:1USE ma
13、ster;2exec sp_addlogin3loginame = ,4passwd = ,5sid = ;6这里的LoginName即主数据库中的登录名,sid 即是上述通过 SQL 语句查找出的 sid。例如,查询得到的 sid 和 name 如下所示。1sid name23- -450x074477739DCA0E499C29394FFFC4ADE4 cz_account67则建立登录名的 SQL 语句:1USE master;2exec sp_addlogin3loginame = cz_account,4passwd = password,5sid = 0x074477739DCA0
14、E499C29394FFFC4ADE4;6到此为止可以认为备机数据库的环境已经与主机同步了,还差数据库内的数据未同步。2、准备备机数据库承接上文,该节是描述如何同步主备数据库内的数据。可以尝试从刚刚使用的全备文件进行还原,在还原数据的时候需要使用选上“with non recover”。如图所示:如果执行成功数据库将会变成这个样子:3、建立镜像由于是实验,没有为服务器配置双网卡,IP 地址与图有点不一样,但是原理一样。-主机执行:1alter DATABASE shishan SET PARTNER = TCP:/10.168.6.45:5022;-如果主体执行不成功,尝试在备机中执行如下语句
15、:1alter DATABASE shishan SET PARTNER = TCP:/10.168.6.49:5022;如果执行成功,则主备数据库将会呈现如上图所示的图标。如果建立失败,提示类似数据库事务日志未同步,则说主备数据库的数据(日志)未同步,为保证主备数据库内的数据一致,应在主数据库中实施一次“事务日志”备份,并还原到备数据库上。备份“事务日志”如图所示:还原事务日志时需在选项中选择“restore with norecovery”,如图所示:成功还原以后再执行建立镜像的 SQL 语句。四、测试操作1、主备互换-主机执行:1USE master;2alter DATABASE SE
16、T PARTNER FAILOVER;32、主服务器 Down 掉,备机紧急启动并且开始服务-备机执行:1USE master;2alter DATABASE SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS;33、原来的主服务器恢复,可以继续工作,需要重新设定镜像1-备机执行:2USE master;3alter DATABASE SET PARTNER RESUME; -恢复镜像4alter DATABASE SET PARTNER FAILOVER; -切换主备54、原来的主服务器恢复,可以继续工作-默认情况下,事务安全级别的设置为 FULL,即同步运行模式,而且 SQL Server 2005 标准版只支持同步模式。-关闭事务安全可将会话切换到异步运行模式,该模式可使性能达到最佳。1USE