我了解使用参数设置的缺点
innodb_flush_log_at_trx_commit = 2
如果您想了解更多,请查看另一个答案,例如Is it safe to use innodb_flush_log_at_trx_commit = 2
我想了解的是 - 如果我使用 MultiAZ RDS 服务器,这是否意味着写入也会发生在另一台服务器上,因此在失败时我会保留数据?
还是在写入发生后发生复制?
我了解使用参数设置的缺点
innodb_flush_log_at_trx_commit = 2
如果您想了解更多,请查看另一个答案,例如Is it safe to use innodb_flush_log_at_trx_commit = 2
我想了解的是 - 如果我使用 MultiAZ RDS 服务器,这是否意味着写入也会发生在另一台服务器上,因此在失败时我会保留数据?
还是在写入发生后发生复制?
多可用区 RDS 使用块级复制来复制 I/O,因此它将等待本地实例上的块 I/O 请求,然后将该写入复制到另一个 AZ 上的实例。
使用
innodb_flush_log_at_trx_commit = 2
,日志写入使用缓冲 I/O,因此它们可能会将块 I/O 请求延迟最多 1 秒。换句话说,刷新 innodb 日志是触发同步到另一个多可用区实例的原因。在首先在本地刷新 innodb 日志之前,不会发生多可用区同步。
因此,如果您对
innodb_flush_log_at_trx_commit
.如果您试图通过使用该宽松设置来获得更好的性能,但又要保证 HA,您就不能这样做。RDS 性能通常很差。如果您需要高写入吞吐量,则需要不同的平台。