我们最近在 CentOS 7 服务器上从 postgres 9.1 升级到 postgres 10。我们从头开始安装并将数据库恢复到新安装中。
数据库恢复正常,一切似乎都正常工作,但是,当我们尝试创建新数据库时,大多数情况下它会挂起,直到我们取消它。
我在进程上运行了一个 strace,似乎没有在文件系统上创建新文件夹,并且出现了无限超时错误。
简单的数据库创建命令:
CREATE DATABASE ubm_vanguard_academy;
和strace:
epoll_wait(3, [{EPOLLIN, {u32=21012256, u64=21012256}}], 1, -1) = 1
recvfrom(11, "Q\0\0\0*CREATE DATABASE ubm_vanguar"..., 8192, 0, NULL, NULL) = 43
lseek(30, 0, SEEK_END) = 8192
lstat("base/1012469", 0x7ffd04544370) = -1 ENOENT (No such file or directory)
kill(93844, SIGINT) = 0
select(0, NULL, NULL, NULL, {0, 100000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 100000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 100000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 100000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 100000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 100000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 100000}) = 0 (Timeout)
文件夹的权限都是正确的,并且偶尔会正常工作,我们可以创建一个新的数据库。
如果我们重新启动postgres服务器,似乎我们可以正常创建数据库,但一段时间后问题又回来了。
我在这里有点不知所措。我想知道这是否与文件系统太忙而无法及时创建文件夹有关,或者 WAL 是否发生了一些事情会阻止创建文件夹。数据库服务器有时很忙,为多个数据库提供服务,我们从来没有遇到过超时或大量等待状态的问题,它只是创建给我们带来问题的数据库。
有任何想法吗?