amazonaurora是否为从节点上运行的只读事务提供了可序列化的隔离?

mitkmikd  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(446)

根据我阅读amazonaurora文档的理解,即使aurora主节点同步地将wal日志写入6个存储节点中的4个。除非有主节点的切换,否则aurora slave只能通过直接从主节点进行异步日志传送来保持同步。
如果这是真的,我会假设客户机可以将一个值写入并提交到主节点,然后立即向其中一个从节点发送一个只读查询,并观察旧值,而不是刚刚写入的最新值。
这意味着它只能在从属服务器上支持快照隔离模式。
这似乎是一个很大的限制!我想确定这是正确的。

vyu0f0g1

vyu0f0g11#

相对于非aurora读取副本,aurora的副本延迟非常小,但仍然是一个非零值,您可以使用cloudwatch metric来监视它 AuroraBinlogReplicaLag 以及 AuroraReplicaLag -更广泛地记录在https://docs.aws.amazon.com/amazonrds/latest/aurorauserguide/aurora.monitoring.html. 针对您的问题,aurora不会同步写入存储的所有6个拷贝—只有4个。有关此存储系统如何工作的4部分超级深入博客,请访问https://aws.amazon.com/blogs/database/amazon-aurora-under-the-hood-quorum-and-correlated-failure,我鼓励大家去读。您还可以阅读更多有关aurora复制的信息,网址为https://docs.aws.amazon.com/amazonrds/latest/aurorauserguide/aurora.replication.html. 但是史蒂夫布佐纳斯是正确的-如果你需要保证读后写 SERIALIZABLE 读取,然后需要从writer示例终结点读取:https://docs.aws.amazon.com/amazonrds/latest/aurorauserguide/aurora.overview.endpoints.html

pgx2nnw8

pgx2nnw82#

可串行化隔离对于集群来说是一个难题。我不知道有谁真正支持它。如果真的有人这么做了,我不知道我是否愿意接受随之而来的性能影响。
在aurora示例上运行以下命令似乎表明 REPEATABLE-READ 支持。

mysql> SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @@GLOBAL.tx_isolation, @@tx_isolation;
+-----------------------+-----------------+
| @@GLOBAL.tx_isolation | @@tx_isolation  |
+-----------------------+-----------------+
| REPEATABLE-READ       | REPEATABLE-READ |
+-----------------------+-----------------+
1 row in set (0.00 sec)
mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @@GLOBAL.tx_isolation, @@tx_isolation;
+-----------------------+-----------------+
| @@GLOBAL.tx_isolation | @@tx_isolation  |
+-----------------------+-----------------+
| REPEATABLE-READ       | REPEATABLE-READ |
+-----------------------+-----------------+
1 row in set (0.00 sec)

由于复制延迟的最终一致性;如果接收实时数据很重要,则应对照主数据进行读取。

相关问题