SQL Server 2005群集更换存储

为什么写这篇文章,主要是因为考虑到群集上更换存储的情况,例如原来的存储发生过小故障,担心数据丢失,必须将群集中的存储换成一个新的存储。于是就搭了个实验环境验证一下实施过程。本环境是基于Windows server 2003+SQL Server 2005的环境。后面会上一篇Windows Server 2008+ SQL Server 2008的相关文档。

仲裁磁盘中记录有仲裁信息,如下图所示:

而数据盘中存放的有系统数据库等信息,如下图所示:

最关键的就是这S盘中的信息。

首先:存储为上新的仲裁盘和数据盘划分好LUN,并映射到两个节点上。两个节点上都能看到相同的磁盘信息。

先在一个节点上进行分区,格式化等操作,为了与早期的仲裁及数据盘区分开,在此仲裁为P盘,数据为T盘,另一个节点上重新扫描即可,不需要重新启动,然后添加盘符,如下图所示:

更换群集中的仲裁磁盘:

第一步,我们先将仲裁磁盘加入到群集组中,如下图所示,其他操作默认。

然后,编辑Windows群集的属性,仲裁---指定新的仲裁磁盘即可。如下图所示:

注意:如何因为仲裁磁盘不可用而无法启动群集服务,请使用 /FIXQUORUM 开关启动群集服务。然后,便能够更改仲裁磁盘。如下图所示:

此命令只是在群集因为仲裁原因无法启动的时候使用,成功设置仲裁磁盘后,删除此参数,再重新启动群集服务。然后可以删除原来的仲裁盘,或者是保留用作备份。

更换群集中的数据磁盘

首先,把新的数据盘加入到SQL Server资源组中,如下图所示,其他默认。

接下来,需要让SQL Server服务能够识别到此磁盘,这里取决于SQL Server的依赖关系,如下图所示,将新的磁盘加入到依赖关系中,仔细检查SQL Server相关服务的依存关系,我这里用到SQL Server Fulltext和SQL Server服务,注意,服务要先脱机,再添加资源依存,然后服务再联机。

此时,SQL Server就可以识别到新添加的磁盘了,可以进行数据的备份等操作了。 如下图所示:

然后,就是复制数据,将S:盘中的所有数据复制到T:。

具体操作步骤是:

1. 只保证一个节点开机,其他节点关机,目的是让所有的磁盘资源都切换到一个节点上。便于操作。

2. 停止SQL Server服务,否则,无法复制文件。

因为S盘中存放的是数据库的内容,必须停机后才能进行复制。根据数据量和存储性能时间不等。所有内容,全选复制。

紧接着,修改磁盘盘标:

1、打开磁盘管理器,查看所有的磁盘均被识别,并记录磁盘编号,如下图所示:

原有仲裁盘为磁盘1,原有的数据库为磁盘2,新的仲裁盘为磁盘3,新的数据盘为磁盘4.

2、打开注册表,找到以下位置:

HKLM/System/CurrentControlSet/Services/Clusdisk/Parameters/Signatures的键值,找到所有的原存储共享磁盘数字编号

这里,我们主要是记录原有数据盘的编号,磁盘2,对应的是7FE3E998。

3、将原有的数据磁盘的编号与新的磁盘对应起来,也就是更改磁盘签名。

但无奈没有找到dumpcfg.exe命令,这个命令应该是包括在Windows 2000的资源工具包里,但实在是不在好找,我就偷个懒,直接修改注册表了。(强烈建议使用dumpcfg.exe命令操作),不知道直接修改注册表,有什么隐患,希望有知道的朋友给说明一下,或者告诉我哪儿可以下载到dumpcfg.exe程序。

修改依存关系:

然后,启动所有节点,删除原有数据盘S盘,(删除资源时必须要求所有节点都开机)

紧接着,其他节点再次关机,只保留一个节点开机,修改新数据盘的盘符为S盘。

然后,此节点关机,再开启第二个节点,查看盘符是否为S:如果不是,则需要修改一致。然后,所有节点开机。

最后,再将SQL Server服务和代理服务联机,即可,如下图所示:

至此,操作就操作。

群集中的其他存储更换,方法一样。都是先加入到群集中后,修改磁盘信息(签名)。例如,存在MSDTC资源的话,也是同样的操作方法,将新的磁盘加入到群集中,停止服务,将源盘的数据复制到新盘中,修改磁盘签名,删除源磁盘,修改盘符。启动服务,OK.

另外,需要注意:

或者有些情况下需要将SQL Server service account 添加到SQL Server 文件夹和OLAP 文件夹,并且让SQL Server service account有该文件夹的所有权限。

参考:http://tech.diannaodian.com/dw/data/sql/2012/0610/181991.html

经过实验,微软给出的操作是通过dumpcfg.exe命令 更新磁盘签名,但不用好像也可以。如果是关于SQL Server 2008的环境,可以参考下面的讨论:

http://social.microsoft.com/Forums/cs-CZ/24e3cbf1-43af-412d-909a-1a68c72fe527/windows-2008-server-r2-

http://social.msdn.microsoft.com/Forums/zh-CN/c263cd5c-1b2b-48e3-95df-96805bc1e579?forum=sqlserverzhchs

时间: 2024-12-24 15:41:48

SQL Server 2005群集更换存储的相关文章

