MySQL 復制是將一個服務器上的數據庫復制到另一個服務器上的過程,以建立兩個服務器之間的副本。復制可以用于多個用例,例如從生產服務器到備份服務器的復制或從主服務器到從服務器的復制以提高性能或實現高可用性。
MySQL 提供了多種不同的復制方案,包括基于語句的復制 (statement-based replication)、基于行的復制 (row-based replication)和混合復制 (mixed replication)。
# 基于語句的復制
binlog_format=STATEMENT
# 基于行的復制
binlog_format=ROW
# 混合復制
binlog_format=MIXED
基于語句的復制是 MySQL 的默認復制模式,它直接執行 SQL 語句并將其記錄到二進制日志中。當從服務器執行這些語句時,它們被相同的順序再次執行以生成相同的數據。由于它會重復執行相同的 SQL 語句,因此基于語句的復制可能會導致一些數據不一致的問題。
另一方面,基于行的復制將數據更改作為每個行的變更,而不是 SQL 語句的集合。從服務器接收到更改事件后,它就會將其直接應用于它的副本數據庫中。這種復制模式更加安全和可靠,因為它可以忽略 SQL 語句產生的任何問題。
混合復制基于語句和行的復制結合,它將基于語句的復制用于非事務性表,并將基于行的復制用于事務性表。這種復制模式在提供可靠性和靈活性方面具有優勢。
在配置 MySQL 復制時,需要考慮復制的拓撲結構。最基本的拓撲結構是 單主-單從 (master-slave) 復制,其中一個主服務器負責將數據復制到一個或多個從服務器上。更高級的拓撲結構可能包括 主-從-從 (master-slave-slave) 復制或環形復制 (circular replication)。