最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

MySQL的临时目录_MySQL

来源:动视网 责编:小采 时间:2020-11-09 18:11:59
文档

MySQL的临时目录_MySQL

MySQL的临时目录_MySQL:bitsCN.com MySQL 服务器设置的 binlog 单文件最大为 1GB,偶然发现会有十几 GB 大小的 binlog 文件,从产生的时间上看像是某个 cron job 使用了超大的 transaction,为了找出“罪魁祸首”,我需要分析一下 binlog。在使用 mysq
推荐度:
导读MySQL的临时目录_MySQL:bitsCN.com MySQL 服务器设置的 binlog 单文件最大为 1GB,偶然发现会有十几 GB 大小的 binlog 文件,从产生的时间上看像是某个 cron job 使用了超大的 transaction,为了找出“罪魁祸首”,我需要分析一下 binlog。在使用 mysq


bitsCN.com

MySQL 服务器设置的 binlog 单文件最大为 1GB,偶然发现会有十几 GB 大小的 binlog 文件,从产生的时间上看像是某个 cron job 使用了超大的 transaction,为了找出“罪魁祸首”,我需要分析一下 binlog。

在使用 mysqlbinlog 将 binary log 转换为文本文件时,发现根分区很快就被塞满了,使用 lsof 发现 mysqlbinlog 在往 /tmp 下写临时文件:

# lsof -p 17423
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqlbinl 17423 root 1w REG 0,19 791765366 3186036 /mfs/user/xupeng/tmp/bigbinlogs/bigbinlog.sql
mysqlbinl 17423 root 2u CHR 136,7 0t0 10 /dev/pts/7
mysqlbinl 17423 root 3r REG 0,19 13863171331 3172073 /mfs/user/xupeng/tmp/bigbinlogs/log.000323
mysqlbinl 17423 root 4u REG 8,1 612122624 135332782 /tmp/tmp.rWTNda (deleted)
mysqlbinl 17423 root 5u REG 8,1 2490368 135332784 /tmp/tmp.spKjTA (deleted)

看 mysqlbinlog 的 Man page,发现并没有参数可以指定临时目录,翻了一下 mysqlbinlog (client/mysqlbinlog.cc) 的代码,看到了下面的代码:

MY_TMPDIR tmpdir;
tmpdir.list= 0;
if (!dirname_for_local_load)
{
if (init_tmpdir(&tmpdir, 0))
exit(1);
dirname_for_local_load= my_strdup(my_tmpdir(&tmpdir), MY_WME);
}

init_tmpdir 定义在 mysys/mf_tempdir.c 中:

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”));

pthread_mutex_init(&tmpdir->mutex, MY_MUTEX_INIT_FAST);
if (my_init_dynamic_array(&tmpdir->full_list, sizeof(char*), 1, 5))
goto err;
if (!pathlist || !pathlist[0])
{
/* Get default temporary directory */
pathlist=getenv(“TMPDIR”); /* Use this if possible */
#if defined( __WIN__) || defined(__NETWARE__)
if (!pathlist)
pathlist=getenv(“TEMP”);
if (!pathlist)
pathlist=getenv(“TMP”);
#endif
if (!pathlist || !pathlist[0])
pathlist=(char*) P_tmpdir;
}

所以在运行 mysqlbinlog 之前设置 TMPDIR 这个环境变量就好了。

MySQL server 和 客户端工具都使用这个临时目录查找策略,怪不得使用 mysqlbinlog tmp directory 作为关键词没有搜到需要的结果,而使用 mysql tmp directory 作为关键词,第一条搜索结果就是 Where MySQL Stores Temporary Files,选择正确的关键词很重要啊。

bitsCN.com

文档

MySQL的临时目录_MySQL

MySQL的临时目录_MySQL:bitsCN.com MySQL 服务器设置的 binlog 单文件最大为 1GB,偶然发现会有十几 GB 大小的 binlog 文件,从产生的时间上看像是某个 cron job 使用了超大的 transaction,为了找出“罪魁祸首”,我需要分析一下 binlog。在使用 mysq
推荐度:
标签: 目录 临时 服务器
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top