SQL Server 2005故障转移群集

SQL Server使用最广的高可用性技术叫做故障转移群集.SQL Server故障转移群集是一项基于Windows故障转移群集的一种技术.SQL Server故障转移群集技术在部署和管理上都非常容易,同时又能提供非常良好高可用性,因此目前得到了非常广泛的使用.可以说,它是SQL2012之前的各个版本,实现高可用性的必选技术.下面我们就来聊聊SQL Server2005的故障转移群集配置. 配置SQL Server故障转移群集需要注意一下几个方面的问题: 1. 因为做SQL Server故障转移

SQL Server 2005 镜像构建手册

转载:http://www.cnblogs.com/killkill/archive/2008/05/23/1205792.html 一. 镜像简介 1. 简介 数据库镜像是将数据库事务处理从一个SQL Server数据库移动到不同SQL Server环境中的另一个SQL Server数据库中.镜像不能直接访问;它只用在错误恢复的情况下才可以被访问. 要进行数据库镜像所需的最小需求包括了两个不同的SQL Server运行环境.主服务器被称为"主机",第二个服务器被称作"备机&

SQL Server 2005中的分区表(四):删除(合并)一个分区

在前面我们介绍过如何创建和使用一个分区表,并举了一个例子,将不 同年份的数据放在不同的物理分区表里.具体的分区方式为: 第1个小表:2010-1-1以前的数据(不包含2010-1-1). 第2个小表:2010-1-1(包含2010-1-1)到2010-12-31之间的数据. 第3个小表:2011-1-1(包含2011-1-1)到2011-12-31之间的数据. 第4个小表:2012-1-1(包含2012-1-1)到2012-12-31之间的数据. 第5个小表:2013-1-1(包含2013-1-

自己整理的常用SQL Server 2005 语句、

--创建数据库 create database 数据库 go --打开数据库 use 数据库 --删除数据库 drop database 数据库 Go --创建数据表 create table 数据表 ( 列名1  数据类型1  限定条件(是否是主外键.是否为空), 列名2  数据类型2  限定条件(是否是主外键.是否为空) )go --删除数据表 drop table 数据表 --插入数据 --插入单行数据 insert  into 表名 [(列名1,列名2 )]  values  (‘数据1

SQL Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表?(转)

如果你的数据库中某一个表中的数据满足以下几个条件,那么你就要考虑创建分区表了. 1.数据库中某个表中的数据很多.很多是什么概念?一万条?两万条?还是十万条.一百万条?这个,我觉得是仁者见仁.智者见智的问题.当然数据表中的数据多到查询时明显感觉到数据很慢了,那么,你就可以考虑使用分区表了.如果非要我说一个数值的话,我认为是100万条. 2.但是,数据多了并不是创建分区表的惟一条件,哪怕你有一千万条记录,但是这一千万条记录都是常用的记录,那么最好也不要使用分区表,说不定会得不偿失.只有你的数据是分段

SQL Server 2005中的分区表(五):添加一个分区(转)

所谓天下大事,分久必合,合久必分,对于分区表而言也一样.前面我们介绍过如何删除(合并)分区表中的一个分区,下面我们介绍一下如何为分区表添加一个分区. 为分区表添加一个分区,这种情况是时常会 发生的.比如,最初在数据库设计时,只预计了存放3年的数据,可是到了第4天怎么办?这样的话,我们就可以为分区表添加一个分区,让它把新的数据放在新的分区里.再比如,最初设计时,一个分区用于存放一年的数据,结果在使用的时候才发现,一年的数据太多,想将一个分区中的数据分为两个分区来存放. 遇到这种情况,就必须要为分区

SQL Server 2005中的分区表(四):删除(合并)一个分区(转)

在前面我们介绍过如何创建和使用一个分区表,并举了一个例子,将不 同年份的数据放在不同的物理分区表里.具体的分区方式为: 第1个小表:2010-1-1以前的数据(不包含2010-1-1). 第2个小表:2010-1-1(包含2010-1-1)到2010-12-31之间的数据. 第3个小表:2011-1-1(包含2011-1-1)到2011-12-31之间的数据. 第4个小表:2012-1-1(包含2012-1-1)到2012-12-31之间的数据. 第5个小表:2013-1-1(包含2013-1-

SQL Server 2005 sp_send_dbmail出现Internal error at FormatRowset (Reason: Not enough storage is available to complete this operation)

案例环境: 操作系统: Windows 2003 SE 32bit(SP2) 数据库版本:Microsoft SQL Server 2005 - 9.00.5069.00 (Intel X86) Aug 22 2012 16:01:52 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 案例分析: 如下所示,使用下面SQL语句发

SQL Server 2005中的分区表(五):添加一个分区

所谓天下大事,分久必合,合久必分,对于分区表而言也一样.前面我们介绍过如何删除(合并)分区表中的一个分区,下面我们介绍一下如何为分区表添加一个分区. 为分区表添加一个分区,这种情况是时常会 发生的.比如,最初在数据库设计时,只预计了存放3年的数据,可是到了第4天怎么办?这样的话,我们就可以为分区表添加一个分区,让它把新的数据放在新的分区里.再比如,最初设计时,一个分区用于存放一年的数据,结果在使用的时候才发现,一年的数据太多,想将一个分区中的数据分为两个分区来存放. 遇到这种情况,就必须要为分区