成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

UDB高可用數據庫內核深度優化

云計算
UDB是UCloud提供的云數據庫,支持實例級別的高可用。UCloud數據庫團隊在數據庫原生復制的多個方面進行了深度優化,提升UDB高可用數據庫的功能和性能。

UDB是UCloud提供的云數據庫,支持實例級別的高可用。UCloud數據庫團隊在數據庫原生復制的多個方面進行了深度優化,提升UDB高可用數據庫的功能和性能。

一、UDB高可用數據庫架構

UDB高可用數據庫產品以虛擬IP、HAProxy、單節點UDB數據庫搭建雙節點高可用架構:

  • 雙節點的UDB數據庫保證數據庫數據的全量冗余,同時保證數據庫的可用性;
  • HAProxy在同一時間只連接一個UDB節點,避免多點寫入帶來的數據沖突問題;
  • 雙節點HAProxy保證Proxy的可用性;
  • 虛擬IP在HAProxy發生宕機時通過IP漂移的方式對HAProxy進行切換,用戶不需要再次修改IP。

在上述架構中,從節點UDB的數據是否完整、是否與主庫保證數據一致性是整個高可用架構的關鍵,所以用于數據傳輸的半同步復制起著至關重要的作用。針對原生的半同步復制,UDB數據庫作了內核層面的深度優化。

二、UDB數據庫深度優化

UDB數據庫產品是以開源數據庫MySQL Community Server 5.7.16為基線版本,圍繞高可用架構做內核深度優化。

復制流程,如上圖所示,主要經過如下幾個步驟:

  • MySQL Server執行SQL成功后,記錄binlog;
  • Dump線程讀取binlog后,發送到從機IO線程;
  • IO線程將接收到的binlog記錄到relay log中,同時記錄接收進度到master.info中;
  • SQL讀取relay log中的日志內容進行復現,同時記錄復制日志的進度到relay-log.info中。

我們在原生復制的基礎上做了內核的深度優化,針對上述流程中的部分步驟,在功能和性能上做了改進,使得 UDB高可用數據庫產品更加穩定。

2.1 Relay log文件記錄的優化

2.1.1 存在的問題

在MySQL中,binlog是以event為基本單位進行記錄,以MySQL 5.7 ROW格式(開啟GTID)的binlog為例,一個DML(insert)會以5個event的格式記錄到binlog中(其他操作均以一個或者多個event組成,不再一一羅列),分別為:

  • GTID_EVENT:記錄當前事務的GTID
  • QUERY_EVENT:事務開始
  • TABLE_MAP_EVENT:操作對應的表
  • WRITE_ROW_EVENT:插入記錄
  • XID_EVENT:提交事務

全部event組成一個完整的事務,完整的事務才會被SQL線程正確復現到從庫上。當前IO線程接收binlog時,是以event為單位進行接收,即接收到一個event,記錄到relay log中后再繼續接收下一個。這種做法是低效的,也沒有充分利用到MySQL本身的文件緩存。

2.1.2 優化方案

優化IO線程記錄relay log的方式,將以event為單位記錄,修改為以事務為單位進行記錄。合并IO線程小的IO操作,提高IO性能。

將單個的event寫操作合并為多個event統一寫操作,將小的IO操作合并成較大的IO操作,提高IO性能。

2.2 Master.info文件記錄的優化

2.2.1 存在的問題

Master.info文件在搭建復制時,記錄主庫IP、PORT等連接主庫的相關信息,在復制過程中,記錄IO線程從主庫接收到的binlog的文件名和位置,文件和位置會在每次記錄relay log成功后更新。

在基于GTID搭建復制后,master.info中記錄的binlog文件和位置不再作為復制的依據,所以master.info中記錄的binlog的文件和位置不再是有效的數據,也就沒有必要每次進行更新。

2.2.2 優化方案

在IO線程記錄relay log成功后,更新master.info文件之前,添加判斷。如果開啟了GTID并且使用GTID作為復制的依據(auto_position=1),那么不再更新master.info中binlog的文件和位置。

其它的master.info操作仍然保留,如change master、shutdown等操作。

2.3 Relay log鎖的優化

2.3.1 存在的問題

在IO線程和SQL線程復制進度相似的情況下,在操作relay log時,會使用同一塊文件緩存,在讀寫文件緩存時,需要加鎖來保證操作的正確性。而IO線程和SQL線程需要頻繁地讀寫這塊公共內存,就需要對同一把鎖頻繁的競爭,從而導致性能下降。

2.3.2 優化方案

將IO線程和SQL線程對relay log的操作拆分開來,不再使用同一塊文件緩存。雖然這樣做會導致SQL線程增加一次讀IO操作。但是消除了對鎖的競爭,大大地提高了IO線程和SQL線程整體的性能。

三、總結

優化后的復制流程圖如下:

數據庫原生復制流程中包括記錄binlog、記錄relay log、記錄master.info、relay-log.info等,針對上述流程中的部分步驟以及其他未列出的優化,在功能和性能上進行改進,UDB高可用數據庫在功能和性能上均得到了明顯的提升,UDB高可用數據庫可以提供更加可靠、高效的服務。

責任編輯:趙寧寧 來源: ucloud博客
相關推薦

2017-08-25 09:50:42

數據庫MySQL內核優化

2022-10-30 15:16:16

DML語句元組

2023-11-17 07:16:01

2019-11-19 08:32:26

數據庫HLC事務

2024-03-27 12:14:56

數據庫高可用GDS

2011-03-09 08:53:02

MySQL優化集群

2013-01-22 15:35:19

UCSRAC數據中心

2024-04-03 09:27:49

后端開發數據庫內核

2021-06-23 06:58:29

12306系統MySQL高可用預扣庫存

2024-09-13 08:59:20

2015-05-04 14:17:16

數據庫架構高可用

2010-10-28 15:37:36

高可用架構

2013-09-09 09:39:02

云數據庫京東云

2009-11-12 09:39:05

高可用

2023-11-27 07:23:39

2010-08-02 16:38:39

DB2 UDB for

2017-03-15 15:14:03

MySQL數據庫高可用性

2019-09-06 08:53:32

數據庫高可用容災

2021-01-21 10:23:43

數據庫架構技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产永久免费 | 欧美精品久久久 | 黄色毛片免费看 | 久久久久久国产精品 | 日本精品视频在线 | 羞羞色网站 | 在线黄色网 | 午夜影晥 | 久久精品91久久久久久再现 | 欧美精品一区在线 | 91精品国产乱码麻豆白嫩 | 91精品国产乱码久久久久久久久 | 国产伦精品一区二区三区视频金莲 | 黄色大片视频 | 午夜电影福利 | 四虎影视免费观看 | 中文字幕在线观看 | 欧美视频一区二区三区 | 色狠狠一区 | 国产一区视频在线 | 成人在线日韩 | 亚洲一级淫片 | 国产精品1区2区3区 男女啪啪高潮无遮挡免费动态 | 久久综合久久久 | 久草精品视频 | 九九久久精品视频 | 天堂中文在线播放 | 精品欧美一区二区精品久久久 | 精品国产亚洲一区二区三区大结局 | 亚洲看片 | 亚洲系列第一页 | 欧美日韩一区在线 | 欧美一级片在线看 | 久久精品成人 | 日韩三级免费观看 | 在线高清免费观看视频 | 色噜噜狠狠色综合中国 | 欧美国产精品一区二区三区 | 在线免费观看视频你懂的 | 伊人狠狠干 | 日韩成人一区 |