浪潮软件支持软件的几种数据备份的方法比较分析

浪潮软件支持软件的几种数据备份的方法比较分析

问题描述: 简谈数据库的数据迁移方法
产生原因: 日常维护
解决方法: 在我们安装维护浪潮系列软件的时候,有时会碰到下列情况:
1、 将一个数据库的数据迁移到另一个数据库中;
2、 从一台服务器迁移到另一台服务器中;
3、 服务器瘫痪;
4、 重新安装服务器再恢复数据库;
5、 数据库系统升级;
6、 部分数据希望进行二次处理,进行外部使用;
7、 在系统外面处理过的数据,重新导入系统;
……
在这些情况下,就需要掌握一些数据迁移的方法,并根据实际情况的不同,选择合适的数据迁移方法,以达到快速、安全、高效的目的。下面我就数据的迁移,结果浪潮通软系列软件,从系统维护的角度,以常用的Sybase ASA、Sybase ASE、MS SQL Server平台为例,给大家介绍几种常用的方法以供参考。限于篇幅,每一平台只作简略介绍。

一、 利用软件提供的“备份”、“恢复”进行处理
适用平台:浪潮系列软件支持的所有数据库平台。
在浪潮系列软件的各个应用模块中,都提供了数据备份与数据恢复功能,以方便用户对数据进行必要的备份与二次处理。

方法1.1、在应用模块中进行处理
推荐程度:★★
备份:
运行应用功能模块(如帐务系统),联接到要迁移出数据的数据库(如第一套帐),执行最左面的菜单:“文件”—“备份”,就可以将本功能模块今年的应用数据与系统运行所必需的公共数据备份出来。备出的数据体现为以表单位的一组文本文件,比较大的表会自动切分成几个小文件,表中的BLOB类型列也会另建文件专门导出。
恢复:
运行应用功能模块(如帐务系统),联接到要迁入数据的数据库(如第二套帐),执行最左面的菜单:“文件”—“恢复”,就可以将本功能模块今年的应用数据与系统运行所必需的公共数据恢复进来。恢复时,需要你提供以前的通过上面介绍的备份方法备出的一组相对完整的文本文件。

优点分析:
1、 用此方法进行处理,简单、方便,适合于最终用户进行备份工作。
2、 每次重要工作处理后可以随时备份,不必每次麻烦系统管理员,拥有权限的每一个操作员都能够方便操作。
3、 这种方法只能备份当年及未年结时预处理的下年数据。
4、 数据库平台无关性。使用这种方式,可以把浪潮系列软件,在各种不同的软件所支持的数据库平台之间,进行数据的迁移。
缺点分析:
1、 用此方法只能进行一个应用功能模块的数据备份恢复,不适用于系统管理员进行统一的数据备份与恢复管理。
2、 并且众多的模块备份时都要对公共数据库进行备份恢,数据冗余较大。
3、 数据恢复时速度比较慢。特别是在恢复多模块数据时,存在公共数据多次重复恢复的现象。
4、 备份TEXT、IMAGE、BLOB型数据时不太稳定,主要表现在帐表单据的格式容易在恢复时丢失。
5、 如果在系统表中对应该备份的表定义得不全,则会人为遗漏表格内容。
6、 如果用户进行恢复时使用的公共数据如果不是最新的,则有可能造成系统数据的“丢失”甚至“混乱”。所以必须对用户在这里的“恢复”功能进行严格的限制。譬如用户0001在2003月03月在销售系统中新增加了公共往来单位AAA,并且处理了单据,然后用户0002恢复了2003年02月的帐务备份数据。这时,则用户0001在销售中所作的单据就出现了“单位不存在”的告警。因为用户0002进行恢复的数据中,包括了大家都要使用的“往来单位”等公共数据。

方法1.2、在维护工具中进行处理
推荐程度:★★★
备份:进入“维护工具”子系统,在菜单“数据处理”下,有“备份当前数据”和“历史数据备份”两个功能菜单。通过这两个功能,可以从数据库向外备份从建帐以来的所有年度数据。
恢复:进入“维护工具”子系统,在菜单“数据处理”下,有“恢复当前数据”和“历史数据恢复”两个功能菜单。通过这两个功能,可以从以前备份出来的文本文件中向数据库恢复从建帐以来的所有年度数据。

