sql server 镜像支持发布吗

sql server 镜像支持发布吗,第1张

SQL Server 2005相对于SQL Server 2000来说,无论是性能还是功能都有一个相当大的提高,甚至可以用“革命”来形容这一次升级。SQL Server 2005使 SQL Server 跻身于企业级数据库行列。在数据高可用性方面,SQL Server 2005为用户提供了数据镜像、复制、故障转移群集、日志传送功能。本文向读者简单介结SQL Server 2005镜像功能。

一、镜像简介

数据库镜像是一个高可用性软件解决方案,为客户端提供小于10秒故障转移。每个数据库镜像配置均包含一个主体服务器(包含主体数据库)、一个镜像服务器(包含镜像数据库)和一个见证服务器,其中见证服务器是可选的。主体服务器和镜像服务器要求是独立的服务器实例。主体服务器和镜像服务器的角色是相对的,可以自动或者手动地将主体服务器设置为镜像服务器,镜像服务器设置为主体服务器。与主体服务器和镜像服务器不同的是,见证服务器并不能用于数据库。见证服务器监视主体服务器和镜像服务器,确保在给定的时间内这两个故障转移服务器中有且只有一个作为主体服务器,从而支持自动故障转移。如果存在见证服务器,同步会话将以“高可用性模式”运行,如果主体服务器出现故障,可以实现故障自动转移。如果见证服务器不存在,同步会话将以“高级别保护模式”运行,出现故障需要手动故障转移,并且有可能丢失数据。

图1:两台服务器镜像

图2:两台服务器镜像,一台见证服务器

数据库准备结束,端点创建完成,用户便可以启用数据库镜像。镜像启动后,每个伙伴都将开始维护所在数据库中有关其数据库,以及另一个伙伴和见证服务器的状态信息。这些状态信息允许服务器实例维护称为“数据库镜像会话”的当前关系。在数据库镜像会话过程中,服务器实例将通过彼此定期交换 PING 消息来互相监视。

一、目标

利用Sql Server 2008 enterprise X64,建立 异步 (高性能)镜像数据库,同时建立见证服务器实现自动故障转移。

二、前提条件、限制和建议

2.1 、伙伴双方(主体服务器和镜像服务器)及见证服务器必须使用 相同版本 的Sql Server

2.2 、如使用见证服务器,择须确保其系统上安装 Sql Server 2005 或更高 版本

2.3 、在镜像服务器上创建镜像数据库时,确保制定 相同 的数据库名称WITH NOREBOVORY来还原主题数据库备份。另外,还必须通过 WITH NORECOVERY 应用在该备份执行后创建的所有日志备份。如果数据库镜像已经停止,则必须将对主体数据库执行的所有后续日志备份应用到镜像数据库中,然后才可以重新启动镜像。

2.4 、跨数据库事务和分布式事务均不支持数据库镜像

2.5 、镜像的数据库 路径 尽量与主体服务相同,如果主体服务器CPU利用率在50%以上,择不建议配置自动故障转移

2.6 、建议配置高效稳定的网络环境

三、设置概述

3.1 、确保所有数据库用户在镜像服务器上都有登录名

3.2 、在向另一个服务器实例提供数据库之前,您必须在该服务器实例上建立数据库用于新服务器实例时所需的环境

3.3 、使用 NORECOVERY 还原最近的主体数据库完整备份,以创建镜像数据库。WINgwiT确保执行备份时主体数据库已使用 完整 恢复模式。镜像数据库和主体数据库名称必须相同,并且它们在数据库镜像会话中不能被重命名。

3.4 、设置安全性并启动数据库镜像会话。可以使用 Transact-SQL 或数据库镜像向导来设置镜像。

3.5 、(可选)将见证服务器添加到会话。

四、在Windows Server 2008 R2上安装Sql Server 2008 enterprise X64

4.1 、SQL Server 2008 需要.NET 3.5支持,所以安装之前需要安装.NET3.5。在服务器管理的功能单元中,添加.NET Framework 3.5.1功能

4.2 、安装时选择全新SQL Server独立安装

4.3 、选定功能组件,注意安装目录与其他节点保持一致

