使用 BLOB 进行在线备份的速度

Posted

技术标签:

【中文标题】使用 BLOB 进行在线备份的速度【英文标题】:Speed of online backups with BLOBs 【发布时间】:2010-09-12 02:41:07 【问题描述】:

在 Oracle 8 中,使用数据库中的 BLOB 进行在线备份非常慢。慢,我的意思是用 100MB 的 BLOB 数据备份数据库需要一个多小时。 Oracle 承认它很慢,但不会解决这个问题(为支持支付这么多钱。)有谁知道 Oracle 是否在后续版本中解决了这个问题?此外,在线备份与 BLOB 在 SQL Server 和 mysql 中的工作速度有多快?

【问题讨论】:

【参考方案1】:

我过去遇到过这个问题,我们发现的唯一体面的解决方法是确保 LOB 位于它们自己的表空间中,并对它们使用不同的备份策略,或者切换到使用 BFILE 类型.能否使用 BFILE 取决于您使用 LOB 的方式。

关于 BFILE 的一些使用信息:

http://download-uk.oracle.com/docs/cd/B10501_01/java.920/a96654/oralob.htm#1059942

请注意,BFILE 存在于 Oracle 之外的文件系统中,因此您需要在正常 Oracle 备份之外的进程中备份它们。在一个项目中,我们刚刚安排了 rsync 到异地备份。另外需要注意的是,您不能通过 JDBC 创建/更新 BFILE,但可以读取它们。

【讨论】:

【参考方案2】:

要回答有关 SQL Server 中 BLOB 在线备份速度的问题,它与备份 SQL 2000/2005/2008 的常规数据的速度相同 - 它通常受存储速度的限制。我的 BLOB 数据库备份通常会超过 100mb/秒。

不过,请谨慎使用备份压缩工具 - 如果 BLOB 是高度随机的二进制式数据,那么您将浪费 CPU 周期来尝试压缩数据,并且压缩会使备份变慢而不是变快.

【讨论】:

【参考方案3】:

我使用 Redgate 的 SQL Backup for SQL Server —— 它的速度快得离谱,即使是我的 BLOB 数据。

我会为我进行 EDI 处理的每个文件保留一份副本,因此虽然它们不是很大,但它们数量众多,而且是 BLOB。仅这些文本文件就超过 100Megs。

请务必注意,Redgate 的 SQL 备份只是标准 SQL 备份的前端......它基本上为您提供了额外的管理功能,但仍使用 SQL Server 备份引擎。

【讨论】:

这个问题是关于 Oracle 的 不,问题特别指出,“另外,在 SQL Server 和 MySQL 中,使用 BLOB 进行在线备份的速度有多快?”【参考方案4】:

根据 BLOB 的大小,确保将它们适当地内联/外联存储。

见http://www.dba-oracle.com/t_table_blob_lob_storage.htm

【讨论】:

【参考方案5】:

您可以将您正在创建的导出文件和 Oracle 表空间放在不同的磁盘上吗?您的 I/O 吞吐量可能是制约因素...?

【讨论】:

【参考方案6】:

8i 上的 exp 很慢,但没有你描述的那么慢。我已经在 10g 的几分钟内备份了千兆字节的 blob ..(到磁盘 - 使用 expdp)

【讨论】:

以上是关于使用 BLOB 进行在线备份的速度的主要内容,如果未能解决你的问题,请参考以下文章

DB2数据库在线备份还原笔记

在线热备份数据库之innobackupex 增量备份InnoDB

QEMU/KVM磁盘在线备份

备份工具

db2 backup在线备份和新服务器恢复

十MySQL数据备份与恢复