Ⅰ sybase ase linux 怎么备份
Sybase Ase 12.5 for Linux全攻略
Sybase Ase 12.5 for Linux全攻略
一、创建数据库
但是在开始之前,很有必要定义用户数据库所需要的存储区域,而不要在服务器默认的主设备(master)上创建用户数据库.
创建数据库设备:通过sybase安装过程创建了master和sybsystemprocs,所有其他的数据库设备则是通过 disk init 命令来创建。我们必须保证sybase的用户对欲创建的设备的目录具有读写权限,否则就无法创建成功。先以sybase用户登陆linux系统(数据库是以sybase用户安装的,关于安装和初试配置,请参照“Redflag Server 4搭建sybase”一文),进入sybase用户的主目录 /opt/sybase,创建目录userdata;启动数据库服务,用sybase的isql连接数据库,然后执行disk init 来完成此项操作。
[sybase@sybase sybase]$ cd ASE-12_5/install
[sybase@sybase install]$ ./startserver //启动sybase服务器
[sybase@sybase sybase]$ cd
[sybase@sybase sybase]$ mkdir userdata //创建目录用于存放用户数据库
[sybase@sybase sybase]$ cd /OCS-12_5/bin
[sybase@sybase bin]$ ./isql –U sa –S SYBASE //连接数据库服务器,我的数据//库服务器名称为SYBASE,sa
//密码为空
[sybase@sybase bin]$ ./isql -U sa -S SYBASE //下面是回显
保密字:
Msg 2401, Level 11, State 2:
Server 'SYBASE':
Character set conversion is not available between client character set 'gb18030'
and server character set 'iso_1'.
No conversions will be done.
Msg 4017, Level 16, State 1:
Server 'SYBASE':
Neither language name in login record 'chinese' nor language name in syslogins
'' is an official language name on this SQL Server. Using server-wide
default 'us_english' instead. //回显到此,进入客户操作模式
1> disk init //如果输错了,按“Ctrl”+”back space”删除
2> name=userdev, //命名最好便于识别为佳
3> physname=”/opt/sybase/userdata/userdev.dat”, //要用绝对路径
4> size=”500M”
5> go
1> disk init //给日志文件分配设备
2> name=logdev,
3> physname=”/opt/sybase/userdata/logdev.dat”,
4> size=”50M”
5> go
更改默认设备:如本文开头部分所言,为了防止用户数据库被分配到数据库系统主设备master上,应该在安装完数据库后修改默认设备—安装完sybase ASE后,master是唯一的默认设备。Sybase建议,master设备只应该提供给系统数据库而不是用户数据库。因此,对于用户数据库,我们应当单独创建设备,并且把用户设备设置成默认状态。上一步我们已经创建了用户设备“userdev”和“logdev”.其过程如下:
1> sp_diskdefault ‘master’, ‘defaultoff’ //取消master的默认设备资格
2> go
1> sp_diskdefault ‘userdev’, ‘defaulton’ //设定uerdev为默认设备
2> go
1> sp_diskdefault ‘logdev’, ‘defaulton’ //设定logdev为默认设备
2> go
在后面创建用户数据库的过程中,如果不指定数据库设备,则该用户数据库理所当然地创建在默认设备。
创建数据库:本数据库创建在设备 userdev上,而在分开的设备(logdev)上创建数据库日志。
1> create database mydatabase //创建一个名为mydatabase的数据库
2> on userdev = “50M” //数据库的存储空间为50M,数据库设备
//是userdev,而不是master
3> log on logdev=”10M” //日志文件的存储空间为10M4> go
也可以用命令 create database mydatabase 来创建用户数据库mydatabase,这个数据库也会默认的创建在设备userdev上,日志文件也创建在userdev,但不幸的的是,用户创建的这个数据库将只有2M的容量,恐怕这不是创建者所期望的。因此,不管是Sybase还是我本人,都强烈建议使用上表的过程创建用户数据库,以便于这个数据库可以满足真实的应用场景。创建完数据库后,我们很想知道创建的这个数据库到底是怎么一个状况?通过系统存储过程-sp_helpdb来获得数据库的各种信息。下面是我的某个sybase服务器的范例:
1> sp_helpdb
2> go
name db_size owner dbid
created
status
------------------------ ------------- ------------------------ ------
------------------
------------------------------------------------------------------------------------------------------
master 12.0 MB sa 1
Jun 28, 2005
mixed log and data
model 4.0 MB sa 3
Jun 28, 2005
mixed log and data
myfirstdatabase 110.0 MB sa 4
Jul 08, 2005
no options set
secdatadb 98.0 MB sa 5
Jul 08, 2005
no options set
sybsystemdb 4.0 MB sa 31513
Jun 28, 2005
mixed log and data
sybsystemprocs 120.0 MB sa 31514
Jun 28, 2005
trunc log on chkpt, mixed log and data
tempdb 4.0 MB sa 2
Aug 13, 2005
select into/bulk/pllsort, trunc log on chkpt, mixed log and data
(1 row affected)
(return status = 0)
1>
在创建用户数据库时,应该预留足够大的空间,以便能够保留将来输入的所有数据。但是也不要把数据库定义得太大,以免在将来恢复数据时产生麻烦。究竟需要定义多大的空间才算合适,这需要数据库管理员多次试验才可以决定的。一个经验是-低估一个数据库的大小比高估要好,如果数据库空间太小了,可以很容易的扩充数据库的空间,如果空间过大,则非常麻烦。这里,我们来修改一下前面创建的数据库的空间大小,过程如下:
1> alter database mydatabase
2> on userdev=”1024M” //由50M变成1G
3> log on logdev=”50M” //由10M变成50M4> go
goodcjh2005 2005-12-21 02:50
继续
二、数据库的管理
设置数据库管理员密码:在安装完sybase ASE数据库后,数据库管理员的默认管理员密码为空,基于安全考虑,必须为数据库管理员账号设置密码。先以账号sybase登录系统,然后启动Sybase数据库,用isql连接数据库服务器(操作过程如前面“创建数据库设备”一节),接着执行下面的操作:
1> sp_password null , dr5623H //设置新密码为“dr5623H”2> go
在退出数据库,下一次客户端连接数据库时,提示用户输入密码。
用户和授权:sybase ASE服务器提供一种严密的体系来保障数据的安全,并且使数据的保护级别达到非常精细的程度。在通常情况下,数据库服务器不是只给一个用户sa来使用,为了让数据库满足实际需求,需要在 sybase 数据库里添加账号/用户,为添加的用户分配适合的权限。这个操作分以下几步进行:
1、 添加数据库系统的注册账号。执行存储过程sp_addlogin来完成数据库注册账号的添加,如 exec sp_addlogin sery , d7#W6g , mydatabase 表示添加一个注册账号sery,密码是“d7#W6g”,登录到默认数据库为“mydatabase”。这个操作执行完毕后,将在master数据库的syslogins表中增加一行纪录。添加数据库系统注册账号属于服务器级的安全,换句话说就是这个账号只能连接数据库服务器,但没有访问用户数据库的权力。
2、 添加数据库用户。执行存储过程sp_adser将用户直接添加到数据库,添加数据库用户属于数据库级的安全,这时才可以以用户的身份访问用户数据库。这个操作执行完毕后,将在允许访问的数据库的sysusers表中添加纪录。
3、 授权。能够访问数据库但并不意味可以访问其中的数据,有时需要具备单个数据库对象的相应许可,才可以选取、更改数据库所属表中的数据信息或执行一个存储过程。这是属于对象访问级的安全。授权的格式为: grant <权限列表> on <表名> to <角色/用户>。这个操作执行完毕后,会向sysprotects表中添加纪录。
接着,我们通过下面的事例来总结这3个步骤:
[sybase@sybase sybase]$ cd ASE-12_5/install
[sybase@sybase install]$ ./startserver //启动sybase服务器
[sybase@sybase sybase]$ cd /OCS-12_5/bin
[sybase@sybase bin]$ ./isql –U sa –S SYBASE –P dr5623H
1> sp_addlogin sery , d7#W6g , mydatabase
2> go
1> use mydatabase
2> go
1> sp_adser sery
2> go
1> grant select ,insert, update on custom to sery
2> go
1> shutdown2> go
[sybase@sybase bin]$ ./isql –U sery –S SYBASE –P d7#W6g //以用户sery登录数
//据库mydatabase
1>
为了便于维护和管理数据库,最好让注册名和数据库用户名使用相同的名称。另外,注册用户的删除、数据库用户的删除以及授权的删除都是比较简单的了,请参照下面的操作:
1> revoke select ,insert, update on custom from sery
2> go
1> sp_dropuser sery
2> go
1> sp_droplogin sery2> go
需要注意的是,上述操作除用户sery登录数据库外,都是在sa下完成的。
三、备份和恢复
灾难的发生是不可预料的,作为数据库管理员,可以通过备份数据来抵御这些风险。创建备份和还原计划可能需要大量的时间和精力,但这是值得的,否则一旦灾难发生,后果真的不堪设想。因此定期备份数据库是一个重要的任务,也是一个极好的习惯。
备份的策略和类型:一天备份一次数据库和备份多次事务日志是个值得推荐的选择,实际上,很多系统管理员也是这样执行的。数据库备份是完全备份,而事务日志的备份是增量备份,在做一个恢复备份计划时,将完全备份和增量备份结合起来是十分必要的。
备份:在ASE10以前的版本,备份是由数据库服务器直接执行,这会对导致大量的系统资源争用而引起服务器处理性能下降。备份服务器是服务器上的一个单独Open server应用程序,该程序可以直接访问数据库设备,在数据库服务器运行一个备份服务器 backup server,定会带来很多额外的好处。所幸的是我们在安装 sybase ASE 12_5时已经把备份服务器默认安装好了,这里只需要启用它(.以sybase用户登陆系统,执行命令 #/opt/sybase/ASE-12_5/install/startserver –r RUN_SYBASE_BACKUP启动sybase备份服务器)。
备份的过程还是有点繁复,我们还是分步骤来进行吧!
1、创建备份存储设备。为安全起见,最好把数据库备份到另外的磁盘,为此,准备一个大的硬盘,分好区后(一个分区)把它挂接到文件系统,再进行创建设备的操作。当然sybase也支持直接使用原始设备。
[sybase@root /]# mkdir –p /sybbackup
[sybase@root /]# chown sybase.sybase /sybbackup
[sybase@root /]# mount /dev/sdc1 /sybbackup //挂接新的硬盘分区到///sybbackup
[sybase@root /]# su sybase
[sybase@sybase sybase]$ cd /sybbackup
[sybase@sybase sybbackup]$ touch bk_mydatabase.dat
[sybase@sybase sybbackup]$ touch bk_log.dat
[sybase@sybase sybase]$ cd ASE-12_5/install
[sybase@sybase install]$ ./startserver //启动sybase服务器
[sybase@sybase sybase]$ cd /OCS-12_5/bin
[sybase@sybase bin]$ ./isql –U sa –S SYBASE –P dr5623H
1>sp_admpdevice ‘disk’,‘bk_mydatabase’,‘/sybbackup/bk_sybbackup.dat’
1> go //创建备份设备bk_mydatabase
1> sp_admpdevice ‘disk’ , ‘bk_log’ , ‘/sybbackup/bk_log.dat’
2> go //日志文件的存储位置
2、备份数据库。使用mp database 命令备份数据库数据。
1> mp database mydatabase to ‘bk_mydatabase’ with init2> go
3、 备份事务日志。使用命令mp transaction.
1> mp transaction mydatabase to ‘bk_log’2> go
如果有多个数据库,则需要多次执行备份数据库和备份事务日志操作。备份完成后,非常有必要对备份数据进行验证,如果不这样做将可能发生可怕的后果。笔者在此建议把备份文件多做几份拷贝,放置在不同的地理位置,就算某天失火把服务器和备份烧毁了也可起死回生。
数据库恢复:可能需要经常备份数据库和事务日志,但不必经常进行数据库恢复操作。只有在数据库发生意外、数据库移植、试验等情况下才需要进行恢复操作。与备份相对应,恢复也可分几步进行。需要注意的是,在数据库恢复期间,不要让用户连接数据库。
1、 创建数据库。与要恢复的数据库同名,如果是原数据库损坏,需要先把数据库删除,然后再创建同名数据库。
2、 恢复数据库。使用命令load database命令来恢复数据库。
1> load database mydatabase from ‘bk_mydatabase’2> go
3、 恢复事务日志。使用命令load transaction命令来恢复事务日志。
1> load transaction mydatabase from ‘bk_log’
2> go
4、 联机数据库。事务日志装载完毕之后,才可以使数据库成为联机状态。
1> online database mydatabase2> go
Ⅱ 如何对Sybase SQL Anywhere数据库进行数据备份和数据恢复
恢复整个数据库
首先,如果要恢复的数据库是含有授权表的mysql数据库,将需要使用--skip-grant-tables选项运行服务器。否则,服务器将抱怨无法找到授权表。在恢复表之后,执行mysqladmin flush-privileges 来告诉服务器加载授权表,并用它们启动。
将原数据库目录的内容拷贝到其他的地方。例如,您可能会在稍后用它们进行崩溃表的事后分析检查(post-mortem examination)。
用最新的备份文件重新加载数据库。如果您打算使用由mysqlmp 加载的文件,则需要将它们作为mysql的输入。如果打算使用从数据库中直接拷贝的文件(如,用tar 或c p),则将它们直接拷贝回到该数据库目录中。但是,在这种情况下,应该在拷贝这些文件之前关闭服务器,然后再重新启动它。
用更新日志重做在进行备份后又修改了数据库表的查询。对于所有可用的更新日志,可使用它作为mysql的输入。指定--one-database 选项,使mysql只对想要恢复的数据库执行查询。如果您知道需要使用所有的更新日志文件,可在包含日志的目录中使用下列命令:
% ls-t-r-l update.(0-9)* | xargs cat | mysql--one-database db_name
ls 命令产生更新日志文件的单列列表,更新日志文件根据服务器生成的顺序进行排序(要知道,如果您修改了其中的任何文件,排序的顺序都将改变,这将导致更新日志按错误的顺序使用)。
您很可能必须使用某些更新日志。例如,如果自备份以来所产生的日志命名为update.392、pdate.393 等等,可以重新运行它们中的命令:
% mysql--one-database db_name < updata.392
% mysql--one-database db_name < updata.393
…
如果正在运行恢复并打算使用更新日志恢复由于失策的DROP DATA BASE、DROPTABLE或DELETE 语句而丢失的信息,应确保先从更新日志中删除这些语句。
恢复单个的表
恢复单个表是很困难的。如果有通过mysqlmp 生成的备份文件并且它恰好不包含您想要的表数据,则需要抽取相关的行并用它们作为mysql的输入,这部分较容易。困难的是抽取应用于该表的更新日志的片段。您会发现: mysql_find_rows 实用程序对这方面有帮助,它可以从更新日志中抽取多行查询。
另一种可能性是用另一个服务器恢复整个数据库,然后将所要的该表的文件拷贝到原始数据库中。这实际很容易!在将文件拷贝回数据库目录时,应确保原始数据库的服务器关闭。
Ⅲ linux系统中,sybase数据库如何进行备份和恢复
在win7客户端上使用isql连接linux服务器上的sybase数据库。
备份使用mp
database
数据库名
to
备份路径
恢复使用
load
database
数据库名
from
备份路径