4.4 、使用默认实例名称,或者与其他节点相同

4.5 、设定服务启动账户,这里配置所有,服务均使用 域管理 启动

4.6 、设置混合身份登录、制定SQL Server管理员

4.7 、点击下一步,等待安装完成。在其他节点按照同样方式安装SQL Server

五、配置数据库镜像前的数据库准备

5.1 、确认数据库使用了 完整 恢复模式:打开SQL Server Management,在VirtualManagerDB数据库(将要镜像的数据库)上点击右键选择属性,定位到选项页,将恢复模式改为“完整”

5.2 、备份主体数据库:在VirtualManagerDB数据库上点击右键——任务——备份,备份类型选择完整

5.3 、将备份文件拷贝到镜像节点,执行还原。右键点击数据库,选择还原数据库

选定备份文件,写入还原数据库名称,注意此数据库名称必须与主体服务器数据库名称一致。即VirtualManagerDB。

点击选项页,勾选覆盖现有数据库。选择NORECOVERY模式

5.4 、进行 完整日志 备份,执行backup LOG VirtualManagerDB  to Disk = 'c:\backup\vlogback.bak'

5.5 、同样,事务日志备份在镜像数据库上还原。镜像数据库上,点击右键——任务——还原——事务日志

5.6 、在还原选项中选中NORECOVERY,执行还原 *** 作。

lishixinzhi/Article/program/SQLServer/201404/30298

