业务需求: 需要将生产数据实时传递到副本备库,本来考虑ALWAYS ON 功能,因业务特殊性,需要将生产库历史数据删除,但仍然需要在副本备库中保留,想来想去决定只有用复制分发中的事务发布可用,删除的数据手工再补回副本备库中,但现在数据容量非常大,1.5TB级数量。表有3千多个。全部做复制分发会对效能产生非常大的影响。如果出问题又需要手工将数据补录回备份库,非常麻烦。请问大家有什么好的其它方案吗?
主要思想是拆分成生产库和历史库,定期将生产库数据移动至历史库。使用sql server alwayson或者db2 hadr直接将日志复制到历史库备库。资源消耗应该会比复制分发小。
1.这种的需求还是蛮多的,但是不同的数据库架构下的处理方式又不相同;
2.在Oracle中的一般做法是一个主库带两个备库(一个物理备库用于冗灾,一个逻辑备库用于业务使用),这样就可以把归档的历史数据在主库中删除,然后保留在逻辑备库中还可以用于查询。
3.因为我不了解SQL Server中的复制分发功能的原理,1.5T的数据量的话估计总会有一两个表的数据较大,其它更多是字典表,可以针对比较大的几个表做规则。
收起问题里并没有提到用的什么数据库。
单纯的在业务需求下我们可以考虑以下几种技术方案:
1.主备数据库可以通过skip一些操作来不同步delete操作。比如oracle的dg。具体可以看官方文档的http://docs.oracle.com/cd/B19306_01/server.102/b14239/toc.htm
2.据我了解还有一些数据库从来就不会因业务做删除操作 任何数据的录入都是有意义存丰的,都是用一些标识字段来做标识,用分区并且定时清洗数据来提升性能。
3.永远做好备份 哪怕真的有丢了数据需要补录也能补的回来
收起