存档
将生产环境中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文件。
linux x86 平台上的 ASE15.5 的 dat文件,拷贝到windows x86 平台上的ASE15.5中,是可以使用的。
只需要简单的修改master.dat中的device路径即可。 通过更改sysdevices的phyname来实现。
将sysdatabases系统表中status - 64
之后, 利用dbcc checkdb,dbcc checkalloc,dbcc checkcatalog 检查各个数据库。 没有错误。
说明: linux平台和windows平台的dat文件是通用的。 迁移时只拷贝数据库设备文件就能完成。
因为linux x86/x64以及windows都是小字节序(little endian)的,理论上linux x86及windows平台上的设备文件是可以通用的。
上面说的方法建议通过Sybase官方的做法:
quiesce database
mount database
已在solaris10,ASE12.5.2下用资源文件resource_files新建了一个4k的sybase服务器。测试该方法通过!
不过在windows下没有这个命令srvbuildres,相类似的命令工具为sybatch,况且windows下还要配置注册表信息才能启动服务除非你想每次都通过RUN_servername来启动!
本指南实际为本人两篇文章的合集,分为安装和迁移两大部分
第一部分:在无GUI环境下安装sybase for linux 12.5.0.1
通常我们建立sybase for linux数据库服务器的时候,都是执行asecfg来建立数据
库,但是这种方式是需要在
服务器上安装X的,即使是通过X FORWARD的方式来操作,也至少需要安装上X
lib。在许多时候下,我们都希望
在服务器上安装的软件包越精越好,即只需要在console环境下就能建立好我们所
需要的服务器。
sybase for linux 就提供了这样一套无需任何X软件包的数据库建立工具---
srvbuildres,它通过读取资源文件
来完成基于console的数据库建立工作。
一 安装rpm包
rpm -ivh --nodeps <rpm包名>
二 激活sybase帐号
passwd sybase
三 设置内核参数
echo $( expr <你的内存容量(以MB为单位)> \* 1024 \* 1024 ) >
/proc/sys/kernel/shmmax
echo "kernel.shmmax = "$( expr <你的内存容量(以MB为单位)> \* 1024 \*
1024 ) >> /etc/sysctl.conf
echo "本机ip hostname" >> /etc/hosts
四 创建数据库服务器和备份服务器
以sybase帐号登录
cp ~/ASE/init/sample_resource_files/srvbuild.adaptive_server.rs ~/server.rs
cp ~/ASE/init/sample_resource_files/srvbuild.backup_server.rs ~/backup.rs
编辑 server.rs
sybinit.release_directory: USE_DEFAULT
sybinit.product: sqlsrv
sqlsrv.server_name: kbibm_ase <--- 填入你所准备起的数据库服务器名称, 这里是我的数据库服务器名字
sqlsrv.new_config: yes
sqlsrv.do_add_server: yes
sqlsrv.network_protocol_list: TCP
sqlsrv.network_hostname_list: <--- 填入数据库服务器所在主机的主机名
sqlsrv.network_port_list: <---端口号
sqlsrv.server_page_size: USE_DEFAULT
sqlsrv.force_buildmaster: no
sqlsrv.master_device_physical_name: /opt/sybase-12.5/data/master.dat
<--- 设定master文件所在位置
sqlsrv.master_device_size: 100 <--- size以MB为单位,这里建立100MB大小的
设备文件。
sqlsrv.master_database_size: 90 〈--- master_database 的size 至少要小于
master_device 7MB,所以这里填90MB
sqlsrv.errorlog: USE_DEFAULT
sqlsrv.do_upgrade: no
sqlsrv.sybsystemprocs_device_physical_name:
/opt/sybase-12.5/data/systemprocs.dat
sqlsrv.sybsystemprocs_device_size: 200 <--- 建立200MB大小的systemprocs设
备文件
sqlsrv.sybsystemprocs_database_size: 200
sqlsrv.sybsystemdb_device_physical_name:
/opt/sybase-12.5/data/sybsystemdb.dat
sqlsrv.sybsystemdb_device_size: 200 <--- 建立200MB大小的sybsystempdb设备文件
sqlsrv.sybsystemdb_database_size: 200
sqlsrv.default_backup_server: kbibm_bak <--- 填入你所准备建立的备份数据库名
备份服务器的rs文件也按此方式进行修改
五 执行srvbuildres来建立数据库
$SYBASE/ASE/bin/srvbuildres -s $SYBASE -r <rs文件>
六 建立sqlloc.rs来设置本地化
sybinit.release_directory: USE_DEFAULT
sqlsrv.server_name: kbibm_ase
sqlsrv.sa_login: sa
sqlsrv.sa_password: serverj
sqlsrv.default_language: us_english
sqlsrv.language_install_list: us_english
sqlsrv.language_remove_list: USE_DEFAULT
sqlsrv.default_characterset: cp850
sqlsrv.characterset_install_list: cp850
sqlsrv.characterset_remove_list: USE_DEFAULT
sqlsrv.sort_order: binary
执行$SYBASE/ASE/bin/sqlloc sqlloc.rs 设置locale
七 由于/etc/init.d/sybase中有两处存在bug,所以我们要修改它
将SYBASE_ASE=`basename $SYBASE/ASE*` 改为 SYBASE_ASE=`basename $SYBASE/ASE`
将SYBASE_OCS=`basename $SYBASE/OCS*` 改为 SYBASE_OCS=`basename $SYBASE/OCS`
否则将不能正常启动sybase
八 /etc/init.d/sybase restart
现在我们就可以用 isql -U sa -P -S <数据库服务器名> 登录进去了。
以上步骤在redhat 7.3 上操作通过。
SYBASE ASE12.5以上版本升级到ASE15的第三种办法
SYBASE公司的产品Adapter Server目前最新的版本是ASE15.0.2,如何将原有的ASE12.5上的数据库升级到ASE15上?以前常用的方法有如下两种:
1.upgrade
2.dump/load
以上两种办法的具体实现方式可参考相关资料,ASE15目前提供了第三种升级的办法,主要是将数据库设备文件使用操作系统命令直接拷贝到升级的新平台。这种办法应该是速度最快的一种,而且Adapter Server的down机时间最短。但前提条件是源和目标均为同种操作系统平台,源和目标server页大小、语言和字符集均要相同,其中源必须是ASE12.5以上的版本。本文具体介绍第三种升级的办法。
假设源Adapter Server名为ase125, 目标Adapter Server名为ase15。可以分别在不同机器上 ,也可以在同一台机器上。
具体升级实现步骤如下:
1.在源Adapter Server上查找数据库所在的设备情况,记住设备逻辑名和所在物理位置。
H:\>isql -Usa -P -Sase125 -w2000
1> sp_helpdb testdb
2> go
1> sp_helpdevice dev1
2> go
1> sp_helpdevice log1
2> go
……
dev1 /data/dev1.dat
log1 /data/log1.dat
……
2.在源Adapter Server上静默数据库,产生一个清单。静默后的数据库就只能提供查询不能增/改/删了
H:\>isql -Usa -P -Sase125 -w2000
1>quiesce database for_upgrd hold testdb for external dump
2>to “/data/testdb_manifest.mfst” with override
3>go
3.将三个文件(/data/dev1.dat、/data/log1.dat、/data/testdb_manifest.mfst)用操作系统命令拷到目标机器(如拷入“/opt/”下)。如果源和目标在同一台机器上,该步不用。
4.现在在源Adapter Server上可以取消静默或直接删除源Adapter Server了。如果源和目标在同一台NT机器上的话,在保留三个文件的基础上可卸载ASE125后,再安装新的ASE15
H:\>isql -Usa -P -Sase125 -w2000
1>quiesce database for_upgrd release
2>go
5.以后的操作都在目标server上,先登记清单,后映射设备,注意设备逻辑名必须与源server一致,物理路径可不同。
H:\>isql -Usa -P -Sase15 -w2000
1>mount database all from “/opt/ testdb_manifest.mfst” with listonly
2>go
1>mount database all from “/opt/ testdb_manifest.mfst” using
2>“/opt/dev1.dat” = “dev1” ,
3>“/opt/log1.dat” =“log1”
4>go
1>use testdb
2>go
6.至此我们就完成了将ASE12.5升级到ASE15的工作。在系统空闲时还可以进行一些后续工作,如:重建索引、更新统计值、dbcc检查等。
这种办法除了可用于升级,还可用于单个数据库在相同操作系统平台下的不同Adapter Server之间迁移。
一个sybase工程师提供的方法!