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