¶安装
可以直接从官方apt
源安装
1 | sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' |
¶设置数据文件位置
¶准备工作——创建新位置
创建如下新目录,并且GRANT全部权限,数据文件将保存于此:
1 | /home/db/postgre/data |
¶步骤一:移动数据文件
切换到默认PostgreSQL用户(一般为postgres
)
1 | sudo su postgres |
进入交互:
1 | psql |
查看当前默认的数据目录位置:
1 | postgres=# SHOW data_directory; |
输出
1 | Output |
退出交互:
1 | postgres=# \q |
停止服务:
1 | sudo systemctl stop postgresql |
1 | ○ postgresql.service - PostgreSQL RDBMS |
看到inactive (dead)
确认已经停止。
拷贝数据库目录到新位置,如果没有rsync,可以使用apt安装下,参数说明:
- -a 参数保存权限和其他目录属性
- -v 会显示详细过程
注意:
- 如果在目录最后加上/,会把目录下面的内容拷贝过去,
- 如果最后没有/,会拷贝这个目录及下面的内容。
1 | sudo rsync -av /var/lib/postgresql/ /home/db/postgre/data/ |
上面的拷贝结束后,把当前数据目录改名成备份,等最后确认新位置没有问题后再删除:
1 | $ sudo mv /var/lib/postgresql/16/main /var/lib/postgresql/16/main.bak |
¶步骤二:指向数据文件新位置
编辑配置文件:
1 | sudo vi /etc/postgresql/16/main/postgresql.conf |
找到有data_directory的一行,修改后面的目录路径为新位置:
1 | data_directory = '/home/db/postgre/data/16/main' |
保存,退出。
¶步骤三:重新启动数据库并验证数据文件位置
重新启动服务:
1 | sudo systemctl start postgresql |
查看服务状态:
1 | sudo systemctl status postgresql |
可以看到输出中有active (exited)字样,说明服务启动成功了:
1 | Output |
看到active (exited)
确认已经启动。
注:这里说明下(exited)
。postgresql.service
只是一个启动的wrapper,实际运行的服务是 postgresql@<version>-main.service
。
¶步骤四:清理数据
如果上述验证过程没有问题,可以删除原有的数据目录了:
1 | sudo rm -rf /var/lib/postgresql/16/main.bak |
¶其他常用设置
¶允许从非本机访问
编辑postgresql.conf
,将listen_addresses = 'localhost'
改成listen_addresses = '*'
以允许所有ip访问,或者填写所需的ip。