日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 主备及时_MySQL高可用(二)主备延时如何解决?

發布時間:2024/4/17 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 主备及时_MySQL高可用(二)主备延时如何解决? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從上篇文章我們知道主備同步是依賴于 binlog,主庫負責生產 binlog,備庫負責消費 binlog,從而實現主備同步。

今天我們來學習一下主備同步里的一個重點的問題:主備延時。

主備延時,簡單來說,就是主庫和備庫的數據一致出現一定的時間差,比如備庫的此刻的數據快照是主備5分鐘前的數據快照,那就說明主備延時有5分鐘。

主備延遲是怎么產生的

產生主備延遲的根本原因是備庫上消費 binlog 的速度趕不上主庫產生 binlog 的速度。比如:

大事務,例如一次性delete很多數據;

大表的DDL;

備庫壓力大。例如有些像運維、訂單等統計分析在備機上跑;

主備庫的服務器的配置不同,主庫的服務器配置好,備庫的服務器配置差。

主備延遲的排查之路

網絡

網絡可能導致主備延遲的問題,比如主庫或者備庫的帶寬滿負載、主備之間網絡延遲很大,有可能會導致主庫的 binlog 沒有全量傳輸到備庫,造成延遲。

機器性能

備庫 使用了爛機器? 比如主庫使用了 SSD,而備庫使用的是 SATA。

備庫 高負載? 可能在備庫上做統計分析,導致備庫的負載很高。可使用 top 命令進行排查。

備庫 磁盤有問題? 磁盤、raid卡、調度策略有問題的情況下,有的時候會出現單個IO延遲很高的情況。可使用 iostat 查看 IO 運行情況。

大事務

是否經常有大事務? 比如在 RBR 模式下,執行帶有大量的 delete 操作,或者一個表的 alter 操作等,都會導致延時情況的發生。可通過 processlist 命令查看相關信息,或者使用 mysqlbinlog 查看 binlog 中的 SQL 就能快速確認。

鎖沖突問題也可能導致備庫的 SQL 線程執行慢。比如一些 select ... for update 的 SQL。可通過 processlist 和 查看 information_schema 下面與鎖和事務相關的表來查看分析。

參數

如果使用的是 InnoDB 引擎,可以調整 innodb_flush_log_at_trx_commit、sync_binlog 參數來提升復制速度。

sync_binlog 的默認值是 0,MySQL 不會將 binlog 同步到磁盤,其值表示每寫多少 binlog 同步一次磁盤。

innodb_flush_log_at_trx_commit 其值表示每一次事務提交或事務外的指令需要把日志 flush 到磁盤。

注:這種調整可能會影響數據的安全性,需要結合業務來考慮。

多線程

在 MySQL 5.6 版本之前,MySQL采用單線程復制,而從 5.6 開始,正式支持多線程復制。

如果是單線程同步,單個線程存在寫入瓶頸,導致主備延遲,那就先調整為多線程試試效果。

可以通過 show processlist 查看是否有多個同步線程,也可以查看參數的方式查看是否使用多線程(show variables like '%備庫_parallel%')

當你看到是上圖這種結果的時候,恭喜你,你使用的是單線程。使用下面那行命令改造成多線程復制:

STOP 備庫 SQL_THREAD;SET GLOBAL 備庫_parallel_type='LOGICAL_CLOCK';SET GLOBAL 備庫_parallel_workers=8;START 備庫 SQL_THREAD;

改造后如下圖所示:

參考資料

總結

以上是生活随笔為你收集整理的mysql 主备及时_MySQL高可用(二)主备延时如何解决?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。