适用于非常不稳定(电源明智)网络的最佳数据库复制技术

Gat*_*amp 6 mysql replication data-synchronization

我是一个小型网络(500 个用户)的一部分,他们都通过 WiMax 相互连接。连接到该网络的人们居住在大约 70 公里的半径范围内。该网络允许大约 1.5 MB/s 的传输速度。我们正在使用一个使用 Mysql 数据库的网站。我们都生活在南非,目前正在经历一种称为减载的现象。由于南非目前正经历电力短缺,因此市政当局将电力转移到特定地区以节省电力。

我们想为这个有问题的网站设置一个数据库复制网格。在减载的情况下,不会发出电源故障警告,因此可以假设服务器将突然关闭。

任何人都可以推荐一种数据库设置和复制类型,以便在发生减载后实现无缝同步?我们希望两台服务器都具有写访问权限,以防其中一台服务器出现故障,用户仍然可以连接到在线服务器。

所以简而言之: - 在数据库不一致的情况下无缝/简单/自动同步。- 足够快,不会删除整个数据库,并从代理主服务器重新下载。- 能够以 1.5MB/s 的带宽限制保持同步。- 没有数据丢失。两台服务器必须完全同步。

数据库的其他一些技术细节: - 每分钟平均处理 250 次查询。- 数据库大小为 1 GB。

我已经阅读了有关 Master-Master 同步的信息,但也读到它在突然关闭时不是很可靠,对于低带宽应用程序也不是很可靠。有没有人对这样的设置有想法。

小智 2

如果 MySQL 不是硬性要求,请考虑FoundationDB Key-Value Store + SQL Layer

FoundationDB是一个分布式Key-Value数据库,具有ACID保证和强容错能力。您可以设置分布在不同城市的集群,如果集群中的服务器出现故障,集群的其余部分将继续运行并接受写入。一旦发生故障的节点重新上线,更改就会自动同步到该节点。

您可以在下面的视频中看到这一操作:Dave 正在关闭集群中不同节点的电源,并演示集群保持运行并接受写入。这篇博文介绍了网络分区情况下数据库会发生什么情况,并添加了更多技术背景。

SQL层是将SQL语句映射到键值存储的过程。它为您的应用程序提供了完整的、符合 ANSI 的 SQL API。

全面披露:我是 FoundationDB 的工程师