不同的写入和读取数据库之间如何保持同步

Ega*_*ian 3 sql-server database-theory high-availability

我的一位朋友在面试时被问到这个问题。给定两个不同的数据库,一个只执行写入,另一个只执行读取。给定指定的时间延迟,如何保持两者之间的同步。我想补充一点,这些数据库具有相同的架构。

例如:R 是我的读取数据库,W 是我的写入数据库。我想确保读数据库应该是写数据库的副本,说一分钟前。

我在这里热衷的是完成的技术(概念)而不是实现。假设 RDBMS 是 SQL Server。

Aar*_*and 5

在 SQL Server 2012 中,您可以拥有只读辅助数据库,这允许您使用可用性组将一个数据库或一组数据库镜像到另一台服务器,并在它们被镜像时对它们执行只读查询。

缺点:这需要在两个节点上都使用企业版,只能按内核(而不是 CAL)获得许可,并且底层操作系统需要是 WSFC,因此操作系统也需要是企业版(这不是什么大问题因为与 SQL Server 许可证成本的上涨相比,企业在操作系统级别的额外成本是可笑的)。

在以前的版本中,您可以使用日志传送(受@datagod 已经提到的烦人限制)或镜像 + 快照(也需要企业版)来执行此操作。我还没有看到我们的任何客户针对此特定要求使用复制,但我认为这也是可能的。