主頁 > 資料庫 > MySQL 8.0 Dynamic Redo Log Sizing翻譯

MySQL 8.0 Dynamic Redo Log Sizing翻譯

2023-07-12 09:24:46 資料庫

本文是MySQL 8.0 Dynamic Redo Log Sizing[1]這篇文章的翻譯,如有翻譯不當的地方,敬請諒解,請尊重原創和翻譯勞動成果,轉載的時候請注明出處,謝謝!

這篇博文將討論MySQL 8.0.30中引入的最新功能/特性:重做日志動態調整大小(dynamic redo log sizing),除了InnoDB 緩沖池(buffer pool)大小之外,我們可以說合適的重做日志大小對于MySQL性能至關重要,有許多關于如何計算合適的重做日志大小的博客文章,其中最經典的博客文章之一來自 Baron:How to calculate a good InnoDB log file size[2](這篇博客文章是2008年發布的,但文中計算redo log大小的公式仍然是一個有效的公式)

現在,這個功能/特性試圖解決哪個問題呢?

在MySQL中,緩沖池(buffer pool)和重做日志大小是不經常更改的引數設定,通常,這些引數是在資料庫安裝期間設定的;之后,它們就會被遺忘,直到一些問題出現為止,問題是過去它們是靜態的,這意味著您必須重新啟動MySQL才能使引數變更生效,

MySQL在MySQL 5.7中通過動態調整緩沖池(buffer bool)大小解決了緩沖池問題,現在,MySQL 8.0.30解決了重做日志的這個問題,調整重做日志大小非常簡單明了:

mysql> SET GLOBAL innodb_redo_log_capacity = 2*1024*1024*1024;

此引數設定可將重做日志大小調整為比當前定義的值更大或更小的值,為了實作此目的,重做日志檔案現在駐留在datadir指定的新目錄中#innodb_redo中,除非你通過變數innodb_log_group_home_dir指定了不同的目錄,這個目錄下的重做日志檔案有兩種型別:普通重做日志檔案和備用重做日志檔案,普通重做日志檔案是正在使用的重做日志檔案,備用重做日志檔案是那些等待使用的重做日志檔案,InnoDB總共維護了32個重做日志檔案,每個檔案大小等于1/32 * innodb_redo_log_capacity;但是,修改innodb_redo_log_capacity引數后,重做日志檔案大小可能會暫時有所不同,

重做日志檔案使用#ib_redoN命名約定,其中N是重做日志檔案編號,備用重做日志檔案由后綴表示_tmp,以下示例顯示#innodb_redo 目錄中的重做日志檔案,其中 18 個活動重做日志檔案和 14 個備用重做日志檔案按順序編號,

$ ls
#ib_redo31  #ib_redo33 #ib_redo35  #ib_redo37 #ib_redo39  #ib_redo41 #ib_redo43  #ib_redo45 #ib_redo47  #ib_redo49_tmp  #ib_redo51_tmp  #ib_redo53_tmp  #ib_redo55_tmp  #ib_redo57_tmp  #ib_redo59_tmp  #ib_redo61_tmp
#ib_redo32  #ib_redo34 #ib_redo36  #ib_redo38 #ib_redo40  #ib_redo42 #ib_redo44  #ib_redo46 #ib_redo48  #ib_redo50_tmp  #ib_redo52_tmp  #ib_redo54_tmp  #ib_redo56_tmp  #ib_redo58_tmp  #ib_redo60_tmp  #ib_redo62_tmp

MySQL提供了幾個狀態變數用于監視重做日志和重做日志容量調整操作;例如,您可以通過查詢Innodb_redo_log_resize_status以查看調整大小操作的狀態:

mysql> SHOW GLOBAL STATUS LIKE 'Innodb_redo_log_resize_status';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| Innodb_redo_log_resize_status |  OK   |
+-------------------------------+-------+

狀態變數Innodb_redo_log_capacity_resized顯示當前重做日志的容量限制:

mysql> SHOW GLOBAL STATUS LIKE 'Innodb_redo_log_capacity_resized';
+----------------------------------+------------+
| Variable_name                    | Value      |
+----------------------------------+------------+
| Innodb_redo_log_capacity_resized | 3221225472 |
+----------------------------------+------------+

