Binlog 格式 - RDS 預設
預設情況下,MySQL 5.6 預設二進制日誌格式為“STATEMENT”。(https://dev.mysql.com/doc/refman/5.6/en/replication-formats.html)
在 RDS 上執行的 MySQL 5.6 預設格式設置為“MIXED”(http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.MySQL.html)。似乎 STATEMENT 甚至不可用。
這種差異背後的背景是什麼?
沒有差異。RDS 作為託管服務,不會為每個配置參數啟用所有可能的可配置值。
RDS 的架構師選擇不將
STATEMENT
其作為選項提供BINLOG_FORMAT
,大概是因為他們認識到它在複製環境中有許多限制。並非所有修改數據的語句(例如
INSERT
、DELETE
、UPDATE
和REPLACE
語句)都可以複製$$ correctly $$使用基於語句的複制。使用基於語句的複制時,任何不確定的行為都難以複製。 https://dev.mysql.com/doc/refman/5.6/en/replication-sbr-rbr.html#replication-sbr-rbr-sbr-disadvantages
即使您沒有 RDS 副本,二進制日誌仍然用於 RDS 時間點恢復。如果至少不需要
MIXED
日誌記錄,RDS 將無法將實例恢復到某個時間點並保證它實際上與同一時間點的原始實例相同。使用MIXED
或ROW
使之成為可能。
MIXED
事實上,更令人困惑的問題是為什麼官方發行版中的預設值沒有在 MySQL 5.1 或 5.5 中改回原來的值。使用STATEMENT
模式幾乎總是錯誤的選擇。