天天看點

AIX平台上Sybase ASE資料庫遷移步驟

将生産環境中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。