MySQL 的主從復制機制是非常重要的,在實際應用中也非常常見。但有時候我們需要在一個數據庫中跳過某些操作不進行復制,這就需要用到 skip 參數了。
MySQL 主從復制原理大致是:在主庫上執行 SQL,生成 binlog 二進制日志,從庫通過讀取這個 binlog 實現復制。
在進行主從同步的過程中,有時候主庫上執行的 SQL 并不需要在從庫上執行,比如一些對從庫數據沒有影響的測試性質的 SQL,又或者是一些由于特殊原因(比如數據回滾等)不能在從庫執行的 SQL。此時,我們就需要在從庫上跳過這些 SQL。
可以使用 skip 參數來實現這一目的,格式為 skip-query 或 skip-slave-start。其中,skip-query 表示從庫跳過指定的 SQL 語句,而 skip-slave-start 表示跳過從庫的啟動操作。
具體的使用方法如下:
CHANGE MASTER TO MASTER_HOST='xxx.xxx.xxx.xxx', MASTER_USER='user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=0, MASTER_PORT=3306, MASTER_CONNECT_RETRY=10, MASTER_RETRY_COUNT=86400, MASTTER_HEARTBEAT_PERIOD=30, MASTER_SSL=1, MASTER_SSL_CA='/usr/local/mysql/data/ca.pem', MASTER_SSL_CERT='/usr/local/mysql/data/client-cert.pem', MASTER_SSL_KEY='/usr/local/mysql/data/client-key.pem', GROUP_REPLICATION=DEFAULT, MASTER_AUTO_POSITION=1, relay_log=mysqld-relay-bin, relay_log_index=mysqld-relay-bin.index, relay_log_info_file=relay-log.info, skip-query='alter table...', skip-slave-start=1;
在這個例子中,我們通過跳過 alter table 操作達到了從庫不執行該 SQL 的目的。
需要注意的是,skip 參數并不是所有情況都可以使用的,在生產環境中推薦慎重使用。
上一篇mysql 主主同步失敗
下一篇mysql 主從 均衡