无法启动 postgresql.service?
Unable to start postgresql.service?
我正在使用 arch linux (4.8.13-1-ARCH)。我正尝试按照说明设置 PostgreSQL here。
执行后
[postgres@BitBox ~]$ initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data'
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.UTF-8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
fixing permissions on existing directory /var/lib/postgres/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using:
pg_ctl -D /var/lib/postgres/data -l logfile start
成功,我使用退出命令返回到我的普通用户。
[postgres@BitBox ~]$ exit
logout
然后,在尝试启动 postgresql.service 时,出现以下错误:
[code_master5@BitBox ~]$ sudo systemctl start postgresql.service
Failed to start postgresql.service: Unit postgresql.service not found.
我什至没有得到服务的状态:
[code_master5@BitBox ~]$ sudo systemctl status postgresql.service
Unit postgresql.service could not be found.
我卡住了!
我终于想通了。已经存在一个文件
/usr/lib/systemd/system/postgresql-9.6.service
所以,可能是因为这个文件的存在,我无法启动 postgresql.service。然后我尝试启动postgresql-9.6.service如下:
[code_master5@BitBox ~]$ sudo systemctl start postgresql-9.6.service
Failed to start postgresql-9.6.service: Unit postgresql-9.6.service not found.
而且,正如您所看到的输出,它再次失败了。
我只是使用 sudo 删除了文件,因为我认为可能 postgresql.service 由于此文件的存在,相关程序未创建文件。然后我重新启动了系统。从那以后它工作正常,你可以看到下面的输出:
[code_master5@BitBox ~]$ sudo systemctl status postgresql.service
[sudo] password for code_master5:
● postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor p
Active: active (running) since Sat 2017-01-28 09:31:30 IST; 7h ago
Main PID: 342 (postgres)
Tasks: 6 (limit: 4915)
CGroup: /system.slice/postgresql.service
├─342 /usr/bin/postgres -D /var/lib/postgres/data
├─358 postgres: checkpointer process
├─359 postgres: writer process
├─360 postgres: wal writer process
├─361 postgres: autovacuum launcher process
└─362 postgres: stats collector process
Jan 28 09:31:26 BitBox systemd[1]: Starting PostgreSQL database server...
Jan 28 09:31:28 BitBox postgres[340]: FATAL: the database system is starting up
Jan 28 09:31:28 BitBox postgres[340]: LOG: database system was shut down at 201
Jan 28 09:31:29 BitBox postgres[340]: FATAL: the database system is starting up
Jan 28 09:31:29 BitBox postgres[340]: LOG: MultiXact member wraparound protecti
Jan 28 09:31:29 BitBox postgres[340]: LOG: database system is ready to accept c
Jan 28 09:31:29 BitBox postgres[340]: LOG: autovacuum launcher started
Jan 28 09:31:30 BitBox systemd[1]: Started PostgreSQL database server.
我当然想警告所有遇到同样问题的人。请做我所做的一切,风险自负。因为这些是系统文件。弄乱这些会破坏你的周末!
虽然我对此还是有点困惑。欢迎解释!
试试这个:
service postgresql-10.service restart
service postgresql-XX.service restart
我发现这两个命令非常方便。虽然这个 post 是旧的,但也许将来其他人会从中受益。
systemctl list-units|grep postgresql
service postgresql-12.service restart
对于 PostGres 9.4.12,我尝试了以下方法并且有效:
./pg_ctl start
您可以查看它的状态:
./pg_ctl status
我使用这个命令:
$ /etc/init.d/postgresql start
后续步骤对我们的测试服务器有所帮助。
通过 SSH 连接您的服务器。
然后切换用户:
$ sudo su - postgres
检查 Postgres 状态:
pg_ctl status
停止数据库:
pg_ctl stop
检查是否没有服务器进程存在:
ps axf|grep postg
启动 Postgres 服务:
sudo systemctl start postgresql.service
或
sudo systemctl start postgresql
然后查看状态:
systemctl status postgresql.service
或
systemctl status postgresql
确保初始化数据库。
sudo find / -name post*-setup
sudo /usr/bin/postgresql-setup initdb
我正在使用 arch linux (4.8.13-1-ARCH)。我正尝试按照说明设置 PostgreSQL here。
执行后
[postgres@BitBox ~]$ initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data'
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.UTF-8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
fixing permissions on existing directory /var/lib/postgres/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using:
pg_ctl -D /var/lib/postgres/data -l logfile start
成功,我使用退出命令返回到我的普通用户。
[postgres@BitBox ~]$ exit
logout
然后,在尝试启动 postgresql.service 时,出现以下错误:
[code_master5@BitBox ~]$ sudo systemctl start postgresql.service
Failed to start postgresql.service: Unit postgresql.service not found.
我什至没有得到服务的状态:
[code_master5@BitBox ~]$ sudo systemctl status postgresql.service
Unit postgresql.service could not be found.
我卡住了!
我终于想通了。已经存在一个文件
/usr/lib/systemd/system/postgresql-9.6.service
所以,可能是因为这个文件的存在,我无法启动 postgresql.service。然后我尝试启动postgresql-9.6.service如下:
[code_master5@BitBox ~]$ sudo systemctl start postgresql-9.6.service
Failed to start postgresql-9.6.service: Unit postgresql-9.6.service not found.
而且,正如您所看到的输出,它再次失败了。
我只是使用 sudo 删除了文件,因为我认为可能 postgresql.service 由于此文件的存在,相关程序未创建文件。然后我重新启动了系统。从那以后它工作正常,你可以看到下面的输出:
[code_master5@BitBox ~]$ sudo systemctl status postgresql.service
[sudo] password for code_master5:
● postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor p
Active: active (running) since Sat 2017-01-28 09:31:30 IST; 7h ago
Main PID: 342 (postgres)
Tasks: 6 (limit: 4915)
CGroup: /system.slice/postgresql.service
├─342 /usr/bin/postgres -D /var/lib/postgres/data
├─358 postgres: checkpointer process
├─359 postgres: writer process
├─360 postgres: wal writer process
├─361 postgres: autovacuum launcher process
└─362 postgres: stats collector process
Jan 28 09:31:26 BitBox systemd[1]: Starting PostgreSQL database server...
Jan 28 09:31:28 BitBox postgres[340]: FATAL: the database system is starting up
Jan 28 09:31:28 BitBox postgres[340]: LOG: database system was shut down at 201
Jan 28 09:31:29 BitBox postgres[340]: FATAL: the database system is starting up
Jan 28 09:31:29 BitBox postgres[340]: LOG: MultiXact member wraparound protecti
Jan 28 09:31:29 BitBox postgres[340]: LOG: database system is ready to accept c
Jan 28 09:31:29 BitBox postgres[340]: LOG: autovacuum launcher started
Jan 28 09:31:30 BitBox systemd[1]: Started PostgreSQL database server.
我当然想警告所有遇到同样问题的人。请做我所做的一切,风险自负。因为这些是系统文件。弄乱这些会破坏你的周末!
虽然我对此还是有点困惑。欢迎解释!
试试这个:
service postgresql-10.service restart
service postgresql-XX.service restart
我发现这两个命令非常方便。虽然这个 post 是旧的,但也许将来其他人会从中受益。
systemctl list-units|grep postgresql
service postgresql-12.service restart
对于 PostGres 9.4.12,我尝试了以下方法并且有效:
./pg_ctl start
您可以查看它的状态:
./pg_ctl status
我使用这个命令:
$ /etc/init.d/postgresql start
后续步骤对我们的测试服务器有所帮助。
通过 SSH 连接您的服务器。
然后切换用户:
$ sudo su - postgres
检查 Postgres 状态:
pg_ctl status
停止数据库:
pg_ctl stop
检查是否没有服务器进程存在:
ps axf|grep postg
启动 Postgres 服务:
sudo systemctl start postgresql.service
或
sudo systemctl start postgresql
然后查看状态:
systemctl status postgresql.service
或
systemctl status postgresql
确保初始化数据库。
sudo find / -name post*-setup sudo /usr/bin/postgresql-setup initdb