ITPub博客

首页 > Linux操作系统 > Linux操作系统 > TSM使用API接口在线备份SYBASE的文档

TSM使用API接口在线备份SYBASE的文档

原创 Linux操作系统 作者:karenzz 时间:2019-07-01 15:30:04 0 删除 编辑
此文档定位于帮助大家对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是看不到的。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/189512/viewspace-705669/,如需转载,请注明出处,否则将追究法律责任。

下一篇: TSM 6.3 即将发布
请登录后发表评论 登录
全部评论

注册时间:2004-12-02

  • 博文量
    37
  • 访问量
    28497