一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

更改PostgreSQL数据存储位置的方法

时间:2026-07-04 10:30:47 编辑:袖梨 来源:一聚教程网

更改 PostgreSQL 的数据存储位置,需要移动整个数据目录并修改相关配置。以下是完整步骤:

更改PostgreSQL的数据存储位置的方法

1. 停止 PostgreSQL 服务

# 使用 systemctl(如果已配置)systemctl stop postgresql-15# 或直接使用 postmasterkill -INT $(head -1 /var/lib/pgsql/15/data/postmaster.pid)# 或使用 pg_ctl/usr/pgsql-15/bin/pg_ctl stop -D /var/lib/pgsql/15/data/

2. 创建新数据目录

# 例如移动到 /data/pgsql 目录NEW_DATA_DIR="/data/pgsql/15/data"# 创建新目录mkdir -p "$NEW_DATA_DIR"# 设置正确的权限(postgres 用户)chown -R postgres:postgres "$NEW_DATA_DIR"chmod 700 "$NEW_DATA_DIR"

3. 复制(或移动)数据文件

# 方法1:移动数据(推荐,更快)mv /var/lib/pgsql/15/data/* "$NEW_DATA_DIR/"# 方法2:复制数据(保留原数据)cp -rp /var/lib/pgsql/15/data/* "$NEW_DATA_DIR/"

4. 修改配置文件

方法A:修改 postgresql.conf

# 编辑配置文件vi "$NEW_DATA_DIR/postgresql.conf"# 修改或添加以下行data_directory = '/data/pgsql/15/data'

方法B:使用软链接(不修改配置文件)

# 备份原目录mv /var/lib/pgsql/15/data /var/lib/pgsql/15/data_old# 创建软链接ln -s /data/pgsql/15/data /var/lib/pgsql/15/data# 确保权限正确chown -R postgres:postgres /var/lib/pgsql/15/data

5. 启动 PostgreSQL

# 使用 systemctlsystemctl start postgresql-15# 或直接启动/usr/pgsql-15/bin/postmaster -D "$NEW_DATA_DIR" &# 或使用 pg_ctl/usr/pgsql-15/bin/pg_ctl start -D "$NEW_DATA_DIR"

6. 验证

# 检查数据目录/usr/pgsql-15/bin/psql -h localhost -p 30004 -U postgres -c "SHOW data_directory;"# 查看当前配置/usr/pgsql-15/bin/psql -h localhost -p 30004 -U postgres -c "SELECT * FROM pg_settings WHERE name LIKE '%data_directory%';"

7. 更新 systemd 服务文件(如果使用 systemctl)

# 编辑服务文件vi /etc/systemd/system/postgresql-15.service# 或编辑 override 文件mkdir -p /etc/systemd/system/postgresql-15.service.dcat > /etc/systemd/system/postgresql-15.service.d/override.conf << EOF[Service]Environment=PGDATA=/data/pgsql/15/dataEOF# 重新加载 systemdsystemctl daemon-reload

完整脚本示例

#!/bin/bash# 配置OLD_DATA="/var/lib/pgsql/15/data"NEW_DATA="/data/pgsql/15/data"PG_VERSION="15"PG_USER="postgres"# 1. 停止 PostgreSQLecho "停止 PostgreSQL..."/usr/pgsql-15/bin/pg_ctl stop -D "$OLD_DATA" -m fast# 2. 创建新目录echo "创建新数据目录..."mkdir -p "$NEW_DATA"chown -R $PG_USER:$PG_USER "$NEW_DATA"chmod 700 "$NEW_DATA"# 3. 移动数据echo "迁移数据文件..."rsync -av --progress "$OLD_DATA/" "$NEW_DATA/"# 验证后可以删除原数据# rm -rf "$OLD_DATA"# 4. 更新配置echo "更新配置文件..."sed -i "s|data_directory = .*|data_directory = '$NEW_DATA'|" "$NEW_DATA/postgresql.conf"# 5. 启动 PostgreSQLecho "启动 PostgreSQL..."/usr/pgsql-15/bin/pg_ctl start -D "$NEW_DATA"# 6. 验证echo "验证数据目录..."/usr/pgsql-15/bin/psql -h localhost -p 30004 -U postgres -c "SHOW data_directory;"echo "迁移完成!"

注意事项

  1. 磁盘空间:确保目标目录有足够的磁盘空间
  2. 权限:数据目录必须属于 postgres 用户
  3. SELinux:如果启用,需要设置正确的 SELinux 上下文
semanage fcontext -a -t postgresql_db_t "/data/pgsql(/.*)?"restorecon -Rv /data/pgsql
  1. 防火墙:如果修改了端口,需要更新防火墙规则

检查当前数据目录

# 方法1:通过 SQL/usr/pgsql-15/bin/psql -h localhost -p 30004 -U postgres -c "SHOW data_directory;"# 方法2:查看进程ps aux | grep postmaster | grep -E "-D"# 方法3:查看配置文件grep data_directory /var/lib/pgsql/15/data/postgresql.conf

以上就是更改PostgreSQL的数据存储位置的方法的详细内容,更多关于PostgreSQL数据存储位置更改的资料请关注本站其它相关文章!

您可能感兴趣的文章:
  • Java使用PostgreSQL存储检索节气与季节的相关数据
  • 基于MybatisPlus将百度天气数据存储至PostgreSQL数据库
  • 使用Java和PostgreSQL存储向量数据的实现指南
  • PostgreSQL使用JSONB存储和查询复杂的数据结构
  • 使用Python处理Excel文件并将数据存储到PostgreSQL的方法

热门栏目