最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決Mysql?Binlog文件太大導(dǎo)致無法解析問題

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

正文

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

故障現(xiàn)象

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

故障復(fù)現(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 設(shè)置的 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

總結(jié)

  • 有問題還是要看看源碼。
  • 可以考慮使用 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文件太大導(dǎo)致無法解析問題的詳細(xì)內(nèi)容,更多關(guān)于Mysql Binlog大文件解析的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MySQL中slave監(jiān)控的延遲情況分析

    MySQL中slave監(jiān)控的延遲情況分析

    這篇文章主要介紹了MySQL中slave監(jiān)控的延遲情況分析,主要針對MySQL的復(fù)制環(huán)境情況下,需要的朋友可以參考下
    2015-05-05
  • Mysql中replace與replace into的用法講解

    Mysql中replace與replace into的用法講解

    今天小編就為大家分享一篇關(guān)于Mysql中replace與replace into的用法講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • mysql 循環(huán)批量插入的實例代碼詳解

    mysql 循環(huán)批量插入的實例代碼詳解

    本文通過實例代碼文字相結(jié)合的形式給大家介紹了mysql 循環(huán)批量插入功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • 使用mysqldump對MySQL的數(shù)據(jù)進(jìn)行備份的操作教程

    使用mysqldump對MySQL的數(shù)據(jù)進(jìn)行備份的操作教程

    這篇文章主要介紹了使用mysqldump對MySQL的數(shù)據(jù)進(jìn)行備份的操作教程,示例環(huán)境基于CentOS操作系統(tǒng),需要的朋友可以參考下
    2015-12-12
  • CentOS6.4上使用yum安裝mysql

    CentOS6.4上使用yum安裝mysql

    這篇文章主要為大家詳細(xì)介紹了CentOS6.4上使用yum安裝mysql圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • CentOS 7中源碼安裝MySQL 5.7.6+詳細(xì)教程

    CentOS 7中源碼安裝MySQL 5.7.6+詳細(xì)教程

    最近在CentOS 7中源碼安裝MySQL 5.7.6+,發(fā)現(xiàn)MySQL5.7.6+以后的安裝方式真的與以前版本的MySQL安裝方式大大的不同呀。不自己安裝一把,你都不知道不同之處在哪,下面這篇文章是通過自己的安裝過程總結(jié)的一篇安裝教程,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • 使用Kubernetes集群環(huán)境部署MySQL數(shù)據(jù)庫的實戰(zhàn)記錄

    使用Kubernetes集群環(huán)境部署MySQL數(shù)據(jù)庫的實戰(zhàn)記錄

    這篇文章主要介紹了使用Kubernetes集群環(huán)境部署MySQL數(shù)據(jù)庫,主要包括編寫 mysql.yaml文件,執(zhí)行如下命令創(chuàng)建,通過相關(guān)命令查看創(chuàng)建結(jié)果,對Kubernetes部署MySQL數(shù)據(jù)庫的過程感興趣的朋友一起看看吧
    2022-05-05
  • MySQL數(shù)據(jù)庫中正則表達(dá)式(Regex)和like的區(qū)別詳析

    MySQL數(shù)據(jù)庫中正則表達(dá)式(Regex)和like的區(qū)別詳析

    MySQL正則表達(dá)式是一種強大的文本匹配工具,允許執(zhí)行復(fù)雜的字符串搜索和處理,這篇文章主要介紹了MySQL數(shù)據(jù)庫中正則表達(dá)式(Regex)和like區(qū)別的相關(guān)資料,文中通過代碼需要的朋友可以參考下
    2025-11-11
  • MySQL數(shù)據(jù)庫中UUID主鍵性能優(yōu)化的方案詳解

    MySQL數(shù)據(jù)庫中UUID主鍵性能優(yōu)化的方案詳解

    最近我們在性能優(yōu)化中發(fā)現(xiàn)了一個隱蔽的問題,數(shù)據(jù)庫的寫入和查詢性能在數(shù)據(jù)量增長后出現(xiàn)明顯下降,原因竟然是UUID,本文將剖析UUID在數(shù)據(jù)庫中的真實影響并提供更優(yōu)化的解決方案,希望對大家有所幫助
    2026-02-02
  • mysql指定某行或者某列的排序?qū)崿F(xiàn)方法

    mysql指定某行或者某列的排序?qū)崿F(xiàn)方法

    這篇文章主要介紹了mysql指定某行或者某列的排序,需要的朋友可以參考下
    2017-05-05

最新評論

长子县| 缙云县| 湛江市| 平乡县| 顺平县| 云安县| 德昌县| 石家庄市| 湘乡市| 蕲春县| 栾川县| 通州市| 罗甸县| 汽车| 巩留县| 永城市| 巩留县| 余庆县| 双辽市| 麻城市| 安西县| 探索| 澄迈县| 吴桥县| 东丰县| 化隆| 兴隆县| 营山县| 沂水县| 逊克县| 丽水市| 繁峙县| 南部县| 嘉善县| 土默特左旗| 罗定市| 永兴县| 平罗县| 蒙山县| 玛沁县| 杭锦后旗|