如何对Sybase SQL Anywhere数据库进行数据备份和数据恢复

如何对Sybase SQL Anywhere数据库进行数据备份和数据恢复,第1张

恢复整个数据库

首先,如果要恢复的数据库是含有授权表的mysql数据库,将需要使用--skip-grant-tables选项运行服务器。否则,服务器将抱怨无法找到授权表。在恢复表之后,执行mysqladmin flush-privileges 来告诉服务器加载授权表,并用它们启动。

将原数据库目录的内容拷贝到其他的地方。例如,您可能会在稍后用它们进行崩溃表的事后分析检查(post-mortem examination)。

用最新的备份文件重新加载数据库。如果您打算使用由mysqldump 加载的文件,则需要将它们作为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 语句而丢失的信息,应确保先从更新日志中删除这些语句。

恢复单个的表

恢复单个表是很困难的。如果有通过mysqldump 生成的备份文件并且它恰好不包含您想要的表数据,则需要抽取相关的行并用它们作为mysql的输入,这部分较容易。困难的是抽取应用于该表的更新日志的片段。您会发现: mysql_find_rows 实用程序对这方面有帮助,它可以从更新日志中抽取多行查询。

另一种可能性是用另一个服务器恢复整个数据库,然后将所要的该表的文件拷贝到原始数据库中。这实际很容易!在将文件拷贝回数据库目录时,应确保原始数据库的服务器关闭。

1,确保备份服务器bs的空间足够存放远程数据库服务器ds的备份文件。

df -k (unix)

df -h (linux)

2.检查备份服务器bs的interfaces文件是否正常

sample_bs_backup

master tcp ether 132.230.99.2 4200

query tcp ether 132.230.99.2 4200

3.启动备份服务器bs的backupServer服务

startserver -f RUN_sample_bs_backup >> sample_bs_backup.log

4.在数据库服务器ds的interfaces文件添加备份服务器bs的ip和端口信息,名字须根备份服务器bs的interfaces文件保持一致

sample_bs_backup

master tcp ether 132.230.99.2 4200

query tcp ether 132.230.99.2 4200

5.检查数据库服务器ds的interfaces文件是否正常

sample_ds_backup

master tcp ether 132.230.99.1 4200

query tcp ether 132.230.99.1 4200

6.启动数据库服务器ds的backupServer服务

startserver -f RUN_sample_ds_backup >>sample_ds_backup.log

7.连接数据库服务器ds的数据服务,添加备份服务器sample_bs_backup到master..sysservers表中。

执行 sp_addserver sample_bs_backup,null

或者

print 'sample_bs_backup'

exec sp_addserver sample_bs_backup, sql_server, sample_bs_backup

exec sp_serveroption sample_bs_backup, 'timeouts', true

exec sp_serveroption sample_bs_backup, 'net password encryption', false

exec sp_serveroption sample_bs_backup, 'readonly', false

exec sp_serveroption sample_bs_backup, 'rpc security model A',true

go

并用以下命令用于查看是否添加成功

sp_helpserver

8. 连接数据库服务器ds的数据库服务,进行备份

isql -Usa -Ssample_ds -P123456

dump database tacdb to "/backup/sybase/20100519db.dmp" at sample_bs_backup

备份完成!

若是还原是数据库,则执行:

load database tacdb from '/backup/sybase/20100519tacdb.dmp' at sample_bs_backup

9. 备份完毕后,连接数据库服务器ds的数据库服务,删除备份服务

sp_dropserver sample_bs_backup

10,删除数据库服务器ds的interfaces文件关于sample_bs_backup的配置

sample_bs_backup

master tcp ether 132.230.99.2 4200

query tcp ether 132.230.99.2 4200

说明:

1.经与SYBASE公司数据库支持工程师联系,跨平台的数据库dump和load是无法进行的,就像我这种情况——从UNIX服务器上dump出来的数据库,无法load到Windows服务器上的数据库中。只能通过bcp来进行。

2.不同版本的数一据库之间无法进行dump和load。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9951371.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存