优点分析:
1、 只需进入维护工具一个模块,就可以处理一个到所有个已安装模块的数据备份工作,不必重复进入所有功能模块,备份效率较高。此法比较适用于管理员统一处理。
2、 恢复工作只有管理员可以进行,操作相对安全一些。
3、 可以处理当前年及历史年的数据。
4、 同方法1.1中的优点4。
缺点分析:
1、 将历史年数据恢复到新帐套中时,必须先建立历史个的数据表,否则无法恢复。
2、 方法1.1中的缺点2、3、4、5、6同样存在。

二、 利用Sybase的unload与rebuild工具进行处理
推荐程度:★★★
适用平台:Sybase ASA(SQL Anywher)
在Sybase ASA(SQL Anywher)中,提供了unload database 与rebuild database工具。它们的原理是将旧数据库的对象(包括表、视图、索引、触发器、规则、默认等所有对象),以数据表为单位,卸载到硬盘的一个个文件中,并且形成一个可以用来重建此完整数据库其他对象的的一个REBUILD.SQL文件。通过这个REBULD.SQL文件,可以从一个新的空数据库,重建一个与旧库内容一模一样的新库。
这两个工具可以在以下两个地方运行:
1、 打开ISQL,按Ctrl-4,选择unload database或rebuild database。
2、 打开Sybase SQL Central,在左窗格选择Sybase SQL Anywere — Utilities,然后在右窗格选择执行 Unload database 或rebuild database即可。
优点:
1、 完整的数据迁移特性。
2、 和它们比较快捷的执行速度。
3、 较高的稳定性。
点评:
这两个工具的区别只在于前者只进行了卸载,而后者卸载数据后马上为你重新建立了一个新库。一般情况下,只需要运行rebuild database 工具即可。但在实际使用过程中发现,有时,在卸载后重新装载的过程中,由于数据原因可能会产生错误而中止执行。这时应当记下错误行号,事后打开rebuild.sql文件,找到这一行,手工修改正确再只执行rebuild.sql即可。一般的错误只有表LSBBZD(含历史年此表),由于导出的列定义中包含了非法字符,修正或去除就行了。
总的来说,这个工具对于重建我们的单机版数据库是不可或缺的。特别是长时间运行导致单机版数据库异常增大,需要减肥时。

三、 利用DOS下的bulk copy命令进行处理
推荐程度:★★★
适用平台:Sybase ASE、MS SQL Server
BCP是一个在早期SQL SERVER中就已经采用的,运行于DOS命令行下的一个数据迁移工具。它可以对数据库中的表或视图进行迁出迁入处理。使用这种方法进行数据迁移,随着图形化界面的日益普及,特别是MS SQL Server,已不再推荐使用。但它的诸多优点还是被不少优秀的管理员所采用。

完整语法:
bcp [[database_name.]owner.]table_name[:slice_number] {in | out} datafile
[-m maxerrors] [-f formatfile] [-e errfile]
[-F firstrow] [-L lastrow] [-b batchsize]
[-n] [-c] [-t field_terminator] [-r row_terminator]
[-U username] [-P password] [-I interfaces_file] [-S server]
[-a display_charset] [-q datafile_charset] [-z language] [-v]
[-A packet size] [-J client character set]
[-T text or image size] [-E] [-g id_start_value] [-N] [-X]
[-M LabelName LabelValue] [-labeled]
[-K keytab_file] [-R remote_server_principal]
[-V [security_options]] [-Z security_mechanism]
其实,我们只需要掌握简单的几个参数就可以进行操作。
迁出数据:简单命令举例
bcp cwbase1.lc0019999.ZWKMZD out C:\DATA\ZWKMZD –c –Usa –Ppassword
或 bcp cwbase1..ZWKMZD out C:\DATA\ZWKMZD –c –Ulc0019999 -Ppassword
迁入数据:简单命令举例(只需要将上面语句中的“out”换成“in”)
bcp cwbase1.lc0019999.ZWKMZD in C:\DATA\ZWKMZD –c –Usa –Ppassword
或 bcp cwbase1..ZWKMZD in C:\DATA\ZWKMZD –c –Ulc0019999 -Ppassword
批量数据处理:简单命令举例
1) 在ISQL或WISQL 或WISQL32 或 SQL Advantage 或查询分析器中,联接要迁出的数据库,执行下面的一个SQL语句:
select “BCP cwbase1.lc0019999.” + name + ” out ” + name + “.txt -Ulc0019999 -Ppassword -Ssybase -c” from sysobjects where type = “U” and name like “XS%” order by name
2) 返回的结果集就是一组完整的BCP迁出语句命令集。将结果保存为OUT_XS.BAT。
3) 在DOS命令提示符下,执行OUT_XS.BAT,即可将sybase服务实例上,数据库cwbase1中,所有以“XS”打头的表(不含视图等内容),全部迁出为对应的同名文本文件。
4) 需要迁入某一个数据库时,只需要将上面的in改为out,将返回结果另存为in_xs.bat,执行in_xs.bat即可将数据迁入新的数据库:
select “BCP cwbase1.lc0019999.” + name + ” in ” + name + “.txt -Ulc0019999 -Ppassword -Ssybase -c” from sysobjects where type = “U” and name like “XS%” order by name

