双机热备,数据库置疑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双机热备,数据库置疑相关的知识,希望对你有一定的参考价值。

我们的是一台服务器+一个存储,这样的两套设备,通过rose mirro ha做的双击热备。服务器1是活动主机,服务器2是备用主机。数据库是SQL SERVER 2000
现在的问题是这样的,原来数据库文件以及备份是放在存储里面,也就是Z盘。后来服务器出问题,工程师来刷了Bios,再启动以后数据库就置疑了。然后就把置疑的那个数据库删了。重新建了一个,默认路径,放到C盘了。
然后前几天,因为数据库放到C盘不安全,就打算把他从新安装到Z盘去,单机直接安装到Z盘没问题,数据库也是正常的。但是双机热备开了以后,数据库马上置疑。
试了很多种方法,比如把2号服务器的数据库也删了重新安装,1号服务器上更改数据库保存路径,直接删除数据库,新建一个然后还原。还有附加数据库。都不可以。只能继续安装在C盘才可以。
所以想请问下各位大侠,有遇到过相关问题的,或者知道解决方法的没?谢谢了~

双机热备模式下,SQL2000数据库分离,附加,置疑,单用户解除的方法

首先,在任何操作之前,必须要备份数据库(重要)

一、分离数据库

1、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器

2、展开服务器组,然后展开服务器,选中要分离的数据库

3、点击鼠标右键“所有任务》分离数据库”,出现如下窗口

4、点击确定,该选定的数据库就被分离。

5.分离后,把原数据库里面.MDF(主数据文件).LDF(事务日志文件) 这两个文件复制到目标盘下,例:D盘下

注意事项,只有“使用本数据库的连接”数为0时,该数据库才能分离。所以分离数据库时尽量断开所有对要分离数据库操作的连接,如果还有连接数据库的程序,会出现数据库的连接状态窗口,显示正在连接此数据库的机器以及名称,点击清除按钮将从服务器强制断开现有的连接。

二、附加数据库

1、在附加数据库之前,首先要移动数据库文件

在附加数据库之前,您必须将与数据库关联的 .MDF(主数据文件).LDF(事务日志文件) 这两个文件复制到目标硬盘下,或是同一服务器的不同硬盘目录下。这两个文件一般位于C:\\Program Files\\Microsoft SQL Server\\MSSQL\\Data目录下。

2、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器

3、展开服务器组,然后展开服务器

4、右击"数据库",然后选择“所有任务》附加数据库”,弹出窗口

 

5、输入要附加的数据库的MDF名称。如果不确定文件位于何处,单击浏览("...")搜索。若要确保指定的 MDF 文件正确,请单击"验证"。在"附加为"框内,输入数据库的名称。数据库名称不能与任何现有数据库名称相同。指定数据库的所有者

 

6、单击"确定"按钮。新附加的数据库的数据库节点即创建在"数据库"文件夹中

重启双机

1.此时数据库分离,附加完成,必须重启一次双机

修复置疑

1,双机重启后,数据库置疑

 

下面所有修复置疑的语法,在没有特别提到时,默认数据库都请选择(Master)数据库)

2,修复置疑(必须在SQL的查询分析器中才能进行数据修复置疑工作)