其他狀態變數包括:

Innodb_redo_log_checkpoint_lsn
Innodb_redo_log_current_lsn
Innodb_redo_log_flushed_to_disk_lsn
Innodb_redo_log_logic_size
Innodb_redo_log_physical_size
Innodb_redo_log_read_only
Innodb_redo_log_uuid

MySQL 8.0.30 還引入了一些與此問題相關的新錯誤訊息,其中一些包括:

ER_IB_MSG_LOG_WRITER_OUT_OF_SPACE
ER_IB_MSG_LOG_WRITER_ABORTS_LOG_ARCHIVER
ER_IB_MSG_LOG_WRITER_WAITING_FOR_ARCHIVER
ER_IB_MSG_LOG_WRITER_WAIT_ON_NEW_LOG_FILE
ER_IB_MSG_LOG_WRITER_ENTERED_EXTRA_MARGIN
ER_IB_MSG_LOG_WRITER_WAIT_ON_CONSUMER

如果您想查看更多資訊,可以使用此鏈接[3],所有與重做日志錯誤相關的訊息都使用ER_IB_MSG_LOG_WRITER_ 命名約定,

估計重做日志容量

有了這些新的狀態變數,我們可以使用以下查詢來估計重做日志大小:

mysql> SHOW GLOBAL STATUS LIKE 'Innodb_redo_log_current_lsn'SELECT SLEEP(60); SHOW GLOBAL STATUS LIKE 'Innodb_redo_log_current_lsn';

根據上一個查詢提供的輸出,我們運行以下命令:

mysql > SELECT ABS(20641693317 - 20903377487) / 1024 / 1024 AS MB_per_min;
+--------------+
| MB_per_min   |
+--------------+
| 249.56147194 |
+--------------+
1 row in set (0.00 sec)

因此,在這種情況下,在重做日志檔案中寫入大約為250MB/分鐘,那么一小時恰好是 250*60(1 小時),相當于 15GB,

已棄用的引數

為了實作這個新功能,MySQL 棄用了兩個引數:innodb_log_files_in_group和innodb_log_file_size ,

如果您嘗試在檔案中設定它們my.cnf,它們將被忽略,并且錯誤日志中將列印警告:

2022-08-07T20:23:39.898370Z 0 [Warning] [MY-013869] [InnoDB] Ignored deprecated configuration parameter innodb_log_file_size. Used innodb_redo_log_capacity instead.
2022-08-07T20:23:39.898441Z 0 [Warning] [MY-013870] [InnoDB] Ignored deprecated configuration parameter innodb_log_files_in_group. Used innodb_redo_log_capacity instead.

結論

重做日志動態調整大小為 DBA 提供了更大的靈活性,以防萬一需要調整重做日志大小,應用程式不能因MySQL重新啟動而停止對外服務的情況,截至撰寫本文時,還沒有與此功能相關的錯誤報告,建議之一是檢查您的備份工具是否與 MySQL 8.0.30 及其新功能兼容,最后,由于一些引數已經棄用,請務必檢查現有的my.cnf組態檔,

參考資料

[1]

1: https://www.percona.com/blog/mysql-8-0-dynamic-redo-log-sizing/

[2]

2: https://www.percona.com/blog/2008/11/21/how-to-calculate-a-good-innodb-log-file-size/

[3]

3: https://github.com/mysql/mysql-server/blob/8.0/share/messages_to_error_log.txt

掃描上面二維碼關注我 如果你真心覺得文章寫得不錯,而且對你有所幫助,那就不妨幫忙“推薦"一下,您的“推薦”和”打賞“將是我最大的寫作動力! 本文著作權歸作者所有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接.

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/557098.html

標籤:其他

上一篇:Windows下SqlServer2008通過ODBC連接到DM資料庫安裝部署

下一篇:返回列表