优点分析:
1、 运行性能好;
2、 系统开销小;
3、 占用内存少;
4、 执行速度快;
5、 可以编写脚本,进行批量处理。
6、 运行参数较多,配置预先写好的脚本,可以进行比较复杂的操作。
7、 可以对视图数据进行操作。
8、 数据迁入时,不清除表中或视图中原有数据,可以分批追加一部分数据。
缺点分析:
1、 非图形化操作界面,需要在DOS命令行操作,许多人嫌它麻烦。
2、 参数众多,不容易完全掌握。
3、 不能够自动创建目的库中不存在的新表。
4、 数据迁入时,不清除表中或视图中原有数据,重复迁入时可能会因索引不唯一造成数据无法迁入。需要手工预先清理。

四、 在SQL工具中进行处理
推荐程度:★★★
适用平台:Sybase ASE、MS SQL Server
在ISQL、SQL Advantage、查询分析器等实用工具中,直接对数据库表进行处理。以其灵活多样的操作和快捷的速度也赢得了不少用户的倾心。

语法一:
select 列名1, 列名2, 列名3列名4,……
into 新表名
from 库名.属主名.旧表名
where 查询条件
group by 分组方式 having 子条件
order by 排序方式
……
此法适用于将数据迁移到一个新表中,事先新表须不存在。

语法二:
insert into database.owner.TargetTableName
(column1, column 2, column 3,……)
select column 1, column 2, column 3,……
from database.owner.SourceTableName
where condition
group_by_clause having_clause
order_by_clause
……
此法适用于将数据迁移到一个已有的旧表中,事先新表须已经存在。

优点分析:
1、 在绝大多数数据库应用的客户机上,都装有这些工具,信手拈来。
2、 SQL select 语句的绝大部分灵活多变的语法都能够适用于此,灵活、方便。
3、 由数据库服务器来执行,速度非常快、执行效率高。
4、 通过预先建立脚本,可以比较快速地完成数据库表格的迁移。
5、 可以在一个服务器实例上,跨数据库进行数据的迁移。比如,从cwbase1迁移到cwbase2。
缺点分析:
1、 只能在同一个服务实例上的数据库之间运行,更不能跨服务器执行。

五、 通过PowerBuilder工具进行处理

