欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決Mysql?Binlog文件太大導致無法解析問題

 更新時間:2023年11月22日 08:30:29   作者:愛可生開源社區(qū)  
這篇文章主要為大家介紹了解決Mysql?Binlog文件太大導致無法解析問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

由于業(yè)務寫入了一條大事務,導致 MySQL 的 binlog 膨脹。在解析大的 binlog 時,經(jīng)常會遇到這個問題,導致無法解析,沒有其他工具的情況下,很難分析問題。

故障現(xiàn)象

由于業(yè)務寫入了一條大事務,導致 MySQL 的 binlog 膨脹。在解析大的 binlog 時,經(jīng)常會遇到這個問題,導致無法解析,沒有其他工具的情況下,很難分析問題。

故障復現(xiàn)

[root@xuzong mysql]# ls -lh mysql-bin.003300
-rw-r----- 1 my3696 mysql 6.7G Oct 30 16:24 mysql-bin.003300
[root@xuzong mysql]# /usr/local/mysql-5.7.35/bin/mysqlbinlog -vv mysql-bin.003300 > 1.sql
mysqlbinlog: Error writing file '/tmp/tmp.0Uirch' (Errcode: 28 - No space left on device)
mysqlbinlog: Error writing file '/tmp/tmp.0Uirch' (Errcode: 28 - No space left on device)
mysqlbinlog: Error writing file '/tmp/tmp.0Uirch' (Errcode: 28 - No space left on device)
mysqlbinlog: Error writing file '/tmp/tmp.0Uirch' (Errcode: 28 - No space left on device)
mysqlbinlog: Error writing file '/tmp/tmp.334z3P' (Errcode: 28 - No space left on device)
mysqlbinlog: Error writing file '/tmp/tmp.0Uirch' (Errcode: 28 - No space left on device)
mysqlbinlog: Error writing file '/tmp/tmp.0Uirch' (Errcode: 28 - No space left on device)
mysqlbinlog: Error writing file '/tmp/tmp.0Uirch' (Errcode: 28 - No space left on device)
mysqlbinlog: Error writing file '/tmp/tmp.0Uirch' (Errcode: 28 - No space left on device)
mysqlbinlog: Error writing file '/tmp/tmp.0Uirch' (Errcode: 28 - No space left on device)

猜測

  • 可能是配置文件中 tmpdir 的問題,但是修改這個得重啟 MySQL。
  • 能不能在不重啟 MySQL 的情況下,修改這個臨時空間。

驗證猜測

猜測一

看一下 my.cnf 設置的 tmpdir,發(fā)現(xiàn)并不是使用的這個參數(shù),看來猜測一不對。

[root@mysql mysql]# cat my.cnf | grep tmpdir
tmpdir                          = /data1/dbatemp

猜測二

網(wǎng)上搜了一下,大部分是講臨時表滿怎么解決的,也就是猜測一的方案,并沒有很明確的方法來修改 mybinlog 解析時,所使用的的臨時句柄占用空間。

問題分析

只能看看源碼,看一下 mysqlbinlog 到底是怎么獲取 tmpdir 的。

mysqbinlog.cc
int main(int argc, char** argv)
{
........
  MY_TMPDIR tmpdir;
  tmpdir.list= 0;
  if (!dirname_for_local_load)
  {
    if (init_tmpdir(&tmpdir, 0))
      exit(1);
    dirname_for_local_load= my_strdup(PSI_NOT_INSTRUMENTED,
                                      my_tmpdir(&tmpdir), MY_WME);
  }
........
}
mf_tempdir.cc
my_bool init_tmpdir(MY_TMPDIR *tmpdir, const char *pathlist)
{
  char *end, *copy;
  char buff[FN_REFLEN];
  DBUG_ENTER("init_tmpdir");
  DBUG_PRINT("enter", ("pathlist: %s", pathlist ? pathlist : "NULL"));
  Prealloced_array<char*, 10, true> full_list(key_memory_MY_TMPDIR_full_list);
  memset(tmpdir, 0, sizeof(*tmpdir));
  if (!pathlist || !pathlist[0])
  {
    /* Get default temporary directory */
    pathlist=getenv("TMPDIR");    /* Use this if possible */ //這里能看到是獲取的機器環(huán)境變量
#if defined(_WIN32)
    if (!pathlist)
      pathlist=getenv("TEMP"); //windows是temp
    if (!pathlist)
      pathlist=getenv("TMP");  //linux是tmp
#endif
    if (!pathlist || !pathlist[0])
      pathlist= DEFAULT_TMPDIR;
  }
........
}

好家伙,竟然是獲取的機器環(huán)境變量,那么這個問題就解決了。

問題處理

臨時修改一下機器的 tmpdir 變量即可。

[root@mysql mysql]# export TMPDIR="/data1"
[root@mysql mysql]# echo ${TMPDIR:-/tmp}
[root@xuzong mysql]# /usr/local/mysql-5.7.35/bin/mysqlbinlog -vv mysql-bin.003300 &gt; 1.sql

總結

  • 有問題還是要看看源碼。
  • 可以考慮使用 binlog 解析工具,比如 bin2sql 解決問題。
  • 可以看看慢日志里是否有記錄。

補充

原來這個問題在 MySQL 官方手冊 中有所描述,在此做一個補充。

When running mysqlbinlog against a large binary log, be careful that the filesystem has enough space for the resulting files. To configure the directory that mysqlbinlog uses for temporary files, use the TMPDIR environment variable.

以上就是解決Mysql Binlog文件太大導致無法解析問題的詳細內(nèi)容,更多關于Mysql Binlog大文件解析的資料請關注腳本之家其它相關文章!

相關文章

  • Mysql數(shù)據(jù)庫之常用sql語句進階與總結

    Mysql數(shù)據(jù)庫之常用sql語句進階與總結

    這篇文章主要介紹了Mysql數(shù)據(jù)庫之常用sql語句,總結分析了MySQL數(shù)據(jù)庫常用的查詢、條件查詢、排序、連接查詢、子查詢等相關操作技巧,需要的朋友可以參考下
    2019-11-11
  • Mysql半同步復制原理及問題排查

    Mysql半同步復制原理及問題排查

    這篇文章主要介紹了Mysql半同步復制原理及問題排查 的相關資料,需要的朋友可以參考下
    2016-01-01
  • MySQL中關于超鍵和主鍵及候選鍵的區(qū)別

    MySQL中關于超鍵和主鍵及候選鍵的區(qū)別

    這篇文章主要介紹了MySQL中關于超鍵和主鍵及候選鍵的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Ubuntu 18.04下mysql 8.0 安裝配置方法圖文教程

    Ubuntu 18.04下mysql 8.0 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了Ubuntu 18.04下mysql 8.0 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Mysql排序獲取排名的實例代碼

    Mysql排序獲取排名的實例代碼

    這篇文章通過實例代碼給大家介紹了mysql排序獲取排名的相關知識,感興趣的朋友一起看看吧
    2018-05-05
  • mysql8.0.21安裝教程圖文詳解

    mysql8.0.21安裝教程圖文詳解

    這篇文章主要介紹了mysql8.0.21安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • MySQL9.0新特性向量存儲的使用

    MySQL9.0新特性向量存儲的使用

    MySQL 9.0 正式版已經(jīng)發(fā)布,其中一個亮點就是向量(VECTOR)數(shù)據(jù)類型的支持,本文主要介紹了MySQL9.0新特性向量存儲的使用,感興趣的可以了解一下
    2024-08-08
  • 解決mysql輸入密碼閃退的問題

    解決mysql輸入密碼閃退的問題

    之前安裝的mysql一直運行正常,但是在昨天裝了個VS2010旗艦版。結果今天mysql就不能用了,于是在網(wǎng)上看了一下最只要就是mysql的服務沒有起來的緣故。本文分享了幾個解決方案,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11
  • mysql 8.0.17 解壓版安裝配置方法圖文教程

    mysql 8.0.17 解壓版安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql 8.0.17 解壓版安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • MySQL之主鍵索引排序失效問題

    MySQL之主鍵索引排序失效問題

    這篇文章主要介紹了MySQL之主鍵索引排序失效問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論