MySQL 9.0 版本注意事項
伺服器使用數種日誌格式在二進制日誌中記錄資訊
MySQL 中的複寫功能最初是基於將 SQL 陳述式從來源傳播到複本。這稱為基於陳述式的日誌記錄。您可以透過使用
--binlog-format=STATEMENT
啟動伺服器來使用此格式。在基於列的日誌記錄(預設值)中,來源會將事件寫入二進制日誌,以指示個別表格列如何受到影響。您可以透過使用
--binlog-format=ROW
啟動伺服器來讓伺服器使用基於列的日誌記錄。還有第三個選項可用:混合日誌記錄。使用混合日誌記錄時,預設會使用基於陳述式的日誌記錄,但在某些情況下,日誌記錄模式會自動切換為基於列的記錄,如下所述。您可以透過使用選項
--binlog-format=MIXED
啟動 mysqld 來明確讓 MySQL 使用混合日誌記錄。
日誌格式也可以由正在使用的儲存引擎設定或限制。這有助於在來源和使用不同儲存引擎的複本之間複寫某些陳述式時消除問題。
使用基於陳述式的複寫時,複寫非決定性陳述式可能會出現問題。在決定給定陳述式對於基於陳述式的複寫是否安全時,MySQL 會判斷它是否可以保證可以使用基於陳述式的日誌記錄來複寫該陳述式。如果 MySQL 無法做出此保證,它會將陳述式標記為可能不可靠,並發出警告 陳述式可能不適合以陳述式格式記錄。
您可以改用 MySQL 的基於列的複寫來避免這些問題。