標籤:mysql複製參數講解
mysql複製參數講解
1、master上的參數
log-bin #必須
server-id #1-pow(2,32)-1#必須 (連接埠+ip)
server-uuid #路徑為$datadir/auto.cnf
log-bin-index#必須
binlog-format
binlog_cache_size
max_binlog_size
sync_binlog
expire_logs_days
log_bin_trust_function_creators
2、配置參數(IGNORE/DO規則的炕)
log-bin
binlog檔案名稱首碼,可以全路徑
log-bin=mybinlog
log-bin=/data/mysql/mysql3306/mybinlog
不可動態修改
server-id
唯一區別ID,同一個叢集內不可重複
可動態修改從mysql5.6開始
log-bin-index
binlog索引檔案首碼名,和log-bin一樣,也可以全路徑
不可動態修改
binlog-format
binlog日誌格式:statement|row|mixed 三種
可動態修改
binlog_cache_size 建議1M到2M
binlog寫入buffer
可動態修改參數
max_binlog_size 預設是1G 推薦128M 或256M
限制單個binlog大小
可動態修改
sync_binlog=n
#交易系統為了安全 sync_binlog=1
多少個sql之後,調用fdatasync函數重新整理binlog到disk
fsync()/fdatasync區別是什嗎?
fsync是完全傷心到磁碟,fdatasync只重新整理資料,不重新整理metadata
可動態修改
expire_logs_days=n 推薦儲存7天
n天后自動刪除binlog
可動態修改
log_bin_trust_function_creators=n 一般情況下為1就行
開啟binlog時,是否允許建立預存程序
可動態修改
3、特殊說明:
log_warnings=n 最好為1
不然會在錯誤記錄檔看到異常斷開的串連(Aborted connection)
MySQL5.6.5 MySQL5.7.5以後 binlog v2格式 GTID binlog_checksum
遷移報錯 5.6 -> 5.5 5.5 -> 5.6
binlog_checksum=none
log_bin_use_v1_row_events=on
binlog_row_image5.6.2後出現
預設為full
binlog_rows_query_log_events
binlog_gtid_recovery_simpliefied
Crash Recovery
基於MySQL5.6GTID的crash recovery 是有mysql-5.6.21支援到5.6.23穩定
傳統複製裡面也是可以支援的
[email protected] [test]>show global variables like "%repo%";
+---------------------------+-------+
| Variable_name | Value |
+---------------------------+-------+
| master_info_repository | FILE |
| relay_log_info_repository | FILE |
FILE------>table
友好的報錯資訊設定
binlog_error_action | ABORT_SERVER
binlogging_impossiable_mode----->binlog_error_action
[email protected] [test]>show global variables like "%binlog%";
+-----------------------------------------+----------------------+
| Variable_name | Value |
+-----------------------------------------+----------------------+
| binlog_cache_size | 1048576 |
| binlog_checksum | CRC32 |
| binlog_direct_non_transactional_updates | OFF |
| binlog_error_action | ABORT_SERVER |
| binlog_format | ROW |
| binlog_group_commit_sync_delay | 0 |
| binlog_group_commit_sync_no_delay_count | 0 |
| binlog_gtid_simple_recovery | ON |
| binlog_max_flush_queue_time | 0 |
| binlog_order_commits | ON |
| binlog_row_image | FULL |
| binlog_rows_query_log_events | OFF |
| binlog_stmt_cache_size | 32768 |
| innodb_api_enable_binlog | OFF |
| innodb_locks_unsafe_for_binlog | OFF |
| log_statements_unsafe_for_binlog | ON |
| max_binlog_cache_size | 1048576 |
| max_binlog_size | 268435456 |
| max_binlog_stmt_cache_size | 18446744073709547520 |
| sync_binlog | 0 |
+-----------------------------------------+----------------------+
20 rows in set (0.00 sec)
4、master其他參數
auto_increment_increment
auto_increment_offset
bin-do-db
bin-ignore-db
max_binlog_cache_size
binlog_stmt_cache_size
max_binlog_stmt_cache_size
biglog_direct_non_transactional_updates
5、具體配置參數的炕:
auto_increment_increment:每次自增的步長
auto_increment_offset:自增起始的位移量 pxc
bin-do-db:記錄db,其他db的binlog都不記錄,存在風險 不建議設定
配置案例:
bin-do-db=mydb1
bin-do-db=mydb2
bin-ignore-db
bin-ignore-db=test 表示test這個庫的binlog記錄都不被記錄
建議:所有過濾規則不建議在主庫中設定(bin-do-db、bin-ignore-db)
max_binlog_cache_size 預設就行
biglog_direct_non_transactional_updates預設不動
6、gtid相關參數
show global variables like "%gtid%";
Current database: test
+----------------------------------+------------------------------------------+
| Variable_name | Value |
+----------------------------------+------------------------------------------+
| binlog_gtid_simple_recovery | ON |
| enforce_gtid_consistency | ON |
| gtid_executed | 6e5d664c-c7e5-11e6-88b1-000c296ae445:1-9 |
| gtid_executed_compression_period | 1000 |
| gtid_mode | ON |
| gtid_owned | |
| gtid_purged | |
| session_track_gtids | OFF |
+----------------------------------+------------------------------------------+
如果開啟了gtid(用於控制只有是事務安全的語句才能被記錄到log中)
gtid_mode用於控制是否啟用GTID
如果設定為on,則必須是log-bin ,log-salve-updates,enforce_gtid_consistency也要啟用
gtid_purged:用於指定那個事務從binlog忽略了。reset master 這個值會被清空。
gtid_executed:執行到的GTID號及所有執行的gtid號。和(show master status,show slave status)輸出值Executed Gtid set意思一樣。
rest master :這個值會被清空。
總結:主庫開啟最少參數
server-id
server-uuid
log-bin
gtid_mode
enforce_gtid_consistency
max_binlog_size
expire_logs_days
binlog-format
#############################################################################################################################################
7、slave上的參數
server-id
server-uuid
relay-log #io thread讀取過來存到本地檔案
relay-log-index
read-only #從庫唯讀,但對super許可權的使用者不起作用 這個設定意義不大,一般不要設定。
8、具體配置參數的炕:
server-id:
relay-log:relaylog檔案名稱首碼,可以是全路徑,不可以動態更改
relay-log-index:relaylog 索引檔案首碼名 和relay-log一樣,可以全路徑;不可以動態更改。
read-only:除非有super許可權,否則無法修改資料,不過不影響自主建立暫存資料表(temporary table ,analyze table,optimize table) 可以動態修改。
9、salve其他參數
log-slow-salve-statements
log_slave_updates #建議這個參數無論如何都要設定。作用:主庫更新,從庫會記錄日誌。
max_relay_log_size
relay_log_info_file
relay_log_purge
relay_log_recovery
replicate-same-server-id #不建議使用
skip-slave-start=1 #不要自動同步 最好設定為1
slave_load_tmpdir
slave_transaction_retries #預設就行,重試
slave_parallel_workers #預設是關閉的
#例子
log_slave_updates 已經開啟
[email protected] [wu]>show global variables like "%log%"
[email protected] [test]>show master status;
/usr/local/mysql/bin/mysqlbinlog -v--base64-output=decode-rows /data/mysql/mysql3306/logs/mysql-bin.000002 >1.log
relay_log_space_limit 預設沒有設定的。有問題才設定
下面參數不建議設定:
show global variables like "%report%";
| report_host | |
| report_password | |
| report_port | 3306 |
| report_user
log-slow-slave-statements:slave複製產生的slow log 是否需要記錄;建議開啟。
max_relay_log_size 建議128M
master_info_repository relay_log_info_repository參數設定如下:
master-info-file/relay-log-info-file/relay-log-info
----->master_info_repository relay_log_info_repository
[email protected] [wu]>show global variables like "%info%";
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 17
Current database: wu
+--------------------------------+----------------+
| Variable_name | Value |
+--------------------------------+----------------+
| master_info_repository | FILE |
| relay_log_info_file | relay-log.info |
| relay_log_info_repository | FILE |
| session_track_transaction_info | OFF |
| sync_master_info | 10000 |
| sync_relay_log_info | 10000 |
+--------------------------------+----------------+
6 rows in set (0.00 sec)
發展趨勢 file將來被換成table
sync_master_info=n :一般情況下不要動 除非安全性要求非常高才設定。
relay_log_purge :relay應用完。是否需要自動馬上刪除
relay_log_recovery: salve崩潰或者正常啟動時,未應用的relay log 會被刪除,重新從master請求binlog,再次產生relay log
10、slave過濾參數
一般情況下,過濾規則在從庫設定。不要在主庫設定。
replicate-do-table
replicate-ignore-table
replicate-rewrite-db=db1->db2
replicate-wild-do-table
replicate-wild-ignore-table
replicate-do-db
replicate-ignore-db
slave_net_timeout
slave_skip_errors
sql_slave_skip_count
本文出自 “梁小明的部落格” 部落格,請務必保留此出處http://7038006.blog.51cto.com/7028006/1893617
mysql複製參數講解