天天看點

mysql 主從複制-配置檔案說明檔案位置配置檔案内容參考資料

檔案位置

配置檔案位置/etc/my.cnf或/etc/mysql/my.cnf

配置檔案内容

[mysqld]
# 辨別機器id,在binlog中會記錄此資訊,在slave機器中也回記錄對應的master主機server_id
server_id=1
# 主庫配置
# binlog名稱,表示開啟binlog
log-bin=mysql-bin
# binlog忽略的庫,可配置多個
binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=information_schema
# binlog記錄的庫
binlog-do-db=mycattest
# binlog記錄的記錄類型 可選ROW/STATEMENT/MIXED
binlog-format=STATEMENT
#從庫配置
#啟用中繼日志,中繼日志名稱
relay-log=mysql-relay      
查詢環境變量語句:show variables like '%relay%';

binlog-format參數說明

說明 優點 缺點
ROW 從資料層面記錄變化 確定資料一緻性 記錄日志過多,且效率底例如批量更新會記錄所有更新後的資料
STATEMENT 記錄修改的SQL 節省空間,性能高 無法正确解析依賴上下文的環境變量,及資料庫函數,例如@ @hostname ,UUID()等
MIXED 依據每條sql判斷使用哪種模式記錄日志 綜合了兩個模式優點盡量保證了資料一緻性 增加了複雜性

企業場景如何選擇binlog模式 1、網際網路公司,使用MySQL的功能相對少(存儲過程、觸發器、函數) 選擇預設的語句模式,Statement Level(預設) 2、公司如果用到使用MySQL的特殊功能(存儲過程、觸發器、函數) 則選擇Mixed模式 3、公司如果用到使用MySQL的特殊功能(存儲過程、觸發器、函數)又希望資料最大化一直,此時最好選擇Row level模式

Mixed切換為ROW模式記錄場景

  • 當 DML 語句更新一個 NDB 表時;
  • 當函數中包含 UUID() 時;
  • 2 個及以上包含 AUTO_INCREMENT 字段的表被更新時;
  • 執行 INSERT DELAYED 語句時;
  • 用 UDF 時;
  • 視圖中必須要求運用 row 時,例如建立視圖時使用了 UUID() 函數;
  • 事物隔離級别較高時預設事物隔離級别為REPEATABLE-READ

參考資料

https://i4t.com/213.html https://www.cnblogs.com/zhoujinyi/p/5436250.html