天天看點

MySQL主從複制技術之常用配置參數

1、基本參數

      bind-address=192.168.1.151

      server_id=513306

      #(主從不相同,規範建議:後IP+端口)

      skip_name_resolve=off

      #(跳過主機名/域名解析)

      transaction-isolation=read-committed

2、關于binlog二進制日志參數

      log_bin=/mysql/log/3306/binlog/itpuxdb-binlog #(必需)

      log_bin_index=/mysql/log/3306/binlog/itpuxdb-binlog.index #(必需)

      binlog_format=row #(必需)

      binlog_rows_query_log_events=on #二進制日志中記錄更詳細的SQL操作 #(必需)

      sync_binlog = 1 #預設,MySQL每次送出事務之前會将二進制同步到磁盤上,保證伺服器崩潰時不會丢失事件

      innodb_flush_log_at_trx_commit=1  #預設,每次事務送出時MySQL都會把log buffer的資料寫入log file,并且flush(刷到磁盤)中去。

      --------------------------------------------------------------------------------------------------------------------

      log_bin_trust_function_creators = 1 #預設為0,同步函數和存儲過程

      max_binlog_size = 2048M #預設為1024M

      expire_logs_days = 7 # binlog保留多少天,看具體安排

      binlog_cache_size = 1M #預設是32K,binlog緩存的大小,設定要當心,建議1~4M,根據業務繁忙情況

      innodb_support_xa = 1 #這個參數是在主庫上設定的,預設是自動開啟的。

      看到XA首先想到的就是分布式事務了,這個參數確定事務日志寫入bin-log的順序是事務的time-line是一緻的。

      這樣在系統崩潰的時候,啟用日志恢複,可以嚴格按照時間線來恢複資料庫。

3、關于relay_log中斷日志參數

     relay_log = /mysql/log/3306/relaylog/itpuxdb-relay.log

     relay-log-recover = 1

     #I/O thread crash safe -IO線程安全

     打開replication中繼日志崩潰恢複模式,replication支援中繼日志的自我修複功能。

     當slave叢庫當機後,如果replay-log發送損壞,導緻一部分中繼日志沒有處理,就自動放棄未執行的replay-log,

     重新從master上擷取日志,完成了中繼日志的恢複,該參數表示目前接收到的relay-log全部删除,

     然後從SQL線程回放到位置重新拉取)

     relay_log_info_repository = table

     # SQL thread crash safe  -SQL線程安全

     預設是file,SQL線程的資料回放是寫資料庫操作,relay-info是寫檔案操作,這兩個操作很難保證一緻性,

     relay-info将寫入到mysql.slave_relay_log_info 這張表中)

     master_info_repository = table

     #預設是file,IO線程也是接收一個個的event,将接收到的event,

     通過設定參數master_info_repository 可以将master-info資訊寫到什麼位置,性能上比設定為FILE有很高的提升; 

     可靠性也得到保證,設定為TABLE後,master-info将資訊儲存到mysql.slave_master_info

4、關于同步方式的參數

      loose_rpl_semi_sync_master_enabled = 1

      #MySQL 5.6開啟主的半同步複制(rpl_semi_sync_master_enabled)

      loose_rpl_semi_sync_slave_enabled = 1

      #MySQL 5.6開啟從的半同步複制(rpl_semi_sync_slave_enabled)

      loose_rpl_semi_sync_master_timeout = 5000 #逾時5秒,切回異步

      rpl_semi_sync_master_wait_for_slave_conut = 1 #至少收到1個slave發回的ack

      rpl_semi_sync_master_wait_point=AFTER_SYNC #MySQL5.7的方法;開啟無損複制

      rpl_semi_sync_master_wait_point=AFTER_COMMIT #MySQL5.7的方法;開啟半同步複制

5、關于GTID的參數

      gtid_mode = on

      log_slave_updates = 1

      enforce_gtid_consistency = 1

      gtid_mode:

      - on :産生GTID,slave隻接收帶GTID的事務

      -ON_PERMISSIVE:産生GTID,slave接受不帶GTID事務也接受帶GTID的事務

      -OFF:不産生GTID,slave隻接受不帶參GTID的事務

      -OFF_PERMISSIVE:不産生GTID,slave接受不帶GTID事務也接受帶GTID的事務

      enforce-gtid-consistency:

      -on:當發現語句/事務不支援GTID時,傳回錯誤資訊

      -WARN:當發現不支援語句/事務,傳回警告,并在日志中記錄警告資訊

       -OFF:不檢查是否有GTID不支援的語句/事務

        log-slave-updates:

        當從庫log_slave_updates參數沒有開啟時,從庫的binlog不會記錄來源于主庫的操作記錄。