推荐程度:★★★
适用平台:常见大型数据库,以及支持ODBC、DAO、ADO、DataDirect、OLE、Merant OEM和提供专用接口的所有数据库平台
作为一款专业的数据库应用开发工具,PowerBuilder无疑是一款重量级的工具。特别是它在数据窗口的表现能力上,绝对是业内首屈一指的行家里手。它的数据管道技术,更是在众多的数据库平台之间,架起了一条条直通的传输管道。使用它,能够实现譬如DBFàSybase、AccessàSQL Anywhere、Sybase ASEàOracle、ParadoxàMS SQL Server、…… 在异种数据库平台之间迁移数据,如履平地。在同类数据库平台之间的数据迁移,更是易如反掌。PowerBuilder的数据管道工具,凭借其灵活多样的设置参数,成为系统管理员的理想帮手。
方法:
1、 打开“DB Profile”画笔,配置源数据库DB1、目的数据库DB2。
2、 打开“Pipeline”画笔,点击“New”按钮,新建一个管道。
3、 在“Database Connections” 里,分别指定源数据库DB1和目标数据库DB2。
4、 指定要进行迁移的表,以及要处理的列(一般处理所有列)。
5、 修正目标库中的目的表名,索引名;在“Option”中调整处理方式(新建表、覆盖表、清理并插入行、插入行、更新并插入行),在“Max Errors”中设置容错行数,在“Commit”中设置每多少行向数据库提交一次。
6、 点击“Execute”按钮,开始执行本次定义的数据管道。
7、 如果你希望进行更为高级的设计,可以点击“Data Source”按钮,进行更为详细的复杂的的定义。在这里,你可以定义要处理的源数据的选择条件、排序方式、分组处理、分组归集、数据计算,还可以修改数据源、定义多表操作、表间连接、数据获取参数等。
优点分析:
1、 适用于几乎所有的数据库平台,比如Sybase ASA、Sybase ASE、MS SQL Server、Oracle、Access、FoxPro、Paradox等支持DAO、ODBC、ADO的所有数据库。
2、 支持数据的跨平台迁移。
3、 默认会自动避免覆盖目的表,安全性较好,不易出错。
4、 可以只迁移数据,也可以包括结构,新建数据表。
5、 可以实时监控迁移进度。
缺点分析:
1、 必须安装PowerBuilder及数据库接口程序。
2、 如果源数据库要拷贝的表有外键,注意移动的顺序,有时要分批移动,否则外键主键,索引可能丢失。
3、 只能迁移数据表。不能迁移用户登录、触发器、存储过程等其他内容。

六、 通过微软数据库转换服务设计器进行处理
推荐程度:★★★★★
适用平台:支持ODBC、DAO、ADO、DataDirect、OLE、Merant OEM及提供专用接口的所有数据库平台
DTS的设计器功能强大,支持多任务,也是可视化界面,容易操作,但知道的人一般不多,如果只是进行SQL Server数据库中部分表的移动,用这种方法最好,当然,也可以进行全部表的移动。
方法:
在SQL Server企业管理器中,展开服务器左边的+,选择数据库,右击,选择All tasks/Import Data…(或All tasks/Export Data…),进入向导模式,按提示一步一步走就行了,里面分得很细,可以灵活的在不同数据源之间复制数据,很方便的。而且可以另存成DTS包,如果以后还有相同的复制任务,直接运行DTS包就行,省时省力。也可以直接打开DTS设计器,方法是展开服务器名称下面的Data Transformation Services,选Local Packages,在右边的窗口中右击,选New Package,就打开了DTS设计器。

优点分析:
1、 适用于几乎所有的数据库平台,比如Sybase ASA、Sybase ASE、MS SQL Server、Oracle、Access、FoxPro、Paradox等支持DAO、ODBC、ADO的所有数据库。
2、 支持数据的跨平台迁移。
3、 程序会自动寻找同名的表名、列名,自动进行配对处理。在很大程度上减少了手工的操作量。
4、 可以只迁移数据,也可以包括结构,新建数据表。
缺点分析:
1、 必须找一台机器装上MS SQL Server,并且运行数据库转换服务,再与源库和目的库进行联通。
2、 如果源数据库要拷贝的表有外键,注意移动的顺序,有时要分批移动,否则外键主键,索引可能丢失,移动的时候选项旁边的提示说的很明白,或者一次性的复制到目标数据库中,再重新建立外键,主键,索引。
3、 只能迁移数据表。不能迁移用户登录、触发器、存储过程等其他内容。

七、 使用数据库的备份恢复功能进行处理
推荐程度:★★★★
本方法与数据库平台有密切的关系,各个数据库平台之间的方法不尽一致。但同一平台的各个版本之间基本上是一样的。

