我的 PostgreSQL 安装默认使用/var/lib/pgsql
目录来存储数据、备份和配置文件。由于磁盘空间不足,我安装了新硬件并将其安装在目录中/data
。完成此操作后,我现在想将数据和备份移到那里。
正确完成此转换的最佳方法是什么?请注意,我不需要原子转换 – 数据传输过程中,PostgreSQL 服务可以处于离线状态。
提前致谢,
皮特。
答案1
实际上有几个选项。最直接的可能是关闭服务器,然后将 /var/lib/pgsql 下的整个树复制到新磁盘,然后绑定挂载或将其挂载回 /var/lib/pgsql。我可能会选择后者,但可能有所不同。
mkdir /data/pgsql
cd /var/lib/pgsql
cp -aRp * /data/pgsql
cd ..
mv pgsql pgsql.safe
mkdir pgsql
mount -obind /data/pgsql /var/lib/pgsql
进行测试,如果有效,则添加合适的条目/etc/fstab。
类似地,您可以将 /var/lib/pgsql 的全部内容复制到 /data,然后卸载 /data 并将其挂载到 /var/lib/pgsql(将旧目录移开并重新创建目录)。再次运行测试并对 fstab 进行适当的更改。
答案2
根据您的服务器的配置方式,您可以简单地更改 PG_DATA 变量。
但你可以轻松地做到:
service postgresql stop
mv /var/lib/pgsql/ /data/pgsql
ln -s /data/pgsql /var/lib/pgsql
service postgresql start
它将完成这项工作。