此文档定位于帮助大家对tsm、tsmapi(adsmpipe接口)、Sybase、Sybaseapi有一个大体的了解,并让其能简单地搭建起基于tsm的sybaseDB备份平台。鉴于Sybase15.5已内置了TSM接口,本文仅针对Sybase15.5版本以下产品(包含Sybase安装过程和一些基本Sybase操作步骤),水平有限,呈请指正!
1. 系统布署及硬件环境
服务器1:
服务器主机名: sybase
操作系统:rhel4_u3
IP地址:10.1.1.101
角色:sybase server、tsm client(本来是应该用三个系统来做的,三个系统分别架设sybase,tsm client,tsm server,但由于我的Thinkpad太弱,所以我这里就偷懒了,只用了两个系统来模拟实验,把sybase server和tsm client装在同一个系统上)
sybase服务器名:sybase
sybase用户名:sa
sa用户密码:空
服务器2:
服务器主机名:tsm
操作系统:rhel4_u3
Ip地址:10.1.1.102
角色:tsm server
tsm服务器名:tsm
tsm管理员帐号:admin
tsm管理员密码:admin
tsm客户端帐号:sybase
sybase用户密码:123456
相关命令:
修改主机名必须修改两个文件
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=sybase
vi /etc/hosts
10.1.1.207 windowvm
10.1.1.102 tsm
10.1.1.101 localhost
查看操作系统版本为
cat /etc/redhat-release
修改ip地址
2.安装包准备
TSM需要以下几个包:
TSM Client Linux 5.3.4.iso
TSM Server Linux 5.3.2.0.iso
adsmpipe.tar.gz(内含四个文件adsmblib.c、adsmpipe.c、Makefile、README)
Sybase需要以下几个包:
ase1254linux32.rar
sybaseapi.tar.gz(内含两个文件libpipe.c sybackup.h)
安装包说明:
TSM Client Linux 5.3.4.iso是tsm client端的光盘镜像文件,其中tsm client里面又包含很多个安装包,但我们需要安装的只有那么几个rpm包
TIVsm-API.i386.rpm ----tsm client的应用程序接口包
TIVsm-BA.i386.rpm ----tsm client的备份管理员包(包图形和字符两种界面)
TIVsm-msg.es_ES.i386.rpm ----语言包(英文english)
TSM Server Linux 5.3.2.0.iso是tsm server端的光盘镜像文件
adsmpipe是IBM提供一个小工具,用来备份数据流(一个向tsm读写数据流的工具),adsmpipe.tar.gz里面包含的是他的源代码
ase1254linux32.rar里面包含的则是sybase Adaptive Server Enterprise的安装包
sybaseapi.tar.gz包含的是sybase api的源代码,编译后生成的工具用于截获dump数据流
3.安装、配置并测试tsm server、tsm client、tsm api
安装
安装tsm server(tsm主机)
安装前准备
先检查系统上原来有没装过tsm server软件,如果有的话,用rpm –e命令卸载
[root@tsm ~]# rpm -qa|grep TIV
确认没安装后,再挂载你的iso镜像文件TSM Server Linux 5.3.2.0.iso
安装tsm server
mount /dev/cdrom
cd /media/cdrecorder/
正式安装(其下省略N张图)
[root@tsm cdrecorder]# ./install_server
安装tsm client
安装前准备
先检查系统上原来有没装过tsm client软件,如果有的话,用rpm –e命令卸载,命令方式同上,我就不再多说,请参考上边tsm server安装命令及内容
确认没安装后,再挂载你的光盘镜像文件TSM Client Linux 5.3.4.iso,命令同上
这里给出的包有很多,但我们只需要安装TIVsm-API.i386.rpm、TIVsm-BA.i386.rpm、TIVsm-msg.es_ES.i386.rpm,上面已经解释过各个包的作用,在这里我就不再赘述
正式安装
[root@sybase linux86]# rpm -ivh TIVsm-API.i386.rpm
[root@sybase linux86]# rpm -ivh TIVsm-BA.i386.rpm
[root@sybase linux86]# rpm -ivh TIVsm-msg.es_ES.i386.rpm
安装完成后,会发现在/opt下面多了tsm client的文件
[root@sybase ~]# ls /opt/tivoli/tsm/
安装tsmpipe
安装前准备
创建放置相关软件所需目录/software
[root@sybase ~]# mkdir /software
上传adsmpipe文件夹到/software,上传方法留待用户自己解决(例如cuteftp,winscp等软件都可以),上传完成后,可以发现/software下面多了以下文件
正式安装
修改Makefile,添加编译过程中所需共享对象文件所在位置,如果设定错误,会出现类似”文件找不到”此类错误,当然,这一步要在安装完客户端之后才能去做,否则一样会报错,错误内容类似为:
cc -g -I /opt/tivoli/tsm/client/api/bin/sample -c -o adsmpipe.o adsmpipe.c
adsmpipe.c:22:19: dsmrc.h: No such file or directory
adsmpipe.c:23:22: dsmapitd.h: No such file or directory
adsmpipe.c:24:22: dsmapifp.h: No such file or directory
adsmpipe.c: In function `main':
adsmpipe.c:130: error: `int16' undeclared (first use in this function)
adsmpipe.c:130: error: (Each undeclared identifier is reported only once
adsmpipe.c:130: error: for each function it appears in.)
adsmpipe.c:130: error: syntax error before "rc"
adsmpipe.c:209: error: `rc' undeclared (first use in this function)
make: *** [adsmpipe.o] Error 1
如果你按我以上的步骤去配置的话,编译应该是没有什么问题的
[root@sybase software]# cd adsmpipe/
[root@sybase adsmpipe]# vi Makefile将CFLAGS修改为
CFLAGS=-g -I /opt/tivoli/tsm/client/api/bin/sample
[root@sybase adsmpipe]# make
编译完后,会发现原目录先多出了一个可执行文件adsmpipe
为方便执行,把它复制到$PATH目录下面,这样以后直接敲入adsmpipe命令就可以执行,我把它复制到/usr/bin,此处没有硬性要求我们一定要复制到哪里,只要目标目录在$PATH目录下就行
[root@sybase adsmpipe]# echo $PATH
测试一下看能否运行
[root@sybase ~]# adsmpipe
配置
配置tsm server
修改dsmserv.opt
[root@tsm ~]# cd /opt/tivoli/tsm/server/bin/
[root@tsm bin]# vi dsmserv.opt
在原文件内容上添加以下两行:
COMMMETHOD HTTP 添加http支持
HTTPPORT 1580 http支持的端口号
[root@tsm bin]# cat dsmserv.opt
配置
配置tsm server
启动tsm server
[root@tsm bin]# ./dsmserv
启动起来后,首先修改servername为tsm
TSM:SERVER1>
set servername tsm
设置tsm的存储结构
定义设备类
注意,在定义设备类之前,必须先建立设备类中使用文件的目录,这里为/tmp/pool,即/tmp/pool文件夹必须预先存在,否则会是这种情况
[root@tsm ~]# mkdir -p /tmp/pool
使用define devclass来定义设备类,在这里我们定义一个file的设备类
define devclass tsm devtype=file mountlimit=20 maxcapacity=2G directory=/tmp/pool
tsm
device_class_name(必需)
指定要定义的设备类的名称。设备类名称的最大长度为 30 个字符。
devtype=file (必需)
指定设备类为file设备类型。file表示将一个文件分配给此设备类。当服务器需要访问属于此设备类的卷时,将打开一个文件并读或写文件数据。文件是顺序存取介质的一种形式。
mountlimit
指定可同时为输入/输出打开的最大文件数。此参数是可选的。缺省值是 20。
maxcapacity
指定定义至此设备类中的存储池的数据存储文件的最大字节数。
directory
指定此设备类中使用文件的目录位置。使用逗号分隔单个的目录名,将整个目录列表用引号括起来。目录名中允许有特殊字符(例如,空格)。例如,目录列表“abc def,xyz”包含两个目录:abc def 和 xyz
使用define stgpool来定义存储池,在这里我们定义一个tsm的存储池。
define stgpool tsm tsm maxscratch=100
使用define volume命令设置预定义的顺序卷
define volume tsm /tmp/pool/001.dsm formatsize=500
定义策略域
将缺省策略域standard作为一个模板
copy domain standard tsm
更新tsm策略域中的备份或归档副本组,将目的地指定为tsm存储池。例如,要将刚创建的tsm的file存储池用于备份
update copygroup tsm standard standard destination=tsm
验证策略域
validate policyset tsm standard
激活更改的策略
activate policyset tsm standard
建立测试节点
register node sybase 123456 domain=tsm backdel=yes
至此,tsm server端设定完成!!!
配置tsm client的ba及api
配置ba
复制他的示例(sample)文件进行修改就简单多了(dsm.sys.smp dsm.opt.smp)
[root@sybase ~]# cd /opt/tivoli/tsm/client/ba/bin/
[root@sybase bin]# cp dsm.opt.smp dsm.opt
[root@sybase bin]# cp dsm.sys.smp dsm.sys
[root@sybase bin]# vi dsm.opt
SErvername tsm 添加欲连接的tsm servername
[root@sybase bin]# cat dsm.opt|grep -v ^*|grep -v ^$
其次是编辑tsm系统选项文件dsm.sys
[root@sybase bin]# vi dsm.sys
TCPServeraddress 10.1.1.102 添加欲连接的server’s ip
nodename sybase 添加本机的连接节点名称
passwordaccess generate 指定指定 Data Protection for Domino用来登录到 Tivoli tsm server的tsm manager不需要密码
[root@sybase bin]# cat dsm.sys|grep -v ^*|grep -v ^$
配置api
把ba的配置文件复制给api,省心省事,又免了出现编辑上错误的情况
[root@sybase bin]# cp {dsm.sys,dsm.opt} ../../api/bin/
[root@sybase bin]# ls ../../api/bin/
至此,tsm client设定完成!!!!
配置tsmpipe
Tsmpipe的配置工作基本上在上边的安装工作中就已经完成了,这里就不再赘述,请参考上边的安装步骤
测试
…………………………………………………………………………………………………..........
测试adsmpipe能否正常工作
首先,启动tsm server
第一次运行adsmpipe命令时要用-p参数验证一下密码,之后就可以象上例一样不输入密码了
[root@sybase ~]# adsmpipe -p 123456
安装、配置并测试sybase server、sybase api
安装
安装sybase server
安装前准备
上传你的sybase安装包,并解压你的sybase安装包ase1254linux32.tgz到/software(/software目录前面已经建立)
[root@sybase share]# tar -zxvf ase1254linux32.tgz -C /software/
安装方式问题
Sybase有两种安装方式,一种是字符界面模式下(带个console参数),另外是另外一种是图形界面,安装过程中没什么好设定的,只需要next-next-next就行了
输出环境变量问题
要是选择图形界面安装方式的话,还是要设定DISPLAY环境变量,同上,这里不再赘述
共享内存问题
sybase最少是需要64M,而系统默认是32M,可以使用/sbin/sysctl kernel.shmmax命令来查看
如果不改的话,安装sybase是不能成功的,会报错,安装失败
另外,共享内存的设定是有依据的,一般定义在系统允许范围内,即和物理内存相同大小。
我这里就设定为和我的物理内存大小相同512000000(根据自己的实际情况来设定,查看内存的命令为free)
设定方法为:
[root@sybase software]# vi /etc/sysctl.conf
添加一条kernel.shmmax = 512000000(如果原先有对kernel.shmmax的设定,则改一下数值就可以了,看具体情况),改过以后,应该使用sysctl –p让共享内存的设置即时生效,当你看到kernel.shmmax = 512000000则说明设置已成功
[root@sybase software]# /sbin/sysctl kernel.shmmax
解决用户问题
添加sybase用户,设定其属主目录为/opt/sybase(sybase安装的默认路径)
[root@sybase ~]# useradd -d /opt/sybase sybase
[root@sybase ~]# passwd sybase
正式安装
首先,切换到sybase用户
[root@sybase ~]# su - sybase
接着,进入安装文件所在目录
[sybase@sybase ~]$ cd /software/
[sybase@sybase software]$ ./setup
基本上只要下一步下一步就能正确的安装完成,不过要注意安装过程中的默认参数
直到出现此页,则说明安装成功了
安装后配置
安装完sybase server软件后,sybase默认已经启动了服务,那么我们要做的第一件事就是解决系统字符集和数据库字符集不兼容的问题
系统默认字符集是:
[root@sybase ~]# cat /etc/sysconfig/i18n
而数据库默认是iso字符集,那么肯定会出现字符集不兼容的问题,当你使用以下命令进入sybase数据库,会出现如下错误:
[sybase@sybase bin]$ ./isql -U sa -P -S SYBASE
看到出现的错误了吧(Character set conversion is not available between client character set 'utf8' and server character set 'iso_1'.)
现在让我们来开始解决这个问题
首先,退出数据库
1> quit
[sybase@sybase bin]$ ~/ASE-12_5/bin/asecfg
报错,产生新问题,环境变量没有设定,通过以下方式设定:
编辑根目录下的.bash_profile文件
在里面添加一行
. ~/SYBASE.sh
[sybase@sybase ~]$ vi .bash_profile
[sybase@sybase ~]$ . ~/.bash_profile (让更改的环境马上生效)
[sybase@sybase ~]$ ~/ASE-12_5/bin/asecfg
选择localize an existing server
选中sybase数据库--ok—ok--更改ISO Latin-1为UTF-8--ok
再次登入,则不会再出现什么问题了
[sybase@sybase bin]$ ./isql -U sa -P -S SYBASE
现在登入sybase server开始进行操作
如果出现下面的错误,
Can't allocate space for object 'syslogs' in database 'master' because
'logsegment' segment is full/has no free extents.
(先说明一下,这个问题并不是每个人都会遇到,不过既然我这里出现了,我就说明一下,其实已经说的很清楚了,就是master数据库的事务日志用段已满,必须使用dump transaction with truncate_only命令来清除日志,我在这里还是给解决一下吧)---更多帮助请参考sybase手册
然后重新启动数据库即可
配置设置设备号可用范围
1> sp_configure 'number of devices',15
创建设备
1> disk init name='test',physname='test.dat',vdevno=3,size=10240
2> go
1> disk init name='test1',physname='test1.dat',vdevno=4,size=10240
2> go
创建数据库
1> create database test on test=30 log on test1=8 with override
2> go
使用数据库
1> use test
2> go
创建表
1> create table test(mom varchar(20))
2> go
插入记录
1> insert into test values('aaa')
insert into test values('bbb')
insert into test values('ccc')
insert into test values('1')
insert into test values('2')
insert into test values('3')
go2> 3> 4> 5> 6> 7>
go
查看当前库中所有表
1> select name from sysobjects
2> go
你会看到多出了一个test表
查看test表,看数据是否是刚才建立的
1> select * from test
2> go
安装sybase api
安装前准备
上传你的源码文件到sybase主机,其中包括两个文件libpipe.c sybackup.h,拷贝到/software目录面
[root@sybase share]# cp libsybb.c sybackup.h /software/
编译
[root@sybase software]# cc -Wall -shared -I. -o libpdmsybb.so libsybb.c
若正常运行,则会新生成一个文件libpdmsybb.so
将生成的libsybb.so复制到sybase的外挂文件目录中.目录的位置可通过搜索libcompress.so来完成
[root@sybase software]# updatedb
[root@sybase software]# locate libcompress.so
[root@sybase software]# cp libpdmsybb.so /opt/sybase/ASE-12_5/lib/
至此,sybase api和sybase server配置完成!!!!
5. 总体综合测试
测试能否在sybase数据库中通过ssh登录adsmpipe所在服务器再连接上tsm服务器对sybaseDB进行联机备份
首先,必须配置ssh信任
[root@sybase ~]# su - sybase
[sybase@sybase ~]$ ssh-keygen -t rsa
路径取他默认的就可以了,密码也不用设置,以方便我们登录,现在,把生成的公钥拷贝给欲远程登录的远程服务器(这里即为tsmpipe所在主机),第一次登陆需要密码,验证过以后,第二次开始,登录就不用密码了
[sybase@sybase ~]$ scp .ssh/id_rsa.pub root@10.1.1.101:~/.ssh/authorized_keys
不再需要密码登录了,至此ssh信任配置成功
总体综合验证思路:
我们在上边的sybase数据库中建立了test数据库,里面包含了test表,现在我们的思路是首先用ssh登录远程主机通过adsmpipe对test数据库进行备份,然后再删除test表,最后再还原test数据库,看test表是否仍然存在,以验证总体测试是否成功
操作
1> use master
2> go
1> dump database test to "pdmsybb::ssh root@10.1.1.101 adsmpipe -cf testdb"
在adsmpipe所在主机上查询是否生成了备份文件
[root@sybase ~]# adsmpipe -tf testdb
进行数据库操作,删除表test
1> use test
2> go
1> select name from sysobjects
2> go
1> drop table test
2> go
1> select name from sysobjects
2> go
看到了吗?test表被删除了
现在,通过adsmpipe还原数据库,看test表是否被恢复回来,如果被恢复回来了的话,就说明备份和恢复都成功,总体测试则成功
1> use master
2> go
1> load database test from "pdmsybb::ssh root@10.1.1.101 adsmpipe -xf testdb"
2> go
1> use test
2> go
1> online database test
2> go
1> select name from sysobjects
2> go
看到了吗,test表又回来了,至此,总体测试成功
6. 总结
Sybase方面:恢复了数据库后,被恢复的数据库默认是offline的,要使用命令online database database_name来让其online,才能对其进行操作
Tsm方面:
1.若出现
[root@sybase-tsmapi ~]# dsmadmc
ANS1217E Server name not found in System Options File
请检查dsm.opt及dsm.sys文件的设定,尤指servername,这方面要很小心,设置错一点都可能导致你整个备份流程都无法实现
Sybase api与tsm api联用方面:
注意,用sybase用户去备份的东西要用sybase用户去查询,而用root用户去备份的东西要用root用户去查询。因为,用户A备份的东西用户B是看不到的。
1. 系统布署及硬件环境
服务器1:
服务器主机名: sybase
操作系统:rhel4_u3
IP地址:10.1.1.101
角色:sybase server、tsm client(本来是应该用三个系统来做的,三个系统分别架设sybase,tsm client,tsm server,但由于我的Thinkpad太弱,所以我这里就偷懒了,只用了两个系统来模拟实验,把sybase server和tsm client装在同一个系统上)
sybase服务器名:sybase
sybase用户名:sa
sa用户密码:空
服务器2:
服务器主机名:tsm
操作系统:rhel4_u3
Ip地址:10.1.1.102
角色:tsm server
tsm服务器名:tsm
tsm管理员帐号:admin
tsm管理员密码:admin
tsm客户端帐号:sybase
sybase用户密码:123456
相关命令:
修改主机名必须修改两个文件
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=sybase
vi /etc/hosts
10.1.1.207 windowvm
10.1.1.102 tsm
10.1.1.101 localhost
查看操作系统版本为
cat /etc/redhat-release
修改ip地址
2.安装包准备
TSM需要以下几个包:
TSM Client Linux 5.3.4.iso
TSM Server Linux 5.3.2.0.iso
adsmpipe.tar.gz(内含四个文件adsmblib.c、adsmpipe.c、Makefile、README)
Sybase需要以下几个包:
ase1254linux32.rar
sybaseapi.tar.gz(内含两个文件libpipe.c sybackup.h)
安装包说明:
TSM Client Linux 5.3.4.iso是tsm client端的光盘镜像文件,其中tsm client里面又包含很多个安装包,但我们需要安装的只有那么几个rpm包
TIVsm-API.i386.rpm ----tsm client的应用程序接口包
TIVsm-BA.i386.rpm ----tsm client的备份管理员包(包图形和字符两种界面)
TIVsm-msg.es_ES.i386.rpm ----语言包(英文english)
TSM Server Linux 5.3.2.0.iso是tsm server端的光盘镜像文件
adsmpipe是IBM提供一个小工具,用来备份数据流(一个向tsm读写数据流的工具),adsmpipe.tar.gz里面包含的是他的源代码
ase1254linux32.rar里面包含的则是sybase Adaptive Server Enterprise的安装包
sybaseapi.tar.gz包含的是sybase api的源代码,编译后生成的工具用于截获dump数据流
3.安装、配置并测试tsm server、tsm client、tsm api
安装
安装tsm server(tsm主机)
安装前准备
先检查系统上原来有没装过tsm server软件,如果有的话,用rpm –e命令卸载
[root@tsm ~]# rpm -qa|grep TIV
确认没安装后,再挂载你的iso镜像文件TSM Server Linux 5.3.2.0.iso
安装tsm server
mount /dev/cdrom
cd /media/cdrecorder/
正式安装(其下省略N张图)
[root@tsm cdrecorder]# ./install_server
安装tsm client
安装前准备
先检查系统上原来有没装过tsm client软件,如果有的话,用rpm –e命令卸载,命令方式同上,我就不再多说,请参考上边tsm server安装命令及内容
确认没安装后,再挂载你的光盘镜像文件TSM Client Linux 5.3.4.iso,命令同上
这里给出的包有很多,但我们只需要安装TIVsm-API.i386.rpm、TIVsm-BA.i386.rpm、TIVsm-msg.es_ES.i386.rpm,上面已经解释过各个包的作用,在这里我就不再赘述
正式安装
[root@sybase linux86]# rpm -ivh TIVsm-API.i386.rpm
[root@sybase linux86]# rpm -ivh TIVsm-BA.i386.rpm
[root@sybase linux86]# rpm -ivh TIVsm-msg.es_ES.i386.rpm
安装完成后,会发现在/opt下面多了tsm client的文件
[root@sybase ~]# ls /opt/tivoli/tsm/
安装tsmpipe
安装前准备
创建放置相关软件所需目录/software
[root@sybase ~]# mkdir /software
上传adsmpipe文件夹到/software,上传方法留待用户自己解决(例如cuteftp,winscp等软件都可以),上传完成后,可以发现/software下面多了以下文件
正式安装
修改Makefile,添加编译过程中所需共享对象文件所在位置,如果设定错误,会出现类似”文件找不到”此类错误,当然,这一步要在安装完客户端之后才能去做,否则一样会报错,错误内容类似为:
cc -g -I /opt/tivoli/tsm/client/api/bin/sample -c -o adsmpipe.o adsmpipe.c
adsmpipe.c:22:19: dsmrc.h: No such file or directory
adsmpipe.c:23:22: dsmapitd.h: No such file or directory
adsmpipe.c:24:22: dsmapifp.h: No such file or directory
adsmpipe.c: In function `main':
adsmpipe.c:130: error: `int16' undeclared (first use in this function)
adsmpipe.c:130: error: (Each undeclared identifier is reported only once
adsmpipe.c:130: error: for each function it appears in.)
adsmpipe.c:130: error: syntax error before "rc"
adsmpipe.c:209: error: `rc' undeclared (first use in this function)
make: *** [adsmpipe.o] Error 1
如果你按我以上的步骤去配置的话,编译应该是没有什么问题的
[root@sybase software]# cd adsmpipe/
[root@sybase adsmpipe]# vi Makefile将CFLAGS修改为
CFLAGS=-g -I /opt/tivoli/tsm/client/api/bin/sample
[root@sybase adsmpipe]# make
编译完后,会发现原目录先多出了一个可执行文件adsmpipe
为方便执行,把它复制到$PATH目录下面,这样以后直接敲入adsmpipe命令就可以执行,我把它复制到/usr/bin,此处没有硬性要求我们一定要复制到哪里,只要目标目录在$PATH目录下就行
[root@sybase adsmpipe]# echo $PATH
测试一下看能否运行
[root@sybase ~]# adsmpipe
配置
配置tsm server
修改dsmserv.opt
[root@tsm ~]# cd /opt/tivoli/tsm/server/bin/
[root@tsm bin]# vi dsmserv.opt
在原文件内容上添加以下两行:
COMMMETHOD HTTP 添加http支持
HTTPPORT 1580 http支持的端口号
[root@tsm bin]# cat dsmserv.opt
配置
配置tsm server
启动tsm server
[root@tsm bin]# ./dsmserv
启动起来后,首先修改servername为tsm
TSM:SERVER1>
set servername tsm
设置tsm的存储结构
定义设备类
注意,在定义设备类之前,必须先建立设备类中使用文件的目录,这里为/tmp/pool,即/tmp/pool文件夹必须预先存在,否则会是这种情况
[root@tsm ~]# mkdir -p /tmp/pool
使用define devclass来定义设备类,在这里我们定义一个file的设备类
define devclass tsm devtype=file mountlimit=20 maxcapacity=2G directory=/tmp/pool
tsm
device_class_name(必需)
指定要定义的设备类的名称。设备类名称的最大长度为 30 个字符。
devtype=file (必需)
指定设备类为file设备类型。file表示将一个文件分配给此设备类。当服务器需要访问属于此设备类的卷时,将打开一个文件并读或写文件数据。文件是顺序存取介质的一种形式。
mountlimit
指定可同时为输入/输出打开的最大文件数。此参数是可选的。缺省值是 20。
maxcapacity
指定定义至此设备类中的存储池的数据存储文件的最大字节数。
directory
指定此设备类中使用文件的目录位置。使用逗号分隔单个的目录名,将整个目录列表用引号括起来。目录名中允许有特殊字符(例如,空格)。例如,目录列表“abc def,xyz”包含两个目录:abc def 和 xyz
使用define stgpool来定义存储池,在这里我们定义一个tsm的存储池。
define stgpool tsm tsm maxscratch=100
使用define volume命令设置预定义的顺序卷
define volume tsm /tmp/pool/001.dsm formatsize=500
定义策略域
将缺省策略域standard作为一个模板
copy domain standard tsm
更新tsm策略域中的备份或归档副本组,将目的地指定为tsm存储池。例如,要将刚创建的tsm的file存储池用于备份
update copygroup tsm standard standard destination=tsm
验证策略域
validate policyset tsm standard
激活更改的策略
activate policyset tsm standard
建立测试节点
register node sybase 123456 domain=tsm backdel=yes
至此,tsm server端设定完成!!!
配置tsm client的ba及api
配置ba
复制他的示例(sample)文件进行修改就简单多了(dsm.sys.smp dsm.opt.smp)
[root@sybase ~]# cd /opt/tivoli/tsm/client/ba/bin/
[root@sybase bin]# cp dsm.opt.smp dsm.opt
[root@sybase bin]# cp dsm.sys.smp dsm.sys
[root@sybase bin]# vi dsm.opt
SErvername tsm 添加欲连接的tsm servername
[root@sybase bin]# cat dsm.opt|grep -v ^*|grep -v ^$
其次是编辑tsm系统选项文件dsm.sys
[root@sybase bin]# vi dsm.sys
TCPServeraddress 10.1.1.102 添加欲连接的server’s ip
nodename sybase 添加本机的连接节点名称
passwordaccess generate 指定指定 Data Protection for Domino用来登录到 Tivoli tsm server的tsm manager不需要密码
[root@sybase bin]# cat dsm.sys|grep -v ^*|grep -v ^$
配置api
把ba的配置文件复制给api,省心省事,又免了出现编辑上错误的情况
[root@sybase bin]# cp {dsm.sys,dsm.opt} ../../api/bin/
[root@sybase bin]# ls ../../api/bin/
至此,tsm client设定完成!!!!
配置tsmpipe
Tsmpipe的配置工作基本上在上边的安装工作中就已经完成了,这里就不再赘述,请参考上边的安装步骤
测试
…………………………………………………………………………………………………..........
测试adsmpipe能否正常工作
首先,启动tsm server
第一次运行adsmpipe命令时要用-p参数验证一下密码,之后就可以象上例一样不输入密码了
[root@sybase ~]# adsmpipe -p 123456
安装、配置并测试sybase server、sybase api
安装
安装sybase server
安装前准备
上传你的sybase安装包,并解压你的sybase安装包ase1254linux32.tgz到/software(/software目录前面已经建立)
[root@sybase share]# tar -zxvf ase1254linux32.tgz -C /software/
安装方式问题
Sybase有两种安装方式,一种是字符界面模式下(带个console参数),另外是另外一种是图形界面,安装过程中没什么好设定的,只需要next-next-next就行了
输出环境变量问题
要是选择图形界面安装方式的话,还是要设定DISPLAY环境变量,同上,这里不再赘述
共享内存问题
sybase最少是需要64M,而系统默认是32M,可以使用/sbin/sysctl kernel.shmmax命令来查看
如果不改的话,安装sybase是不能成功的,会报错,安装失败
另外,共享内存的设定是有依据的,一般定义在系统允许范围内,即和物理内存相同大小。
我这里就设定为和我的物理内存大小相同512000000(根据自己的实际情况来设定,查看内存的命令为free)
设定方法为:
[root@sybase software]# vi /etc/sysctl.conf
添加一条kernel.shmmax = 512000000(如果原先有对kernel.shmmax的设定,则改一下数值就可以了,看具体情况),改过以后,应该使用sysctl –p让共享内存的设置即时生效,当你看到kernel.shmmax = 512000000则说明设置已成功
[root@sybase software]# /sbin/sysctl kernel.shmmax
解决用户问题
添加sybase用户,设定其属主目录为/opt/sybase(sybase安装的默认路径)
[root@sybase ~]# useradd -d /opt/sybase sybase
[root@sybase ~]# passwd sybase
正式安装
首先,切换到sybase用户
[root@sybase ~]# su - sybase
接着,进入安装文件所在目录
[sybase@sybase ~]$ cd /software/
[sybase@sybase software]$ ./setup
基本上只要下一步下一步就能正确的安装完成,不过要注意安装过程中的默认参数
直到出现此页,则说明安装成功了
安装后配置
安装完sybase server软件后,sybase默认已经启动了服务,那么我们要做的第一件事就是解决系统字符集和数据库字符集不兼容的问题
系统默认字符集是:
[root@sybase ~]# cat /etc/sysconfig/i18n
而数据库默认是iso字符集,那么肯定会出现字符集不兼容的问题,当你使用以下命令进入sybase数据库,会出现如下错误:
[sybase@sybase bin]$ ./isql -U sa -P -S SYBASE
看到出现的错误了吧(Character set conversion is not available between client character set 'utf8' and server character set 'iso_1'.)
现在让我们来开始解决这个问题
首先,退出数据库
1> quit
[sybase@sybase bin]$ ~/ASE-12_5/bin/asecfg
报错,产生新问题,环境变量没有设定,通过以下方式设定:
编辑根目录下的.bash_profile文件
在里面添加一行
. ~/SYBASE.sh
[sybase@sybase ~]$ vi .bash_profile
[sybase@sybase ~]$ . ~/.bash_profile (让更改的环境马上生效)
[sybase@sybase ~]$ ~/ASE-12_5/bin/asecfg
选择localize an existing server
选中sybase数据库--ok—ok--更改ISO Latin-1为UTF-8--ok
再次登入,则不会再出现什么问题了
[sybase@sybase bin]$ ./isql -U sa -P -S SYBASE
现在登入sybase server开始进行操作
如果出现下面的错误,
Can't allocate space for object 'syslogs' in database 'master' because
'logsegment' segment is full/has no free extents.
(先说明一下,这个问题并不是每个人都会遇到,不过既然我这里出现了,我就说明一下,其实已经说的很清楚了,就是master数据库的事务日志用段已满,必须使用dump transaction with truncate_only命令来清除日志,我在这里还是给解决一下吧)---更多帮助请参考sybase手册
然后重新启动数据库即可
配置设置设备号可用范围
1> sp_configure 'number of devices',15
创建设备
1> disk init name='test',physname='test.dat',vdevno=3,size=10240
2> go
1> disk init name='test1',physname='test1.dat',vdevno=4,size=10240
2> go
创建数据库
1> create database test on test=30 log on test1=8 with override
2> go
使用数据库
1> use test
2> go
创建表
1> create table test(mom varchar(20))
2> go
插入记录
1> insert into test values('aaa')
insert into test values('bbb')
insert into test values('ccc')
insert into test values('1')
insert into test values('2')
insert into test values('3')
go2> 3> 4> 5> 6> 7>
go
查看当前库中所有表
1> select name from sysobjects
2> go
你会看到多出了一个test表
查看test表,看数据是否是刚才建立的
1> select * from test
2> go
安装sybase api
安装前准备
上传你的源码文件到sybase主机,其中包括两个文件libpipe.c sybackup.h,拷贝到/software目录面
[root@sybase share]# cp libsybb.c sybackup.h /software/
编译
[root@sybase software]# cc -Wall -shared -I. -o libpdmsybb.so libsybb.c
若正常运行,则会新生成一个文件libpdmsybb.so
将生成的libsybb.so复制到sybase的外挂文件目录中.目录的位置可通过搜索libcompress.so来完成
[root@sybase software]# updatedb
[root@sybase software]# locate libcompress.so
[root@sybase software]# cp libpdmsybb.so /opt/sybase/ASE-12_5/lib/
至此,sybase api和sybase server配置完成!!!!
5. 总体综合测试
测试能否在sybase数据库中通过ssh登录adsmpipe所在服务器再连接上tsm服务器对sybaseDB进行联机备份
首先,必须配置ssh信任
[root@sybase ~]# su - sybase
[sybase@sybase ~]$ ssh-keygen -t rsa
路径取他默认的就可以了,密码也不用设置,以方便我们登录,现在,把生成的公钥拷贝给欲远程登录的远程服务器(这里即为tsmpipe所在主机),第一次登陆需要密码,验证过以后,第二次开始,登录就不用密码了
[sybase@sybase ~]$ scp .ssh/id_rsa.pub root@10.1.1.101:~/.ssh/authorized_keys
不再需要密码登录了,至此ssh信任配置成功
总体综合验证思路:
我们在上边的sybase数据库中建立了test数据库,里面包含了test表,现在我们的思路是首先用ssh登录远程主机通过adsmpipe对test数据库进行备份,然后再删除test表,最后再还原test数据库,看test表是否仍然存在,以验证总体测试是否成功
操作
1> use master
2> go
1> dump database test to "pdmsybb::ssh root@10.1.1.101 adsmpipe -cf testdb"
在adsmpipe所在主机上查询是否生成了备份文件
[root@sybase ~]# adsmpipe -tf testdb
进行数据库操作,删除表test
1> use test
2> go
1> select name from sysobjects
2> go
1> drop table test
2> go
1> select name from sysobjects
2> go
看到了吗?test表被删除了
现在,通过adsmpipe还原数据库,看test表是否被恢复回来,如果被恢复回来了的话,就说明备份和恢复都成功,总体测试则成功
1> use master
2> go
1> load database test from "pdmsybb::ssh root@10.1.1.101 adsmpipe -xf testdb"
2> go
1> use test
2> go
1> online database test
2> go
1> select name from sysobjects
2> go
看到了吗,test表又回来了,至此,总体测试成功
6. 总结
Sybase方面:恢复了数据库后,被恢复的数据库默认是offline的,要使用命令online database database_name来让其online,才能对其进行操作
Tsm方面:
1.若出现
[root@sybase-tsmapi ~]# dsmadmc
ANS1217E Server name not found in System Options File
请检查dsm.opt及dsm.sys文件的设定,尤指servername,这方面要很小心,设置错一点都可能导致你整个备份流程都无法实现
Sybase api与tsm api联用方面:
注意,用sybase用户去备份的东西要用sybase用户去查询,而用root用户去备份的东西要用root用户去查询。因为,用户A备份的东西用户B是看不到的。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/189512/viewspace-705669/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/189512/viewspace-705669/