mysql主從復制 master和slave配置的參數大全


master所有參數
1 log-bin=mysql-bin
1、控制master的是否開啟binlog記錄功能;
2、二進制文件最好放在單獨的目錄下,這不但方便優化、更方便維護。
3、重新命名二進制日志很簡單,只需要修改[mysqld]里的log_bin選項,
如下例子:要重新調整logbin的路徑為“/home/mysql/binlog”
[mysqld]
log_bin=/home/mysql/binlog/binlog.log

ll /home/mysql/binlog
-rw-rw---- 1 mysql mysql 98 Mar 7 17:24 binlog.000001
-rw-rw---- 1 mysql mysql 33 Mar 7 17:24 binlog.index

需要注意:指定目錄時候一定要以*.log結尾,即不能僅僅指定到文件夾的級別,否則在重啟mysql時會報錯。


2. server-id=1
每個server服務的標識,在master/slave環境中,此變量一定要不一樣

3. expire_logs_days=15
通過此來實現master自動刪除binlog

4. innodb_flush_log_at_trx_commit=1
此參數表示在事務提交時,處理重做日志的方式;此變量有三個可選值0,1,2:
0:當事務提交時,並不將事務的重做日志寫入日志文件,而是等待每秒刷新一次
1:當事務提交時,將重做日志緩存的內容同步寫到磁盤日志文件,為了保證數據一致性,在replication環境中使用此值。
2:當事務提交時,將重做日志緩存的內容異步寫到磁盤日志文件(寫到文件系統緩存中)
建議必須設置innodb_flush_log_at_trx_commit=1

5.sync_binlog=1
1、此參數表示每寫緩沖多少次就同步到磁盤;
2、sync_binlog=1表示同步寫緩沖和磁盤二進制日志文件,不使用文件系統緩存
在使用innodb事務引擎時,在復制環境中,為了保證最大的可用性,都設置為“1”,但會對影響io的性能。
3、即使設置為“1”,也會有問題發生:
假如當二進制日志寫入磁盤,但事務還沒有commit,這個時候宕機,
當服務再次起來的恢復的時候,無法回滾以及記錄到二進制日志的未提交的內容;
這個時候就會造成master和slave數據不一致
解決方案:
需要參數innodb_support_xa=1來保證。建議必須設置

6 .innodb_support_xa=1
此參數與XA事務有關,它保證了二進制日志和innodb數據文件的同步,保證復制環境中數據一致性。建議必須設置

7.binlog-do-db=skate_db
只記錄指定數據庫的更新到二進制日志中

8. binlog-do-table=skate_tab
只記錄指定表的更新到二進制日志中

9. binlog-ignore-db=skate_db
忽略指定數據庫的更新到二進制日志中

10.log_slave_updates=1
此參數控制slave數據庫是否把從master接受到的log並在本slave執行的內容記錄到slave的二進制日志中
在級聯復制環境中(包括雙master環境),這個參數是必須的

11.binlog_format=statement|row|mixed
控制以什么格式記錄二進制日志的內容,默認是mixed

12. max_binlog_size
master的每個二進制日志文件的大小,默認1G

13.binlog_cache_size
1、所有未提交的事務都會被記錄到一個緩存或臨時文件中,待提交時,統一同步到二進制日志中,
2、此變量是基於session的,每個會話開啟一個binlog_cache_size大小的緩存。
3、通過變量“Binlog_cache_disk_use”和“Binlog_cache_use”來設置binlog_cache_size的大小。
說明:
Binlog_cache_disk_use: 使用臨時文件寫二進制日志的次數
Binlog_cache_use: 使用緩沖記寫二進制的次數

14.auto_increment_increment=2 //增長的步長
auto_increment_offset=1 //起始位置
在雙master環境下可以防止鍵值沖突

 

slave所用參數
1.server-id=2
和master的含義一樣,服務標識

2.log-bin=mysql-bin
和master的含義一樣,開啟二進制

3.relay-log=relay-bin
中繼日志文件的路徑名稱

4. relay-log-index=relay-bin
中繼日志索引文件的路徑名稱

5. log_slave_updates=1
和master的含義一樣,如上

6.read_only=1
1、使數據庫只讀,此參數在slave的復制環境和具有super權限的用戶不起作用,
2、對於復制環境設置read_only=1非常有用,它可以保證slave只接受master的更新,而不接受client的更新。
3、客戶端設置:
mysq> set global read_only=1

7. skip_slave_start
使slave在mysql啟動時不啟動復制進程,mysql起來之后使用 start slave啟動,建議必須

8.replicate-do-db
只復制指定db

9.replicate-do-table
只復制指定表

10. replicate-ingore-table
忽略指定表

11. replicate_wild_do_table=skatedb.%
模糊匹配復制指定db

12. auto_increment_increment=2
auto_increment_offset=1
和master含義一樣,參考如上

13. log_slow_slave_statements
在slave上開啟慢查詢日志,在query的時間大於long_query_time時,記錄在慢查詢日志里

14. max_relay_log_size
slave上的relay log的大小,默認是1G

15.relay_log_info_file
中繼日志狀態信息文件的路徑名稱

16. relay_log_purge
當relay log不被需要時就刪除,默認是on
SET GLOBAL relay_log_purge=1

17.replicate-rewrite-db=from_name->to_name
數據庫的重定向,可以把分庫匯總到主庫便於統計分析


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM