向左向右

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

postgresql
数据库备份

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

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

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

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

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

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

-- 全部表
CREATE PUBLICATION my_pub FOR ALL TABLES;

-- 指定表,可以多个
CREATE PUBLICATION my_pub FOR TABLE table1,table2;
  1. 创建订阅者

在备份的数据库上

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

这样就会自动同步

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

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