我希望在不同的文件系统上创建带有数据文件和WAL的数据库。我希望将WAL放在通过NFS连接的独立服务器上,以避免在文件系统/磁盘崩溃时丢失数据。
WAL日志写在哪里?
我能否通过配置强制将其写入到与默认位置不同的位置?
如果有影响的话,我的版本是9.1。
谢谢。
我希望在不同的文件系统上创建带有数据文件和WAL的数据库。我希望将WAL放在通过NFS连接的独立服务器上,以避免在文件系统/磁盘崩溃时丢失数据。
WAL日志写在哪里?
我能否通过配置强制将其写入到与默认位置不同的位置?
如果有影响的话,我的版本是9.1。
谢谢。
WAL文件被写入数据目录内的pg_xlog
目录。从Postgres 10开始,该目录更名为pg_wal
。
例如:/var/lib/postgresql/10/main/pg_wal
详见手册:
如果我没有弄错的话,该目录名称不能更改。但可以将其作为符号链接指向不同的磁盘。
实际上,这是调整WAL性能的推荐方法(参见此处:http://wiki.postgresql.org/wiki/Installation_and_Administration_Best_practices#WAL_Directory)
要将WAL目录复制到另一个文件路径/磁盘驱动器,请按照以下步骤执行:
rsync
将WAL目录(默认情况下位于Ubuntu的/var/lib/postgresql/<version>/main/pg_wal
)复制到新的文件路径。使用-a
标志,可以保留文件/文件夹权限和文件夹结构。您应该省略训练斜杠。$PG_DATA
)中将pg_wal
重命名为pg_wal-backup
。$PG_DATA
)的pg_wal
,并更新符号链接的权限为postgres
用户。$PG_DATA
)中的pg_wal-backup
目录。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 /<new_path> /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
fsync
,则可能会出现数据丢失的情况。 - Ihor Romanchenko