postgresql远程服务器数据自动备份到本地NAS服务器

2024-11-09
postgresql
数据库备份

前几天晚上把 postgresql16 升级到了 postgresql17,对于备份一直都是服务器本地备份,现在想把服务器的数据自动备份到本地 NAS 服务器中。

原来设想,服务器的数据库和本地服务器做主主同步,也就是两个库都可以写入,并同步,但又不想借助第三方工具或插件,还有就是网络是单向的,本地能访问服务器,服务器不能访问本地,通过综合考虑,目前来说逻辑复制(发布 + 订阅)是比较合适的。

  1. 修改配置参数以支持逻辑复制

配置文件 postgresql.conf 中参数修改,可以通过 sql 脚本先查询

1-- 查看当前配置参数情况
2SHOW wal_level;
1#需要更改的配置参数
2wal_level=logical
  1. 创建发布者

在需要同步的主数据库上,对应的表

1-- 全部表
2CREATE PUBLICATION my_pub FOR ALL TABLES;
3
4-- 指定表,可以多个
5CREATE PUBLICATION my_pub FOR TABLE table1,table2;
  1. 创建订阅者

在备份的数据库上

1CREATE SUBSCRIPTION my_sub CONNECTION 'host=远程ip port=5433 user=postgres password=password dbname=dbname' PUBLICATION my_pub;

这样就会自动同步

不过有一些需要特别注意缺点,主库和备份库的表要一致,而且只能同步数据,不能同步表结构和索引等其他内容,如果主表有调整表结构,要备份表同时调整。

关注 “AUTRE” 微信公众号,给我留言
Placeholder Image