我想在不同的文件系统上创建一个包含数据文件和wal的数据库。我希望通过NFS在单独的服务器上使用wal,以避免在fs /磁盘崩溃的情况下丢失数据。
沃尔夫写在哪里?
我可以通过配置将其强制到与默认位置不同的位置吗?
如果重要的话,我在9.1。
感谢。
答案 0 :(得分:11)
WAL文件被写入数据目录内的目录pg_xlog
。从Postgres 10开始,此目录已重命名为pg_wal
E.g。 /var/lib/postgresql/10/main/pg_wal
有关详细信息,请参阅手册:
如果我没弄错,则无法更改此目录名称。但它可以是指向不同磁盘的符号链接。
事实上,这实际上建议调整WAL性能(见这里:http://wiki.postgresql.org/wiki/Installation_and_Administration_Best_practices#WAL_Directory)
答案 1 :(得分:2)
要将WAL目录复制到另一个文件路径/磁盘驱动器,请按照以下步骤操作:
/var/lib/postgresql/<version>/main/pg_wal
将WAL目录(默认在Ubuntu-rsync
上)复制到新文件路径。它将使用-a
标志保留文件/文件夹权限和文件夹结构。您应该省略训练斜线。pg_wal
)中将pg_wal-backup
重命名为$PG_DATA
pg_wal
)中创建指向新路径$PG_DATA
的符号链接,并将符号链接的权限更新为postgres
用户pg_wal-backup
)中的$PG_DATA
目录sudo service postgresql stop
sudo rsync -av /var/lib/postgresql/12/main/pg_wal /<new_path>
ls -la /<new_path>
sudo mv /var/lib/postgresql/12/main/pg_wal /var/lib/postgresql/12/main/pg_wal-backup
sudo ln -s /wal/pg_wal /var/lib/postgresql/12/main/pg_wal
sudo chown -h postgres:postgres /var/lib/postgresql/12/main/pg_wal
sudo service postgresql start && sudo service postgresql status
# Verify DB connection using your db credentials/information
psql -h localhost -U postgres -p 5432
rm -rf /var/lib/postgresql/12/main/pg_wal-backup