postgresql wal在哪里?如何指定不同的路径?

Yve*_*man 6 postgresql

我想在不同的文件系统上创建一个包含数据文件和wal的数据库.我想将wal放在NFS上的单独服务器上,以避免在fs /磁盘崩溃的情况下丢失数据.

沃尔夫写在哪里?

我可以通过配置将其强制到与默认位置不同的位置吗?

如果重要的话,我在9.1.

谢谢.

a_h*_*ame 12

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)

  • 从postgres 10开始,该目录名为pg_wal而不是pg_xlog (2认同)

tec*_*995 5

要将 WAL 目录复制到另一个文件路径/磁盘驱动器,请按照以下步骤操作:

描述步骤

  1. 关闭 Postgres 以防止腐败
  2. 复制WAL目录(默认在Ubuntu - /var/lib/postgresql/<version>/main/pg_wal)使用新的文件路径rsync。它将使用-a标志保留文件/文件夹权限和文件夹结构。你应该去掉训练斜线。
  3. 验证复制的内容是否正确
  4. 在 Postgres 数据目录中重命名pg_walpg_wal-backup( $PG_DATA)
  5. pg_wal在 Postgres 数据目录 ( $PG_DATA) 中创建指向新路径的符号链接,并将符号链接的权限更新为postgres用户
  6. 启动 Postgres 并验证是否可以连接到数据库
  7. (可选)删除pg_wal-backupPostgres 数据目录中的目录 ( $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 /<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
Run Code Online (Sandbox Code Playgroud)