4

背景

我正在使用这些硬盘分区的 mysql 服务器上工作:

...
/dev/vdd       99G     58G   39G   61% /var/lib/mysql
tmpfs         2,4G       0  2,4G    0% /tmp
...

我需要将 mysql 转储导入我的数据库。因此我使用以下语法:

gunzip -c sql_dump.sql.gz | mysql -uDB_USER -p DB_NAME

一般来说,这可行,但我的sql_dump.sql.gz文件在提取时将超过 5GB。

上面的命令将失败并显示gzip: /home/.../sql_dump.sql.gz: No space left on device. mysql我认为这与有足够空间的分区无关,而与/tmp只有 2.4GB 可用空间的分区有关。

现在我确实继续将文件移动到/var/lib/mysql有足够可用空间的分区。gunzip 我的文件在那里,开始 mysql 导入,然后删除压缩和未压缩的文件。

问题

我在问自己是否有任何方法可以强制gunzip临时更改默认的临时目标位置,这是/tmp/默认的。因此,在提取文件时gunzip -c sql_dump.sql.gz | ...不会将提取的文件存储在下方,/tmp/而是存储在下方/var/lib/mysql。像这样的东西:

export "GZIP_TMP_DIR=/var/lib/mysql/"
gunzip -c sql_dump.sql.gz | mysql -uDB_USER -p DB_NAME

这甚至可能吗?我搜索了很多,但找不到任何可以解决这个特定需求的东西。

4

1 回答 1

7

在环境变量中设置所需的临时目录TMPDIR(请参阅https://en.wikipedia.org/wiki/TMPDIR)。

于 2016-06-14T13:44:48.140 回答