更改PostgreSQL的数据存储位置的方法
更新时间:2026年07月01日 09:42:22 作者:iangyu
这篇文章详细介绍了更改PostgreSQL数据存储位置的方法,包括停止服务、创建新目录、复制数据文件、修改配置文件(包括postgresql.conf和使用软链接两种方式)以及启动服务等步骤,确保数据迁移顺利进行,需要的朋友可以参考下
更改 PostgreSQL 的数据存储位置,需要移动整个数据目录并修改相关配置。以下是完整步骤:
1. 停止 PostgreSQL 服务
# 使用 systemctl(如果已配置) systemctl stop postgresql-15 # 或直接使用 postmaster kill -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
# 使用 systemctl systemctl 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.d cat > /etc/systemd/system/postgresql-15.service.d/override.conf << EOF [Service] Environment=PGDATA=/data/pgsql/15/data EOF # 重新加载 systemd systemctl daemon-reload
完整脚本示例
#!/bin/bash # 配置 OLD_DATA="/var/lib/pgsql/15/data" NEW_DATA="/data/pgsql/15/data" PG_VERSION="15" PG_USER="postgres" # 1. 停止 PostgreSQL echo "停止 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. 启动 PostgreSQL echo "启动 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 "迁移完成!"
注意事项
- 磁盘空间:确保目标目录有足够的磁盘空间
- 权限:数据目录必须属于
postgres用户 - SELinux:如果启用,需要设置正确的 SELinux 上下文
semanage fcontext -a -t postgresql_db_t "/data/pgsql(/.*)?" restorecon -Rv /data/pgsql
- 防火墙:如果修改了端口,需要更新防火墙规则
检查当前数据目录
# 方法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数据存储位置更改的资料请关注脚本之家其它相关文章!
相关文章
详解PostgreSQL 14.4安装使用及一些安装的异常问题
这篇文章主要介绍了PostgreSQL 14.4的安装以及使用以及一些安装的异常,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-07-07


最新评论