Database 跨区域/分区保持数据库同步(写入/更新后)

Database 跨区域/分区保持数据库同步(写入/更新后),database,distributed,scalable,Database,Distributed,Scalable,我必须用php编写一个Web服务,在三个不同的区域(城市或国家)提供服务。每个区域都有自己的机器来运行此web服务实例,每个web服务后面都有一个数据库,在每个区域中都是精确的克隆/拷贝,web服务为客户机提供来自db的数据。多个web服务实例的主要原因是分配客户端负载 客户端可以通过web服务API进行读写调用。 写调用将修改该实例的数据库,但此更改必须尽快应用于其他区域中的所有数据库,因为每个区域中的所有数据库都是克隆和精确副本,因此一个数据库中的更改必须在其他区域中的所有数据库中同步 我假

我必须用php编写一个Web服务,在三个不同的区域(城市或国家)提供服务。每个区域都有自己的机器来运行此web服务实例,每个web服务后面都有一个数据库,在每个区域中都是精确的克隆/拷贝,web服务为客户机提供来自db的数据。多个web服务实例的主要原因是分配客户端负载

客户端可以通过web服务API进行读写调用。 写调用将修改该实例的数据库,但此更改必须尽快应用于其他区域中的所有数据库,因为每个区域中的所有数据库都是克隆和精确副本,因此一个数据库中的更改必须在其他区域中的所有数据库中同步

我假设写调用必须转到某种主服务器,它协调所有web服务等。但我确信这种模式非常常见,并且已经有了一些解决方案


请告知是否有任何数据库或应用程序级技术可以在有写调用时保持数据库同步,以便在所有db实例中反映修改或添加?我可以选择我选择的数据库,但主要的选择是mysql服务器或postgres,但可以改为其他数据库,以解决这个问题。

你说得对,这种模式非常常见,它有一个名称-同步主复制。大多数现代RDBMS都支持它:

  • PosgreSQL通过pg_集群支持它
  • MySQL
但在直接实施之前,我建议您阅读更多关于不同复制类型及其优缺点的内容:

同步母版复制将非常缓慢,特别是在多区域场景中,因此您可以考虑其他技术:

  • 异步复制
  • 分片/分区
  • 分片和复制的混合

Martin Kleppmann的《设计数据密集型应用程序》是一本关于不同分布式技术(包括分片和复制)的好书。

这是用于什么数据库平台的?