標籤雲
其他(162439) Python(38274) JavaScript(25531) Java(18294) C(15241) 區塊鏈(8275) C#(7972) AI(7469) 爪哇(7425) MySQL(7296) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5876) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4616) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2439) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) HtmlCss(1998) .NET技术(1987) 功能(1967) Web開發(1951) C++(1942) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1883) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • MySQL 8.0 Dynamic Redo Log Sizing翻譯

    本文是MySQL 8.0 Dynamic Redo Log Sizing[1]這篇文章的翻譯。如有翻譯不當的地方,敬請諒解,請尊重原創和翻譯勞動成果,轉載的時候請注明出處。謝謝! 這篇博文將討論MySQL 8.0.30中引入的最新功能/特性:重做日志動態調整大小(dynamic redo log s ......

    uj5u.com 2023-07-12 09:24:46 more
  • Windows下SqlServer2008通過ODBC連接到DM資料庫安裝部署

    1 環境說明作業系統:Windows Server 2008資料庫版本:SQL Server 2008 10.50.1600.1 2 搭建程序2.1 達夢資料庫軟體下載進入達夢官網 https://www.dameng.com/ 選擇X86,win64,點擊下載。 2.2 安裝資料庫解壓下載后檔案, ......

    uj5u.com 2023-07-12 09:19:11 more
  • 選讀SQL經典實體筆記05_日期運算(下)

    ![](https://img2023.cnblogs.com/blog/3076680/202307/3076680-20230711143234011-1452662689.png) # 1. 兩個日期之間相差的月份和年份 ## 1.1. DB2 ## 1.2. MySQL ## 1.3. sq ......

    uj5u.com 2023-07-12 08:53:50 more
  • 【技識訓累】Mysql中的SQL語言【技術篇】【一】

    博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ......

    uj5u.com 2023-07-12 08:53:45 more
  • es筆記四之中文分詞插件安裝與使用

    > 本文首發于公眾號:Hunter后端 > 原文鏈接:[es筆記四之中文分詞插件安裝與使用](https://mp.weixin.qq.com/s/aQuwrUzLZDKLv_K8dKeVzw) 前面我們介紹的操作及演示都是基于英語單詞的分詞,但我們大部分使用的肯定都是中文,所以如果需要使用分詞的操 ......

    uj5u.com 2023-07-12 08:53:36 more
  • postgresql序列重復問題處理

    ## 問題 在執行資料插入時,postgresql 提示*more than one owned sequence found*錯誤。這個和之前文章中寫的[序列編號錯亂](https://www.cnblogs.com/podolski/p/17349217.html)不同,是由資料表的一個列生成了 ......

    uj5u.com 2023-07-12 08:53:31 more
  • 三問三答:細數GaussDB遷移的核心技術

    摘要:本文從客戶視角的三個疑問出發,一起了解華為云GaussDB資料庫的遷移解決方案具有哪些核心技術,如何做到讓客戶遷移程序安心、放心、省心。 遷移是資料庫選型程序中客戶最為關心的話題之一,經過大量的溝通調研,我們總結客戶在資料庫遷移方面的主要期望:遷移不影響業務運行(安心)、遷移不能丟資料(放心) ......

    uj5u.com 2023-07-12 08:53:27 more
  • 向量資料庫Faiss的搭建與使用

    向量資料庫Faiss是Facebook AI研究院開發的一種高效的相似性搜索和聚類的庫。它能夠快速處理大規模資料,并且支持在高維空間中進行相似性搜索。本文將介紹如何搭建Faiss環境并提供一個簡單的使用示例。 ......

    uj5u.com 2023-07-12 08:53:20 more
  • 一次元資料空間記憶體溢位的排查記錄

    在應用中,我們使用的 SpringData ES的 ElasticsearchRestTemplate來做查詢,使用方式不對,導致每次ES查詢時都新實體化了一個查詢物件,會加載相關類到元資料中。最終長時間運行后元資料出現記憶體溢位; ......

    uj5u.com 2023-07-12 08:53:15 more
  • Windows下SqlServer2008通過ODBC連接到DM資料庫安裝部署

    1 環境說明作業系統:Windows Server 2008資料庫版本:SQL Server 2008 10.50.1600.1 2 搭建程序2.1 達夢資料庫軟體下載進入達夢官網 https://www.dameng.com/ 選擇X86,win64,點擊下載。 2.2 安裝資料庫解壓下載后檔案, ......

    uj5u.com 2023-07-12 08:52:30 more