PostgreSQL
您可以创建一个包含 4 个分区的表 ( hash
),并将每个分区定位在不同的服务器(远程 PostgreSQL 服务器)上,它被称为 ( )。现在在 MySQL中Foreign Data Wrapper
,我听说有一个联合引擎,您可以使用它连接到远程服务器,但它只适用于表,而不是它的分区。我知道我可以使用NDB
,但我想拥有多个 MySQL 服务器并自行管理分布的数据(基于表分区)。MySQL 中是否有任何解决方案可以创建一个表 ( Innodb
) 并将其分区分布在多个远程 MySQL 服务器上?
MySQL 的 Federated 存储引擎不支持分区。你可以定义一个表,其存储位于不同的 MySQL Server 上,但不能定义具有分区的表。除此之外,Federated 存储引擎还有其他限制,我不推荐这样做。
PlanetScale可能是您所描述的最佳解决方案。它不是内置于 MySQL 中的。它是一家独立的公司,拥有自己的软件,您可以将其与 MySQL 一起使用。PlanetScale 处理了维护多台服务器上的分区数据所需的大量复杂工作。
另一个可能的解决方案是ProxySQL。他们有一个关于如何使用 ProxySQL 进行“分片”的指南,这是将表拆分到多个服务器上的流行术语,正如您所描述的。请参阅https://proxysql.com/documentation/how-to-setup-proxysql-sharding/
任何分布式数据解决方案都会比单个数据库服务器困难得多。您应该仔细考虑这是否是正确的解决方案,或者如果您优化了表和查询,是否可以继续使用单个数据库服务器。