我对大型多模式数据库有一个有趣的问题和要求。在大型数据库中归档/备份表和更改的最佳方法
- 数据库大小约为130Gb。
- 它是一个多模式数据库,每个客户都有一个模式。
- 我们目前在系统中有102247个表格。
- 微软的SQL Server 2K8 R2
这是由于客户的定制要求,所有使用单一定义前端。 我们遇到的问题是我们的数据库备份成为天文数据并且为恢复丢失/丢失/不正确的数据而执行数据库恢复是一场噩梦。最初的产品没有定义审计跟踪,我们没有对存储数据进行“更改”,我们只有1个版本的数据。
丢失数据返回基本上意味着恢复完整的130GB备份并加载差异/事务文件以获取数据。
我们想为每个模式中的每个重要表格引入一个'Changeset'。基本上保存一组数据,然后保存任何修改/不同的数据 - 每X分钟数。这将最初是一个SQL工作,但我想知道什么是最好的方法。
本质上,我会运行一个脚本,将'备份'表插入到我们希望保留备份的表的每个模式中。
然后每X分钟运行一次作业以遍历每个模式并插入当前数据 - 然后插入新数据/更改后的数据,因为它会发现更改。 (基于该行的修改日期)然后它将在自我覆盖之前保留这个更新日志大约一个月。
我们仍然有我们较大的备份,但我们不需要保留较长的保留期。我的观点是,检查更改的数据并执行插入操作的最好和最有效的方法是什么?
我的直觉是:
INSERT INTO BACKUP_table (UNIQUE ID, col1,col2,col3)
select col1,col2,col3 from table where and ModifiedDate < DATEADD(mi,+90,Current_TimeStamp)
*粗糙SQL
这必须是在一个循环要经过所有模式并运行此。许多表格不会改变数据。
这是一个很好的方法吗?
SO想什么?