方法一:
适用平台:Sybase ASA
备份:
打开ISQL,按Ctrl-4,选择“Compress Database”。
或者进入Sybase Central,在左侧资源区找到Sybase SQL Anywhere — Utilities,在右侧双击”Compress Database”。
1、 输入要保存的压缩库文件名,默认为*.cdb。
2、 再点击“完成”,软件就会自动开始备份。
恢复:
打开ISQL,按Ctrl-4,选择“Uncompress Database”。
或者进入Sybase Central,在左侧资源区找到Sybase SQL Anywhere — Utilities,在右侧双击”Uncompress Database”。
1、 输入要调用的压缩库文件名,默认为*.cdb。
2、 输入解开后的数据库文件名(可任意起名)。
3、 再点击“完成”,软件就会自动开始恢复。

方法二:
适用平台:Sybase ASE
备份:
1、 打开ISQL,或WISQL,或WISQL32,或SQL Advantage。
2、 输入帐号和密码,联接到相应的数据库。
3、 使用语句转储。语法:
dump database database_name
to stripe_device [at backup_server_name] [file = file_name]
[stripe on stripe_device [at backup_server_name] [file = file_name]]
[[stripe on stripe_device [at backup_server_name] [file = file_name]]…]
[with {[…] [noinit | init]} ]
4、 示例:
a) 对于OpenVMS,
向磁带设备转储:dump database cwbase1 to “MTA0:”
b) 对于UNIX,
向磁带设备转储:dump database cwbase1 to “/dev/nrmt0”
c) WindowsNT,
向磁带设备转储:dump database cwbase1 to tapedump1
向系统设备转储:dump database cwbase1 to cwbase1_dump
向备份文件转储:dump database cwbase1 to “d:\dump\cw1_20030310.dup”
恢复:
1、 打开ISQL,或WISQL,或WISQL32,或SQL Advantage。
2、 输入管理员帐号和密码,登录到相应的数据库master,断开目的库的所有联接。
3、 使用语句进行恢复。语法:
load database database_name
from stripe_device [at backup_server_name] [file = file_name]
[stripe on stripe_device [at backup_server_name] [file = file_name]]
[[stripe on stripe_device [at backup_server_name] [file = file_name]]…]
[with {listonly[=full], headeronly,} ]
4、 执行online database database_name命令
5、 示例
a) 对于OpenVMS,
从磁带设备恢复:load database cwbase1 from “MTA0:”
b) 对于UNIX,
从磁带设备恢复:load database cwbase1 from “/dev/nrmt0”
c) WindowsNT,
从磁带设备恢复:load database cwbase1 from tapedump1
从系统设备恢复:load database cwbase1 from cwbase1_dump
从备份文件恢复:load database cwbase1 from “d:\dump\cw1_20030310.dup”
1、 说明:在恢复时,使用listonly/headeronly选项,可以在不装载备份设备的情况下,查看备份设备的备份时间、设备大小等许多信息,指导目标数据库的建立。
2、 对于版本10到11,online database过程可以同时完成数据库版本的升级。
3、 对转出设备可以进一步压缩,以减少空间占用(大约能压缩到10%-17%),方便存储。

方法三:
适用平台:MS SQL Server
先对源数据库进行完全备份,备份到一个设备(device)上,然后把备份文件复制到目的服务器上(恢复的速度快),进行数据库的恢复操作,在恢复的数据库名中填上源数据库的名字(名字必须相同),选择强制型恢复(可以覆盖以前数据库的选项),在选择从设备中进行恢复,浏览时选中备份的文件就行了。

优点分析:
1、 这种方法可以完全恢复数据库,包括数据表、视图、外键、主键、索引、触发器、存储过程、规则、默认等所有数据库对象。
2、 对于系统管理员来说,迁移过程简单快捷,易于掌握。
3、 可以利用脚本,使得工作更加方便。
缺点分析:
1、 在用户定义事务中不能使用dump database。
2、 若使用磁带,Sybase转储文件不能与其他文件保存在同一磁带上。
3、 不能装载版本10以下的备份设备。

