在Ubuntu下用apt安装postgresql后,一般会生成两个systemctl服务(通常位于/lib/system/systemd),一个是postgresql.service,另一个是带参数的postgresql@.service,其中参数是Postgresql的大版本号。后者可以通过systemctl start postgresql@18-main.service启动,其中18是版本号,可以换成其他安装的版本。
笔者遇到的问题是,笔者将Postgresql版本从16升级到了18(用的同样的配置同样的端口号),但想保留16一段时间以防万一。于是在升级时简单用systemctl stop postgresql@16-main.service,systemctl stop postgresql@18-main.service简单地切换了下。但笔者的机器断电了一次,重启后一些依赖数据库的其他服务都挂了。于是进行了研究,发现开机自动重启的是16版本。
经过仔细研究,笔者发现
- Ubuntu安装Postgresql后,注册的开机启动服务其实是
postgresql.service,并不是具体指向版本的postgresql@16-main.service或者postgresql@18-main.service;