A、 打开查询分析器,当数据置疑之后在查询分析器中是看不到置疑的数据库名称的,所以进入查询分析器之后,所选数据库默认(Master)数据库即可。(复制下面置疑语法到查询分析器中执行。

--修复数据库置疑的语法

SP_configure 'allow update',1

go

RECONFIGURE WITH OVERRIDE

go

update sysdatabases

set status=-32768

where name='zmsoftpos_cs'--数据库名称

go

dbcc rebuild_log('zmsoftpos_cs','D:\\zmsoftpos_cs_log')--重新建立日志

Go

update sysdatabases

set status=26

where name='zmsoftpos_cs'

Go

Sp_configure 'allow update',0

Go

Reconfigure with override

GO

备注:其中所有的“zmsoftpos_cs”是置疑的数据库名称,请根据客户实际的置疑数据库进行更改名称,其他的内容不变

B、 拷入置疑语法之后,请按F5执行,如果显示框内显示的内容如下表示置疑修复成功

 

C、 置疑修复成功之后,再到如上图的master下拉框架内就可以选择所修复的置疑数据库了,此时置疑是修复成功了,但是并不代表此数据库就没有问题了,请暂时不要进软件,我们还需要检查数据库有没有问题。

3,检查修复置疑好的数据库是否正常

D、 打开查询分析器选中修复好的数据库名称,输入“dbcc checkdb”语法,再按F5执行,根据数据库的大小执行需要的时间不确定,请耐心等待,执行完之后在显示框内就会显示一些相关内容如下图:

 

A:如上图所示,把显示框拖到最下面,如果“CHECKDB 发现了 0 个分配错误和 0 个一致性错误”即表示此数据库已经好了,不用再修复了,客户即可进入软件进行操作了。

      备注:(以下的语法就不用再执行了)

修复数据库只限于DBO使用,执行以下命令(解除单用户模式)

Sp_dboption 'zmsoftpos_cs','single User', 'False'

B:如果执行“dbcc checkdb”后显示框内显示了很多红色的记录,那么表示这个数据库的有些表还有错误需要修复

 

2, 修复过程如下:(修复过程中语法内的数据库名称都根据客户使用的数据库进行更改)

A、 首先退出所有的客户端软件与企业管理器,只打开查询分析器,默认数据库“Master”,拷入如下语法执行:

sp_dboption 'zmsoftpos_cs','single user','true'

备注:其中的数据库名称根据客户使用的数据库进行更改。此语法是把数据库设置为“单用户模式”

B、 设置为单用户模式之后,拷入如下语法进行多次执行

dbcc  checkdb(zmsoftpos_cs,REPAIR_REBUILD)

备注:数据库名称根据客户使用的数据库进行更改。此语法可以多次执行,也需要多次执行,每执行完一次拖到显示框内的最后面如果“发现的是0个分配错误与O个一致性错误”就不用再修复了,只需执行下面语法即可

Sp_dboption 'zmsoftpos_cs','single User', 'False',

备注:下面的语法也不需执行了。

如果执行多次之后:“CHECKDB 发现了 N个分配错误和 N个一致性错误”不会再次减少时,表示此语法修复不成功,需要进行下面的修复过程。

C、 再把下面语法拷进入,进行多次执行:

dbcc checkdb ('zmsoftpos_cs',REPAIR_allow_data_loss)

备注:此语法的执行与上面“ B ”点中执行的语法过程一样,执行到此步骤百分之九十以上的数据库都是可以修复的。如果执行到最后分配错误与一致性错误还不减少,那么执行下面的”D”操作

D、 拷入如下语法执行:

 exec sp_MSforeachtable 'dbcc dbreindex(''?'')'

备注:执行此语法时,此时的“ Master ”数据库名称一定要选择修复的数据库名称,执行才会生效。执行完成之后,再使用“ dbcc checkdb ”语法再检查一次,如果是“发现的是0个分配错误与O个一致性错误”表示修复成功,如果是:“CHECKDB 发现了 N个分配错误和 N个一致性错误”

表示此数据库坏得很历害,使用此方法已不能修复成功了。必面使用其他方法了。最后不管修复成不成功都要使用下面的语法结尾:

 Sp_dboption 'zmsoftpos_cs','single User', 'False'

备注:把之前的单用户模块解除掉

3, 在上面的修复过程中不能解决的问题,再使用BCP命令语法进行修复

      例:以超市版本为例,超市版本的数据库名称为:zmsoftpos_cs

A、打开帐套管理新建一个相同的帐套,数据库名称就会是zmsoftpos_cs_01的帐套名称,新建好之后,一定要使用后台登录进去一次,再退出后台。

B、打开查询分析器,选择好帐套数据库“zmsoftpos_cs”把下面的语法拷进入按F5执行:

select 'if EXISTS(SELECT * FROM zmsoftpos_cs_01..sysobjects WHERE name = ' + char(39) + name + char(39) +  ')'+char(13)+ 'delete from zmsoftpos_cs_01..'+name from zmsoftpos_cs..sysobjects where type='U'and name not in ('system_sheet_setup','system_mode_file','system_image') order by name

执行完成之后在下面的显示框架内就会出现如下语法:

 

使用鼠标左击一下图片中红色圆圈内的按钮,就会选中下面的语法,然后再到红色圆圈内的按钮上点鼠标右键,点击另存为,就会出现如下对话:

 

其中的保存类型一定要先选择所有文件,然后再到文件名处,填写好如图片中输入的名称,然后点保存!

C、以上的语法另存为之后,再拷入以下的语法执行:

select 'bcp zmsoftpos_cs..'+name+' out f:\\data\\'+name+'.txt -c -S127.0.0.1 -Usa_ -P422426362227001' from zmsoftpos_cs..sysobjects where xtype='U' 

and name not in ('system_sheet_setup','system_mode_file','system_image') order by name

备注:以上的语法中有一个文件存放路径,“f:\\data\\”此路径根据实际的情况创建,然后更改过来,再执行。执行之后,按照上面的方法,点击另存为如下图:

 

其中的保存类型也要先选择所有文件,然后再到文件名中填入如图上的名称:导出数据.bat文件名,然后再点保存,保存的路径一定要是上面语法中设置中文件夹的路径。

D、此时再选择超市版本的zmsoftpos_cs_01的帐套名称,然后在左上角的文件中打开找到之前保存的“删除数据.sql”的文件,把其中的

”delete from”全部替换成“truncate table”,然后再按F5执行。

E、把D点的语法执行完成之后,还是选择zmsoftpos_cs.01帐套再执行以下的语法:

select 'bcp zmsoftpos_cs_01..'+name+' in f:\\data\\'+name+'.txt -c -S127.0.0.1 -Usa_ -P422426362227001' 

from zmsoftpos_cs..sysobjects where xtype='U' and name not in ('system_sheet_setup','system_mode_file','system_image') order by name

其中的路径f:\\data\\一定要与“ C ”点中的路径一致。按F5执行之后,按照C点的步骤,把显示框内的语法另存为“导入数据.bat”的文件名,保存到语法的路径文件夹内。

F、以上的步骤操作完成之后,打开以上语法存放的径路,先双击导出数据文件,双击之后就会出现如下对话框架:

 

此界面表示,正在从原帐套里面把数据导出来,请您静心等待,导出完成之后此界面会自动关闭的。

等待完成之后,再双击”导入数据.bat”文件,也会出现如上的界面。也请您静心等待,导出完成之后界面也会自动关闭。

G、以上的步骤都完成之后,请把zmsoftpos_cs_01的帐套,备份一次,然后把zmsoftpos_cs与zmsoftpos_cs_01两个帐套都删掉,然后新建超市版本的帐套,把恢复备份的zmsoftpos_cs_01文件,此时您的数据库修复的工作就大功告成了。。

参考技术A 也就是说,数据库文件只能放C盘,才行?追问

对头

追答

单机直接装是没问题的。双机热备数据库据质疑报错?你试过把数据库放C盘双机吗?总感觉是权限问题。C盘数据库文件(夹)权限或C盘格式(ntfs/fat32)或权限呢?先测试是不是C盘和Z盘权限。排除后,再看数据库用户权限。

参考技术B 换主机,重新装追问

你敢再不专业点么。。

追答

偶是业余跑龙套的

双机热备软件

双机热备技术已经发展了将近二十年,目前市场上的双机软件的品牌也很多,如今服务器的磁盘容量越来越大,基本能满足客户的数据存储需要,所以目前2台服务器直接做成双机热备的环境越来越多,接下来简单分析一下目前镜像方式的不同:
一些品牌软件采用的是基于文件的字节级复制方式,校验需要很长时间,而且只能采用异步方式同步,不能达到实时!
还有一些品牌的双机软件是基于磁盘分区的块级数据同步方式,可以做到实时同步,而且是主机的新一条数据写入并完全同步给备机才会执行下一条数据的写操作!
另外建立一个关于这方面的技术讨论QQ群,欢迎大家的加入:854502908

以上是关于双机热备,数据库置疑的主要内容,如果未能解决你的问题,请参考以下文章

Linux服务器双机热备详细过程

哪位能介绍下oracle的RAC、集群、双机热备、Dataguard这些东西?

双机热备,主备&双主

MySQL数据库如何实现双机热备的配置成功方案

双机热备技术

Oracle之双机热备部署+切换故障问题解决