我们首先来看一下什么是数据镜像: 现在几乎所有的应用系统都是基于数据库的,那么数据库的负荷是比较大的,在一天24小时中,任何时间都有可能会有数据要保存到数据库,或是从数据库中读出数据。任意时刻都会有用户连接到我们的数据库服务器上,几十,几百甚至成千上万个用户来连接使用我们的数据库,那么不论是计划内的宕机还是计划外的故障都会造成一定的损失。给我们的用户或是企业带很大的损失,特别是随着数据时代的到来,用户对数据的使用提出了更高的要求,那么作为一个DBA,就要想怎么做才能将这个损失减少到最低,正是因为基于这种需求,数据库镜像技术出现了!SQL SERVER2005中首次提出了数据库镜像概念。特点: 基于软件的高可用性解决方案 那是完全基于软件的高可用性解决方案。不需要增加硬件成本,也就是低硬件成本 快速的故障转移恢复, 最主要的一个亮点,就是快速的故障转移恢复。3秒(对于用户或是DBA是特别有吸引力的) 数据量大的情况一般10秒. 在这个数据库镜像技术中有一个数据库服务器我们称为主数据库。它负责用户的连接和数据的处理。还有一个是从服务器,确切来说,这里应该叫镜像服务器,上面也有一个数据库,叫镜像数据库,这个数据库用于存放我们主数据库的一个热备份。也就是说它虽然不连接用户机,但是它对于主服务器上的数据更改呀,变化呀,都能做一个热备份,也就是说如果用户更新了主数据库中的内容,那么主数据库会根据镜像技术将更新传送给镜像服务器,这样就能保证主服务器和从服务器之间的数据是一致的,那么假如说由于某种原因,我们的主服务器或是主数据库不可用了,例如,网络中断,系统故障等等,那么客户端会重新定向到镜像服务器,那么客户端仍然能读取数据,写入数据,他感觉不到主数据库服务已经宕机了。所以采用数据库镜像技术以后,对于用户来说这个可用性就增强了,而且对于故障恢复时间也缩短了。那么客户仍然可以向镜像数据库上写数据。读数据,更新相关的事务,这是我们应用数据库镜像的一个过程。 想实现这个过程,必须要涉及到这么几个角色: 数据库镜像中的服务器角色:这几个角色刚才通过图形介绍了一点,那么在2005中有三种服务器角色,分别是 主体服务器:承载主体数据库 接受用户连接和事务处理请求 也就是说主体服务器正常的情况下就是主体服务器来提供服务 镜像服务器:承载镜像数据库 作为主体数据库的执备份 所谓热备份是说,主体数据库上的变化会立即反应硬驱镜像数据库上。 仅在故障转移后接受用户连接,处理事务请求 见证服务器:监视服务器状态和连接性,实现自动故障转移 也就是说见证服务器会时刻监视两个服务器的状态和连接性,当主体服务器发生宕机或者不可用以后,见证服务器会立即启用故障转移,将镜像服务器切换为主体服务器。继续为用户提供服务器 这是数据库镜像中的三个服务器角色,但是要注意一下就是这三个角色不是固定下来的,是可以变化的: 主体数据库和镜像数据库互为伙伴: 主体和镜像是可以相互转换的 故障转移后伙伴角色发生变化 当主体服务器正常的情况下,用户所有的连接及数据的更新都是直接送到主体服务器的,只不过是主体服务器再将数据备份到镜像服务器上,但是主体服务器不可用时,此时角色就发生了改变。镜像服务器就变成了主体服务器。那么如果原来的主体服务器恢复正常了,那么怎么办,它就会成为镜像服务器。所以它们的角色就彻底变化了。那如果这个服务器又不可用了。那么又是一个转换的过程。 那大家可能又要问一个问题就是这三个角色怎么知道到底哪一个可用,哪一个不可用: 各个服务器实例通过PING交换消息相互监视。与DOS命令的PING原理差不多,但是功能比DOS下的PING要强大的多,DOS下的PING只是检查网络的连通性,而此处的PING即要监视网络的连通性,这是第一步,还要监视数据库服务器实例的运行情况,服务器是否是正常的,还有就是这个服务器上的数据库是否正常。 总结一下数据库镜像工作过程: 正常情况下,配置好数据库镜像以后,用户只能连接主体数据库,但此时镜像数据库是不可用的。用户连上去也没有用。用户只能使用主体服务器时,主体服务器会将数据一方面写到自己的数据库中,另一方面通过事务日志的方式传给镜像服务器,写到镜像服务器的数据库,此时主体服务器会进入一个等待状态。等待镜像服务器的确认,也就是当镜像服务器的数据成功写入到镜像数据库以后会发一个消息给主体数据库,说我现在已经完成了数据的更新了也就是在镜像服务器上执行了一个REDO的过程。这是一个确认。当主体服务器收到这个确认以后会给客户端一个回应,说刚才的那个数据更新的 *** 作已经完成了 那么为什么能实现一个快速恢复机制,这主要和2005中的一个机制是分不开的 但SQL 2005不是没有必要等到回滚结束只要在REDO之后就可以使用了,至于UNDO的 *** 作,在用户使用的过程中你再继续UNDO,所以当主体服务器发生数据更新了,镜像服务器会以最短的时候来时间更新,以至于如果主体数据发生故障了,镜像服务器右以在最短的时间内接替主服务器进行工作。 下面来介绍一下数据库镜像中的三种 *** 作模式: 高可用性:最常用的。 高级别保护 高性能 下面咱们分别来看一下这三种模式,当然最主要的就是高可用性,这是使用比较广的一个模式 高可用性模式: 服务器角色: 主体服务器 镜像服务器 见证服务器 应用场景: 要求高可用性的场合 如股票交易 证券交易 银行等。 要求实现自动故障转移 确保数据的完整: 要求只要是用户提交到服务器上的数据,那怕说数据刚提交上主体服务器就发生故障了,也能保证数据不会丢失。故障转移之后的数据是不会丢失,从而保证数据库的完整性 高级别保护模式: 我们从名称上也能看出来,它的重点在于对数据的一种保护,而不是实现可用性 服务器角色: 主体服务器 镜像服务器 应用场景: 高的数据完整性要求 不要求自动故障转移 对服务的可用性要求较低 也就是说主体数据库的宕机还是可以接受的,但是数据的丢失是不可以接受的,那么这种场合可以使用高级别保护模式 因为没有见证服务器,所以是不能进行自动的故障转移的。那如果主体服务器不可用,那么想实现故障转移,只能是手工完成,所以对服务器的可用性要求较低 高性能模式: 服务器角色: 主体服务器 镜像服务器 应用场景: 主体服务器和镜像服务器距离很远的时候 十几公里或是完全两个城市 通讯链路有明显的延迟 对性能的要求高于数据的完整性 原理是:当主体服务器收到用户的 *** 作后,将此事务传给镜像服务器,因此距离远所以有明显的延迟,所以他不会等镜像服务器的确认,也就是说它不管这个数据到底有没有写到镜像服务器,所以这种模式就在于尽快的响应用户的请求,也就是对用户对性能有一个较高的要求,这个要求是高于数据的完整性。 这种模式下会存在数据的丢失,也就是说如果主体服务器宕机了,我们会把镜像服务器作为主体服务器,但是不能保证这里面的数据就是和主体服务器上的数据是一致的,因为有可能会有丢失。 我们对几个概念简单的介绍一下: 事务安全性: FULL 主体和镜像数据库同步传输的模式, 主体在发送日志后等待镜像的确认 主体和镜像的日志完全一致 OFF 主体和发送日志后不等待镜像的确认,继续处理后继的 *** 作。 主体失败时在镜像上可能丢失部分数据 仲裁:在高可用性或是高级别保护模式下需要仲裁。以决定那一个服务器是主体服务器, 仲裁的改变将导致故障转移,如主体服务器发生故障了,则会发生仲裁的改变,将镜像服务器定为主体服务器。 形成仲裁的形式一般有这么几种: 下面我们就来看一下如何配置数据库镜像: 这应该是大家感觉很兴奋的,因为听我西里哗拉的讲了半天。终于不用再受罪了。其实配置很简单的,只要注意几个步骤就行了。 准备镜像数据库 在镜像服务器上准备镜像数据库 创建数据库镜像端点 在各个服务器上配置镜像端点 配置安全性 启动数据库镜像 下面我们就具体看一下如何去做,有哪些需要注意: 这里需要提到的一点的就是在SQL SERVER2005刚刚发布出来的时候数据库镜像这个服务默认是关闭的,也是不支持的。在刚刚发布SQL SERVER2005正式版本的时候,认为数据库镜像这个技术还不成熟,有待完善。所以如果你使用的是正式版本则无法使用这个技术。 那么需要下载SP1或是以上的补丁。 · 版本号sql server 2005 版本9.00.1399sql server 2005(初始版本)9.00.2047sql server 2005 SP19.00.3042sql 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' –-在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 也可以通过图形界面查看 配置数据库镜像安全性:也就是指定哪些用户可以使用这个端点。肯定是管理员,一般用户不让他访问。 分别执行: Grant connect on endpoint::"dbmirrep" to "server1\dufei" Grant connect on endpoint::"dbmirrep" to "server2\dufei" Grant connect on endpoint::"dbmirrep" to "server3\dufei" 最后一个就是启动数据库镜像。注意:顺序 首先要从镜像服务上配置 在SERVER2上,指定伙伴端点: ALTER DATABASE ITET SET PARTNER='TCP://SERVER1:5022' 在SERVER1上,指定伙伴端点: ALTER DATABASE itet SET PARTNER='TCP://SERVER2:5022' –查看数据库 --到此为止,就是咱们前面所介绍的高级别保护模式。可以实现数据完整性,但是不能实现高可用性。所以还要继续,也就是说到这里为止,不要见证服务器也可以,但是不能实现故障的自动转移: 在 SERVER1上,指定见证服务器端点: Alter database ITET set wiTness=N'TCP://SERVER3:5022' 设置数据库镜像事务安全级别: ALTER DATABASE ITET SET SAFETY FULL 实验结束,但一定要注意细节 最后看一下数据库镜像角色切换:也就是如何实现故障转移 自动故障转移: 只针对高可用性模式 SAFETY=FULL 测试:禁用主服务器的网卡,查看库状态,再启用再查看 我们到这里已经知道了如何实现数据库镜像,那么用户如何来使用:客户端都是连接到主体服务器上进行工作的。那么如果主体服务器不可用了,那么就会造成用户连接的失败,它怎么知道去自动连接镜像服务器,这里一般使用ADO技术,如ASP.NET 或是微软所提借的连接工具。 我们这里借助WINDOWS 的集群功能:来进行测试: SERVER1与SERVER2配置成WINDOWS集群: 实验到此结束! 本文出自 “杜飞” 博客


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9687234.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存