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