iscsi 上的 postgresql 拒绝在服务器启动时启动 - Redhat 7.1

iscsi 上的 postgresql 拒绝在服务器启动时启动 - Redhat 7.1

我在 Redhat 7.1 上安装了一个 postgresql 数据库,并决定将数据库移动到逻辑卷内的 ISCSI 设备 (LUN) 上,该逻辑卷在机器启动时挂载(xfs 格式)。挂载点是 /var/lib/pgsql

在服务器启动时,postgresql.service处于失败状态。

在 messages.log 中:

systemd: mounting /var/lib/pgsql
 starting PostgreSQL database server
 kernel sdv: unknown partition table
 sd 2:0:0:0: [sdb] attached SCSI disk
 xfs (dm-4): Mounting V4 Filesystem
 postgresql-check-db-dir: "/var/lib/pgsql/data" is missing or empty
 postgresql.service: control process exited, code=exited status=1
 Failed to start PostgreSQL database server.

当我登录服务器时,如果它尝试手动启动数据库:systemctl start postgresql --> OK(并且我没有丢失任何数据,数据库可用)

我认为这是启动过程中的顺序问题:必须先启动网络服务,然后启动 iscsi,然后启动 lvm 等...所以我尝试强制依赖 /usr/lib/systemd/system/postgresql.service,添加“After=lvm-pgscan.service iscsi.service”等...但结果是一样的:

failure in starting postgresql

systemd: Starting Remote File Systems (Pre)
systemd: Reached Remote File Systems (Pre)
systemd: mounting /var/lib/pgsql
systemd:  starting PostgreSQL database server
kernel sdb: unknown partition table
postgresql-check-db-dir: "/var/lib/pgsql/data" is missing or empty
kernel: xfs (dm-4): Mounting V4 Filesystem
postgresql.service: control process exited, code=exited status=1
Failed to start PostgreSQL database server.
Unit postgresql.service entered failed state
sd 2:0:0:0: [sdb] attached SCSI disk
starting LVM2 PV scan on device 8:16
kernel: xfs (dm-3): Ending clean mount
systemd: Mounted /var/lib/pgsql
Starting Remote File Systems
Reached target Remote File Systems

有任何想法吗?

答案1

要确保 PostgreSQL 在安装 iSCSI 卷后启动,请执行以下操作:

cat >/etc/systemd/system/postgresql.service <<EOF
.include /lib/systemd/system/postgresql.service
[Unit]
After=remote-fs.target
EOF

这适用于任意服务(MongoDB、MySQL……)和任何类型的远程访问(NFS、Samba……)。

答案2

/usr/lib/systemd/system/postgresql-9.5.service我已经在我的服务器(RHEL 7.2)上通过编辑和添加解决了这个问题After=remote-fs.target

相关内容