我对 PXC 很陌生。我想知道我是否可以跨三个数据中心部署一个集群。例如:
A
数据中心节点1
B
数据中心节点2
C
数据中心节点3
1
数据中心和数据中心之间的延迟2
很低,因为它们在同一个城市。数据中心3
离他们很远。
A
并且B
都提供写入和读取C
只有一个完整的备份和投票A
或B
决定哪一个是捐赠者,从不提供写入或读取。A
与B
C
A
与和异步B
。
而捐赠者只能是A
or B
。我怎样才能以这种方式配置它?
我对 PXC 很陌生。我想知道我是否可以跨三个数据中心部署一个集群。例如:
A
数据中心节点1
B
数据中心节点2
C
数据中心节点3
1
数据中心和数据中心之间的延迟2
很低,因为它们在同一个城市。数据中心3
离他们很远。
A
并且B
都提供写入和读取C
只有一个完整的备份和投票A
或B
决定哪一个是捐赠者,从不提供写入或读取。
A
与B
C
A
与和异步B
。而捐赠者只能是A
or B
。我怎样才能以这种方式配置它?
您可以像这样跨 3 个数据中心部署 PXC。但是,您不能以这种方式配置 Percona XtraDB Cluster(或通用 Galera)行为。
集群的所有成员一起工作。所有 WRITE 交易都会发送到所有节点,并且必须得到所有节点的确认(即:认证)。您的集群可以写入的最快速度是最慢节点的 RTT,在这种情况下是C
.
您可以配置A
并B
成为彼此的捐助者,以防其中一个出现故障。(我的.cnf wsrep-sst-donor
:)
您可能会混淆某些术语。“捐赠者”是节点向另一个节点发送数据副本 (IST/SST) 时的状态。如果您的集群处于Primary
状态,则不会发生“捐赠”。你在考虑领导选举吗?这在 PXC 中不存在。只有简单的法定人数存在。任何节点都可以读,任何节点都可以随时写;read_only=1
除非您在 MySQL 中手动设置,否则对此没有任何限制。
您可以做的是部署一个 3 节点 PXC,其中DC1: A, B
、DC2: C
和 in DC3: D
,使用 MySQL 异步复制作为异地备份。您必须选择 A、B、C 之一作为异步复制的“主”(确保设置 GTID)。在此设置中,D
不会成为 PXC 的一部分,不会参与认证,也不会参与法定人数;它将仅用作备份。