大家好,还是楼主我,以下是我能找到的恢复方法,大家看可行吗?
将生产环境中AIX5.3平台上的Sybase ASE12.5.2迁移到备机作测试用,下面简单记录下主要步骤。 环境: Sybase ASE version: 12.5.2 32bit OS Version: AIX 5.3 $SYBASE: /home/syb123 Instance name: TEST database name: testdb 备机上建立好了与主机相同的vg与lv
主要步骤: 1.将主机上的目录/home/syb123打包,拷贝到备机,解开tar包到备机的相同目录下。删除备机/home/syb123下的interfaces文件。 2.修改资源文件resource file中的实例名(srvbuild.server_name),主机名(srvbuild.network_hostname_list)等信息。主要有3个rs文件: syb_dataserver.rs,syb_backupserver.rs,syb_sqlloc.rs 3.新建Sybase ASE实例。执行: srvbuildres -r /home/syb123/syb_dataserver.rs 在新建实例的过程中,因为异步IO没有开启,报错Symbol resolution failed for /usr/ccs/lib/libc.a[aio_64.o] 。解决方法见: AIX上未启动异步IO导致Sybase服务创建失败 4.配置字符集roman8。 源数据库的字符集为roman8,使用资源文件配置新建的备机上的字符集为roman8、排序规则为:bin_roman8。unix/linux环境上新建的实例默认没有安装bin_roman8这个排序规则,需要手动添加: cd /home/syb123/charsets/roman8 charset -Usa -P -STEST binary.srt roman8
然后在执行:srvbuildres -r /home/syb123/syb_sqlloc.rs 来修改实例的默认字符集和排序规则。 5.新建备份服务 srvbuildres -r /home/syb123/syb_backupserver.rs 6.从源实例中导出disk init脚本 使用下面的SQL语句能够导出: select 'disk init name="'+name+'",physname="'+phyname+'",size="'+convert(varchar,convert(int,(high-low+1)*2.0/1024.0))+'M"'+char(10)+'go' from master.dbo.sysdevices
where low/power(2,24)>0
go
7.导出create database语句 使用ddlgen导出源实例中用户数据库的create database语句。 /home/syb123/ASEP/bin/ddlgen -Usa -P -STEST -TDB -Ntestdb -O./ddlgen-testdb.sql 从上面的输出文件ddlgen-testdb.sql中将create database命令提取出来,加上for load选项。类似如下的命令: create database test on ..... log on ...... for load go
8.在备机上上初始化设备和创建用户数据库 在执行disk init命令先配置参数: number of devices, sp_configure "number of devices",50 go 然后分别执行上面得到的disk init命令来初始化Sybase逻辑设备,执行create database来创建用户数据库以备恢复用。 在create database命令中加入for load选项,能够提高创建库的速度,因为不需要将逻辑设备上的页面清空。 9.恢复源数据库 在备机上恢复从主机上拷贝过来的testdb数据库的备份。 load database testdb from '/syb_backup/testdb20110920.dump' go
在主机上备份数据库testdb的时候,加入了压缩选项:compress=4。在恢复的时候不需要加入压缩选项,sybase备份服务器能够自动识别压缩级别。这点还是挺方便的! 10.增加临时数据库tempdb的空间 alter database tempdb on tempdb_data01='4000m' 11.在备机将数据库testdb的属主有sa改为syb use testdb go sp_changedbowner syb go
12.重建登录、角色、用户信息 因为主机与备机是相同的平台,可以直接导出源实例master数据库中系统表的数据。从源实例中导出下面4张系统表的数据。 syslogins,sysloginroles,sysroles,sysusers 在备机上导入: 先开启选项:allow updates to system catalog。sp_configure "allow updates",1 导入4张系统表的数据,只追加新添加的登录、用户信息。 bcp master.dbo.syslogins in ./syslogins-20110920.bcpout -c -Usa -P -STEST -t~# -b1 bcp master.dbo.sysloginroles in ./sysloginroles-20110920.bcpout -c -Usa -P -STEST -t~# -b1 bcp master.dbo.sysroles in ./sysroles-20110920.bcpout -c -Usa -P -STEST -t~# -b1 bcp master.dbo.sysusers in ./sysusers-20110920.bcpout -c -Usa -P -STEST -t~# -b1
13.配置用户数据库testdb的options use master go sp_dboption testdb,'select into',true go sp_dboption testdb,'trunc',true go use testdb go checkpoint go
14.配置备机的参数 如果备机与主机环境相同的话,可以将主机上的<servername>.cfg直接拷贝到备机。否则,根据主机的cfg文件适当调整sybase ase的参数。 15.备份master数据库、导出几张重要系统表的数据 初始化设备、新建数据库,添加登录等操作后,要及时备份master数据库。最好对几张重要的系统表再做一次备份。使用bcp导出系统表sysusages,sysdatabases,sysdevices,syslogins,sysloginroles,sysroles,sysusers。
|