標籤:擷取資料 == markdown art 檔案名稱 不一致 info run inf
1.如何解決主從複寫延遲的問題?(1)主從複製原理
http://www.cnblogs.com/jenvid/p/8410922.html
- 1.salve執行slave start,salve服務IO線程會通過授權的使用者串連上master,並請求master從指定的檔案和位置之後發送bin-log日誌內容
- 2.master伺服器接收到來自slave伺服器的IO線程請求後,master伺服器上的IO線程根據slave伺服器發送的指定bin-log日誌之後的內容,然後返回給slave的IO線程,返回的資訊中出了bin-log日誌內容wait,還有本次返回日誌內容後在master伺服器端新的binlog檔案名稱已經在binlog中的下一個指定更新位
- 3.slave的IO線程接收到資訊後,將接收到的日誌內容依次添加到salve端的relay-log檔案的最末端,並將讀取到的master端的bin-log的檔案名稱和位置記錄到master-info檔案中,以便下一次讀取的時候能夠清楚的告訴master“我需要從某個bin-log的哪個位置開始往後的日誌內容,請發給我”、
- 4.slave的SQL線程檢測到relay-log中新增了內容後,會馬上解析relay-log的內容成為master端真實執行時候的那些可執行檔內容,並在自身執行。
(2)產生延遲的原因
- 1.主從複製是單線程操作,非同步進行
- 2.master的binlog是順序讀寫,效率高、輸送量高,DDL/DML是並行作業的
- 3.slave的relay-log實施的時候,DML和DLL是隨機操作且Slave_SQL_Running是單線程的,如果還有lock爭用,成本就更高了
- 4.master TPS並發高峰時,產生的DDL數量超過slave一個sql線程所能承受的範圍,延遲就產生了
- 5.
max_allowed_packet主從不一致
- 6.自增ID起始位置不一樣
- 7.主高從低版本不一致,新特性不相容
(3)解決延遲問題
- 1.主庫DDL快速執行DDL操作
- 2.主庫設定
雙1,sync_binlog=1 innodb_flush_log_at_trx_commit=1
- 3.從庫上可以設定為
雙0
- 4.
slave_net_timeoutslave讀取log資料失敗後,等待多久重建立立串連並擷取資料
- 5.
master-connect-retry重建立立主從串連時,如果串連失敗,重試的等待時間
- 6.從庫使用更好的硬體
- 7.專用slave伺服器,專用讀伺服器,專用備份伺服器
- 8.使用semi_sync外掛程式進行半同步,損失效能
2.如何判斷主從複製是否同步?(1)show slave status\G
Slave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master: 0
Seconds_Behind_Master是通過比較sql_thread執行的event的timestamp和io_thread複製好的 event的timestamp(簡寫為ts)進行比較的差值
(2)如果
Relay_master_Log_File ==
Master_Log_File
Read_Master_Log_Pos == Exec_Master_Log_Pos,則認為是同步的
主庫show master status\G的Position與從庫的Read_Master_Log_Pos相等,也是同步的
(3)使用第三方工具
mk-heartbeat,Maatkit
3.以下參數設為1怎麼理解?
set global sql_slave_skip_counter=1;
https://dev.mysql.com/doc/refman/5.6/en/set-global-sql-slave-skip-counter.html
- (1)從庫需要跳過某個無法執行的命令,在slave stop的狀態下設定
global sql_slave_skip_counter=N,跳過接下來的N個事件
一個event group包含多個有序的events
一個insert包含三個event,begin/insert/commit
對於事務性的表,一個event group代表一個事務
對於非事務性的表,一個event group代表一個單獨的SQL語句
- (2)N=1,會跳過若干個event,直到當前所在事務結束
- (3)N>1,則每跳過一個event都要N--
http://dinglin.iteye.com/blog/1236330
mysql小白系列_10 mysql主從複製原理