我想将我的数据库实例从 AWS RDS MySQL 迁移到 Aurora,但我对复制以及 Aurora 如何管理写入/读取操作有疑问。
我有我的应用程序,我想将写入操作与读取分开。我想创建一个仅用于写入操作的Master实例,而其他实例(Read Replica)仅用于读取操作。
问题就在这里,我在 AWS 文档上阅读到我需要对我的应用程序进行这种分离,我认为或者我希望找到一种方法来做到这一点并对我的应用程序透明。我绘制了一个简单的模式来使用 Aurora(来自 AWS):
AWS 说我必须做什么:
-----------------
| Application |
-----------------
| |
| writes |reads
| |
------------ ------------------
| Master | | Read Replica |
------------ ------------------
^ ^
|replication |
|____________|
我需要什么:
我需要 Master 始终保持写入操作,并将读取重定向到只读副本实例。
-----------------
| Application |
-----------------
|
|write/read
|
------------ Reads ------------------
| Master | <-------> | Read Replica |
------------ ------------------
^ ^
| replication |
|_____________________|
复制始终在运行。但我想将写入和读取过程分开。所以我的总结:
主实例检测写入/读取操作之间的差异,所有读取操作将由只读副本管理。我需要这个解决方案,因为 aurora 提供了一个很好的特性来改进我的 RDS,但唯一的问题是我需要在写入和读取操作之间建立平衡:写入操作在 master 中处理,并将读取操作发送到 Read复制品。我不想像亚马逊建议的那样在我的应用程序代码中定义这个过程并在它们之间进行选择。