PSQL:错误:无法扩展文件设备上没有剩余空间提示:检查可用磁盘空间

PSQL:错误:无法扩展文件设备上没有剩余空间提示:检查可用磁盘空间

这是我第一次使用自己的专用服务器,在尝试将大型(10gb,数百万行)postgresql 备份文件导入新表时遇到问题。运行 ubuntu 18.04 LTS。

我已经使用 apt-get 安装了 postgresql,然后以 root 身份登录并创建了一个数据库。

然后我跑了

sudo -u postgres psql mytable < mybackupfile.bak在/root

除了缺少角色错误之外,它开始运行,直到我开始收到如下错误:

ERROR:  could not extend file "base/16384/16472.4": wrote only 4096 of 
8192 bytes at block 635129
HINT:  Check free disk space.
CONTEXT:  COPY stock_prices, line 28568936
ERROR:  could not extend file "base/16384/16480": No space left on device
HINT:  Check free disk space.
CONTEXT:  COPY stocks, line 99

之后它继续“正常”运行:

     ...
    setval
    ---------
    1864218
    (1 row)

    setval
    ---------
    1356711
    (1 row)

    setval
    --------
    478761
    (1 row)
     ...

直到它只是一堆:

ERROR:  could not create temporary file "base/pgsql_tmp/pgsql_tmp3458.0": No such file or directory
ERROR:  could not extend file "base/16384/16503": No space left on device

我的文件系统如下所示:

    Filesystem      Size  Used Avail Use% Mounted on
    udev             16G     0   16G   0% /dev
    tmpfs           3.2G 1000K  3.2G   1% /run
    /dev/md2         20G   12G  6.2G  67% /
    tmpfs            16G  8.0K   16G   1% /dev/shm
    tmpfs           5.0M     0  5.0M   0% /run/lock
    tmpfs            16G     0   16G   0% /sys/fs/cgroup
    /dev/md3        420G  9.3G  390G   3% /home
    /dev/md1        487M  146M  312M  32% /boot
    tmpfs           3.2G     0  3.2G   0% /run/user/0

通过阅读一些相关问题,有人说服务器的分区存在问题这里,其他人说要增加根分区的大小,否则可能只是导入期间所需的临时内存的问题以及更改 psql 配置文件的问题。

我有点迷茫,服务器上除了基本的安全配置和 PSQL + 备份文件之外什么都没有,所以如果应该更改分区大小,那么现在是正确的时间,但我不知道我的情况发生了什么,如果这不能解决任何问题,我不想把一切都搞砸。

答案1

所以我关注了本教程将 datadir 移动到 /home/postgresql/ 并且它可以正常工作。

答案2

尝试增加postgresql.conf文件中的temp_tablespaces,参考是: https://www.postgresql.org/docs/10/runtime-config-client.html#GUC-TEMP-TABLESPACES. 默认情况下它是空字符串。

相关内容