看數據庫的文件大小 MySQL Binlog日志的生成和清理規則


小結:

1、避免並行大大事務對磁盤、內存的消耗;

 

MySQL數據文件導致實例空間滿的解決辦法_空間/內存_常見問題_雲數據庫 RDS 版-阿里雲 https://help.aliyun.com/knowledge_detail/101642.html

 MySQL實例可能會由於查詢語句的排序、分組、關聯表產生的臨時表文件,或者大事務未提交前產生的binlog cache文件,導致實例空間滿,為避免數據丟失,RDS會對實例進行自動鎖定,磁盤鎖定之后,將無法進行寫入操作。

查看數據庫的文件大小,分析其中可以刪除的歷史數據文件或無用數據文件。

SELECT file_name, concat(TOTAL_EXTENTS,'M') as 'FIle_size' FROM INFORMATION_SCHEMA.FILES order by TOTAL_EXTENTS 

MySQL Binlog日志的生成和清理規則_數據備份/恢復_常見問題_雲數據庫 RDS 版-阿里雲 https://help.aliyun.com/knowledge_detail/41815.html 

Binlog日志的生成規則

MySQL實例空間內生成binlog日志的規則如下:

  • 通常情況下,當前binlog大小超過500MB或超過6小時會切換到下一序號文件繼續寫入,即寫滿500MB或超過6小時就會生成新的binlog日志文件。新的binlog文件繼續寫入,老的binlog文件並不會立刻上傳,會異步上傳。

  • 有些情況下,binlog日志不滿500MB就不再寫入,比如由於命令的執行、系統重啟等原因。

  • 有些情況下,會出現binlog文件尺寸超過500MB的情況,比如當時在執行大事務,不斷寫入binlog導致當前binlog文件尺寸超過500MB。

Binlog日志的保存及清理規則

MySQL實例的空間內默認清理binlog日志的規則如下:

  • 實例空間內默認會保存最近18個小時內的binlog文件。

  • 當實例使用空間小於購買空間的80%時,系統會保存購買空間的30%的binlog(即使該binlog文件已經上傳到OSS內)。

  • 當實例使用空間超過購買空間的80%時,binlog會在上傳到OSS后,發起刪除本地數據的請求,但本地刪除會有任務調度,有一定延遲。

  • Binlog文件上傳到OSS后,才可以在RDS控制台上顯示。查看步驟如下:

    1. 登錄RDS管理控制台

    2. 選擇要管理的實例所在的地域。

    3. 單擊目標實例右的ID,進入基本信息頁面。

    4. 在左側導航欄中,選擇備份恢復,進入備份恢復頁面。

    5. 選擇日志備份標簽頁,即可查看已上傳的binlog日志。

  • Binlog日志在后台生成,可在RDS控制台中下載,大概需要30~60分鍾,如果binlog文件較大,所需時間更長。

 

 

后續維護

對於經常有delete操作的表,容易產生數據空洞,可以在業務低峰期使用optimize table <數據庫名>.<表名>回收空間。

 

 

后續維護

    • 針對查詢產生的臨時文件,應該優化SQL語句,避免頻繁使用 order by、group by 操作,可以適當調大tmp_table_size和max_heap_table_size,但是為了減少磁盤使用而調高 tmp_table_size 和 max_heap_table_size 並不明智,因為內存資源遠比磁盤資源寶貴;可以通過explain+SQL語句查看是否使用內部臨時表,在 Extra 字段中有 Using temporary 字樣的代表會使用內部臨時表。示例如下:
       
      explain select * from alarm group by created_on order by default;

      explain示例
    • 針對binlog cache,應該少執行大事務,尤其應該減少在多個連接同時執行大事務,如果大事務比較多,可以適當調大binlog_cache_size,但是同樣不應該為了節省磁盤調整這個參數,使用短連接執行大事務可以有效降低臨時空間開銷。
 
 
 
現場:
中午對同張表的補數據時,並行大事務提交導致臨時文件激增消耗500G的有限空間。;<1>剛才又刪除了多余數據后,現在是500G用了約70%;<2>空間回收優化的sql還在執行中,會進一步降低利用率;<3>程序這邊今后也避免對單張大表的並行大事務提交;

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM