久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL保證復制高可用的重要參數有哪些

140次閱讀
沒有評論

共計 2019 個字符,預計需要花費 6 分鐘才能閱讀完成。

這篇文章主要介紹 MySQL 保證復制高可用的重要參數有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

expire_logs_days,binlog 清理的時間。
從庫上 relay-log-recovery = 1 和 relay-log-info-repository = TABLE; 保證了主從數據的一致性,不論從機怎么出錯都能保證,主從一致。

為什么呢?
首先說 SQL 線程,SQL 線程 apply 應用二進制日志,并且將 binlog 應用到的位置記錄到 relay-info.log 中。

并且并不是 relay log 應用一次就刷盤寫 relay-log.info 一次,而是一個參數指定,如下,意思是說回放 events 10000 次寫一次盤。這個就是為什么從庫 crash 了,出現 1062 錯誤。因為從庫已經插入了數據,但是文件 relay-log.info 并沒有記錄文件,當重啟后文件告訴數據庫還要執行一次操作,就會出現這個主鍵重復插入的錯誤。所以這個參數設置為 table 的,就滿足了一致性,避免了數據庫和文件的不同步問題。

IO 線程:
和 relay_log_info_repository 不同的是,單單把 master_info_repository 設置成 table 是不能解決,備庫 crash 了,從 IO 線程接收日志的一致性問題,因為 IO 線程接收日志寫的文件是 relay log 文件,而數據庫接收到主庫的日志到哪里寫的是 master-info.log 文件,(同步情況由 sync_master_info 決定) 這是兩個不同的文件,比如當 relay 接收到了日志,為 event2,但是此時 master-info.log 記錄的是 1,此時 crash 了,當重新啟動從庫時,master-info.log 告訴數據庫我才接收到 1,又重新接收了一次 2,這樣就重復了,即便是 master_info_repository 設置成 table 一樣不解決問題。但是報錯時,show slave status。最終作用到的都是 SQL 線程報錯。所以還要設置另外一個參數 relay-log-recovery=1

最后一個非常重要的參數:

把當前接收到的 relay log 清理掉。然后從 SQL Thread 應用到的位置,重新拉取 relay log。

但是要保證主庫 binlog 要保留,保留時間要夠,因為我見過的有的公司主從延遲一個月之久。
還有 read-only 的設置,5.7 有個新的權限 super_read_only 參數,設置為 on,大家都沒有權限,dba 也沒有。

SQL 線程高可用

將 SQL 回放的位置寫到 relay-info.log 中,沒執行到一個 event,就寫一次這個文件,那么性能會不會很差?。恳驗闆]有 fsync 所以文件記錄的會落后,將 relay_log_info_repository=TABLE(5.6 才有),將這次造作放在數據庫,原子操作。(從庫配置)

寫 10000 個 event 才 fsync 一次寫盤,那么就有一問題,如果設置為 1,有用嗎?沒用,有丟失一條記錄的可能。

sync_relay_log_info:這個參數和 sync_relay_log 參數一樣,當設置為 1 時,slave 的 I / O 線程每次接收到 master 發送過來的 binlog 日志都要寫入系統緩沖區,然后刷入 relay-log.info 里,這樣是最安全的,因為在崩潰的時候,你最多會丟失一個事務,但會造成磁盤的大量 I /O。當設置為 0 時,并不是馬上就刷入 relay-log.info 里,而是由操作系統決定何時來寫入,雖然安全性降低了,但減少了大量的磁盤 I / O 操作。

IO 線程的高可用  

接收到一個 event,寫 master.log 文件,表示接受到的位置,然后再去寫 relay log file,這時候發送 crash,又會有問題,同樣可以存表 master_info_repository。

master log 文件會落后,IO 線程會重新拉 master log 文件中后的 binlog,重復拉日志,SQL 線程就報錯了,最終錯誤的顯示都是 SQL 線程。

Relay-log-recovery=1,將當前接受到的所有 relay log
清除掉。然后以 SQL 線程運行到的位置重新拉取 thread。SQL 線程是可靠的,那么,還有什么問題呢?如果主庫上的二進制日志沒有了,那么也來不過來了,就有問題了,即便是基于 SQL 線程。但是線上有落后很久的情形。

master_info_repository=TABLE
從開啟并行復制,也一定設置為 table,性能有一倍的差距。

Read_only 與 super_read_only 的區別,有 super_priv 權限的用戶設置 read_only 還是可以寫入的,

從庫 super_read_only 也打

以上是“MySQL 保證復制高可用的重要參數有哪些”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-26發表,共計2019字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 通海县| 海门市| 外汇| 靖边县| 株洲市| 镇江市| 固始县| 洪泽县| 县级市| 太湖县| 连云港市| 闵行区| 旅游| 嘉禾县| 清水县| 濮阳县| 丹凤县| 东阳市| 永昌县| 玛沁县| 沧州市| 仙桃市| 日喀则市| 崇义县| 中山市| 镇宁| 墨江| 卓资县| 昌平区| 邢台市| 兰坪| 雷州市| 双城市| 娄底市| 诸城市| 彰化县| 巴东县| 介休市| 阿瓦提县| 吉安市| 云龙县|