八、 利用SQL SERVER的复制功能进行处理
推荐程度:★★★
适用平台: Sybase ASA、Sybase ASE、MS SQL Server
对于这三种数据库平台,都有相对应的复制服务器软件版本。具体的设置应用,请参考相关资料。值得注意的是要想成功进行数据的复制工作,有些条件是必不可少的:
1、 Remote Server 或SQL Server Agent必须启动,MSDTC必须启动。
2、 所有要复制的表必须有主键。
3、 如果表中有text或image数据类型,必须使用with log选项,不能使用with no_log选项。max text repl size选项控制可以复制的文本和图像数据的最大规模,超过这个限制的操作将失败。
4、 在要进行复制的计算机上,应该至少是隐含共享,即共享名是C$或D$…。
5、 为SQL Server代理使用的Windows NT帐号不能是一个本地的系统帐号,因为本地的系统帐号不允许网络存取。
6、 如果参与复制的服务器在另外的计算机域中,必须在这些域之间建立信任关系。
优点分析:
1、 数据复制功能强大。
2、 日常数据转储量较小。
3、 通过设置,实时性较强。
4、 可以实现定时迁移。
5、 可实现远程数据传输。
缺点分析:
1、 设置较为复杂,不易掌握。
2、 运行不太稳定,二次维护量较大。

九、 直接拷贝数据库物理文件
推荐程度:★★★★★
直接拷贝数据库的方法简便易行,受到了许多低端用户的喜爱。由于他的快捷特性,在一些中高端用户中也受到了一定程度的青睐。

方法一:
适用平台:Sybase ASA
1、 将源数据库文件*.db和日志文件*.log复制出来。
2、 拷贝到目的路径下。
3、 如果没有log日志文件,则直接用浪潮软件联接数据库即可使用;如果有log日志文件,则可以用Sybase Central或ISQL或dblog等工具修正db数据库的日志文件或去掉日志文件后使用。

方法二:
适用平台:Sybase ASE
1、 在目的服务器上建立一个与源数据库大小规模完全一样的一个目的数据库。
2、 关闭目的服务器上的Sybase服务,用源数据库的物理文件,替换目的数据库文件。一般包含库文件和日志文件共两个文件,二者缺一不可。如cwbase1.dat、cwlog1.dat。

方法三:
适用平台:MS SQL Server
把数据库的数据文件(*.mdf)和日志文件(*.ldf)都拷贝到目的服务器,在SQL Server Query Analyzer中用语句进行恢复:
EXEC sp_attach_db @dbname = “test”, s
@filename1 = “d:\mssql7\data\test_data.mdf”,
@filename2 = “d:\mssql7\data\test_log.ldf”
这样就把test数据库附加到SQL Server中,可以照常使用。如果不想用原来的日志文件,可以用如下的命令:
EXEC sp_detach_db @dbname = “test”
EXEC sp_attach_single_file_db @dbname = “test”,
@physname = “d:\mssql7\data\test_data.mdf”
这个语句的作用是仅仅加载数据文件,日志文件可以由SQL Server数据库自动添加,但是原来的日志文件中记录的数据就丢失了。

优点分析:
1、 操作方便,速度快捷。
2、 数据库非常完整,基本没有损失。
缺点分析:
1、 除ASA外,由于ASE和MS SQL Server新创建的数据库中,lc00?9999、ad00?9999对应的系统ID号与原库会发生不一致,需要对此进行必要的修正。
2、 备份内容占用硬盘空间太大。

教你一手:
在迁移整个数据库系统,如更换服务器时,归好能够将系统库(如Sybase ASE中的master、tempdb、cwmaster等数据库)设备所在的文件一起拷贝出来。这样只需要安装Sybase服务并进行少量的调整,一般不需要重新安装应用数据库,只要将系统库和应用库文件拷贝过来,就可以直接进行浪潮软件的应用。

数据库的迁移方法多种多样。比如利用Sybase ASE、SQL Server数据库系统的升级工具进行数据迁移等等,还有Oracle的导入导出、冷热备份与恢复等等,基本上也都可以看作是以上各种方法的变通使用。限于篇幅,不再详细介绍。

通过对以上几种数据库迁移方法的介绍,希望能够为我们的软件系统管理员,提供一点思路。在需要进行数据迁移时,能够选择最为方便快捷的方式方法,对我们的应用数据进行传输处理,以最快的速度恢复日常的应用工作,更为有效地降低我们的应用数据遭受意外灾害时的损失。

原创文章,转载请注明: 转载自浪潮888博客

本文链接地址: 浪潮软件支持软件的几种数据备份的方法比较分析

文章的脚注信息由WordPress的wp-posturl插件自动生成



This entry was posted in 浪潮文档. Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>