SYBASE IQ 备份与恢复
一、备份
1、备份前准备
(1)获取 DBA 特权您需要在数据库上拥有 DBA 特权才能运行 BACKUP 或 RESTOR,您必须以 DBA 用户身份登录,或由 DBA 授予 DBA 权限。
(2)估计介质容量备份之前,确保存档介质具有足够的空间。
(3)选择存档设备
您可以将任何 IQ 数据库备份到磁带或磁盘中,包括 WORM 设备。Sybase IQ 支持以接近于设备的速度使用多个磁带驱动器备份和恢复,或者备份和恢复到多个磁盘(如果正在使用磁盘条带化)。在 BACKUP 命令的 archive_device 参数中指定备份设备名。
(4)指定备份类型
FULL |INCREMENTAL | INCREMENTAL SINCE FULL 指定备份类型。
请选择下列各项之一:
1:完全备份(FULL ):会对 Catalog 存储和 IQ 存储进行完全备份。FULL 是缺省操作。对于虚拟备份,可以使用 BACKUP 语句的 VIRTUAL DECOUPLED |VIRTUALENCAPSUATED 选项。
2:增量备份(INCREMENTAL): 对 Catalog 存储进行完全备份,然后备份自上次任意类型的 IQ 备份以来对 IQ 存储的所有更改。
3:完全备份的基础上增量备(INCREMENTAL SINCE FULL): 对 Catalog 存储进行完全备份,然后备份自上次完全 IQ备份以来对 IQ 存储的所有更改。
注:增量备份和完全备份的基础上增量备份都会对CatalogStore 进行完全备份。
仅当数据库在内部一致时,备份数据库才有用。
备份始终确保数据库在继续操作之前处于可用状态。但是,最好在执行备份之前验证数据库,以便确保恢复的数据库处于稳定状态。恢复程序不会检查被恢复数据中的一致性,因为数据库甚至可能不存在。验证数据库命令:
(DBA)> sp_iqcheckdb 'check database'
在对整个数据库运行 sp_iqcheckdb 时,sp_iqcheckdb 会读取正在使用的每个数据库页。会占用数据库服务器的大量资源。系统中所有其它并发活动的运行速度将低于正常速度。但是可通过指定 sp_iqcheckdb参数 resources resource-percent 加以限制DBCC 的 CPU 利用率,该参数控制着与 CPU 数目有关的线程数。
2、全备份
确认备份数据:
(DBA)> select * from tb_db1
id name
--------------------------------
1 yangliping
(1 行)
执行时间: 1.953 秒
D:\Sybase\IQ-15_2\bin32>dbisql -c "uid=dba;pwd=sql;links=tcpip{host=localhost;port=2639};eng=winiq152_server2"-nogui
(DBA)> backup database to 'c:\sybasebak\db3'
执行时间: 5.234 秒
(DBA)> insert into tb_db1(name) values('helo')
已插入 1 行
执行时间: 0.656 秒
(DBA)> commit
执行时间: 0.609 秒
(DBA)> select * from tb_db1
id name
--------------------------------
1 yangliping
2 helo
(2 行)
执行时间: 0.109 秒
二、恢复
1、恢复前准备
(1)获取 DBA 特权您需要在数据库上拥有 DBA 特权才能运行 BACKUP 或 RESTOR,您必须以 DBA 用户身份登录,或由 DBA 授予 DBA 权限。
若要进行完全恢复,存储文件(缺省为 .iq 文件)、Catalog 存储(缺省为 .db文件)和事务日志(缺省为 .log 文件)不得存在于要恢复到的目标位置中。如果存在上述任一文件,则必须在执行完全恢复之前将其删除或移至其它目录。
当完全恢复开始时,它会销毁所有旧的数据库文件,然后重新创建这些文件。必须手动删除存储、Catalog 存储和事务日志文件的要求会保护您以免意外地执行完全恢复。
(3)检验数据库备份
Sybase IQ 包含一种机制,可使用 RESTORE SQL 语句的 VERIFY 子句来检验现有的Sybase IQ 12.6 版或更高版本数据库备份。
检验过程会指令服务器验证指定的 Sybase IQ 数据库备份存档以进行完整、增量、基于完整的增量或虚拟备份,并且检查指定的存档有无恢复过程检查的错误,但不执行写入操作。所有状态和错误消息被写入服务器日志文件中。
备份检验过程可以在数据库所在主机之外的主机上运行。您必须具有 DBA、BACKUP或 OPERATOR 权限才可运行 RESTORE VERIFY。
Sybase 建议您使用两个启动开关对连接进行限制:
1: 使用-gd DBA 以便只有具备 DBA 权限的用户才能在正在运行的服务器上启动和停止数据库。(请注意,客户端必须已连接到服务器以便启动或停止数据库,因此此开关不阻止连接。)
2:使用 -gm 1 可以按照超出限值的方式启用一个连接和一个 DBA 连接,以使 DBA可在紧急情况下采用其中一个连接并中断另一个连接。
限制连接的替代方法是:在启动执行恢复所用的连接后指定sa_server_option('disable_connections','ON')并且,在恢复后对同一连接指定sa_server_option('disable_connections','OFF')其缺点在于,此方法排除了从其它 DBA 连接执行的紧急访问。
对于所有增量恢复,Catalog 存储 (.db) 必须存在。如果它存在但所在位置与恢复目标位置不同,请移动数据库文件。如果它不存在,则只能进行完全恢复。(如果在任何增量恢复之前进行完全恢复,正确的文件将准备就绪。)
对于所有增量恢复,自上次恢复以来数据库必须未发生更改。恢复需要对数据库和服务器进行独占访问。为使 DBA 更好地控制无意中打开数据库的行为,应在设置 -gdDBA 选项的情况下启动数据库服务器,但不启动要恢复的数据库。RESTORE 会自动以不允许任何其他用户连接到同一数据库的方式启动该数据库。必须恢复整个备份或整组备份,包括完全备份和所有后续增量备份。仅对只读数据库空间和文件支持从备份存档恢复单独的文件。但是,您可以使用 RESTORE 命令的RENAME 子句将数据库文件移至新的位置。
要恢复数据库中的所有文件或从仅限读写文件的备份中恢复,必须连接到utility_db 数据库。有关 utility_db 以及如何设置使用该数据库的特权的信息,请参见所用平台的《安装和配置指南》。
2、全库恢复
(1)启动utility_srv服务器D:\Sybase\IQ-15_2\bin32>start_iq -n utility_srv -guutility_db
您必须以 DBA 的身份连接到 utility_db 数据库才能发出此语句。
D:\Sybase\IQ-15_2\bin32>dbisql -c"eng=utility_srv;uid=DBA;pwd=sql;dbn=utility_db;links=tcpip{host=localhost:2638}"–nogui
(DBA)> RESTORE DATABASE 'D:\\sybase_db\\db3\\db3.db' FROM'C:/sybasebak/db3'
执行时间: 3.562 秒
C:\Documents and Settings\Administrator>start_iq"D:\\sybase_db\\db3\\db3.db"
(5)连接数据库
C:\Documents and Settings\Administrator>dbisql -c"uid=dba;pwd=sql;eng=db3" -nogui
(DBA)> select * from tb_db3
id name
--------------------------------
1 db3
(1 行)
执行时间: 1.156 秒
(DBA)> sp_iqcheckdb 'check database'
将结果输出到check.txt
(DBA)> sp_iqcheckdb 'check database' ># /opt/sybase/check.txt