幕后的数据库复制

DB replication behind the scenes

尝试在网上搜索了很多,但没有找到满意的信息。 我们创建数据库副本,这样主数据库实例就不必处理读取查询的负载,而副本实例也不必处理写入查询的负载。但是,最终主数据库实例将不得不以某种方式向副本实例发送写入查询。那么这些复制写查询不会增加副本实例的负载吗?我知道它没有,但为什么不呢? 其次,由于我们的主数据库实例现在还负责跨副本实例复制数据,这不会增加主数据库实例的负载吗? 我来自 AWS 背景,处理 RDS 实例和只读副本。

Does these replication write queries not increase load on replica instances?

是的,它们是写操作,但这就是它们保持同步的方式 - 只读副本正在 WAL 上复制(请查看下面的注释免责声明,因为并非所有复制都来自 WAL)主写入节点,因此它们的复制只是写入节点已经经历过的影子。

如果主节点有一个长期查询,副本大小没有反映主节点的存储大小等...您可能成为复制滞后的受害者

Since that our primary DB instance is now also responsible for replicating data across replica instances, does that not increase load on primary DB instance?

当然 - 任何 I/O 操作都是计算成本,但复制活动由 AWS 在主节点外管理。这就是您在使用托管 DBMS 时要支付的费用,主要(编写器)使用的低级存储卷也由 AWS 读取和复制

The DB cluster volume is physically made up of multiple copies of the data for the DB cluster. The primary instance and the Aurora Replicas in the DB cluster all see the data in the cluster volume as a single logical volume.

读取 AWS

提供的复制 documentation

注意:您使用的数据库类型 运行 也会影响复制方法 - AWS doc