postgresql远程服务器数据自动备份到本地NAS服务器
前几天晚上把postgresql16升级到了postgresql17,对于备份一直都是服务器本地备份,现在想把服务器的数据自动备份到本地NAS服务器中。
原来设想,服务器的数据库和本地服务器做主主同步,也就是两个库都可以写入,并同步,但又不想借助第三方工具或插件,还有就是网络是单向的,本地能访问服务器,服务器不能访问本地,通过综合考虑,目前来说逻辑复制(发布+订阅)是比较合适的。
- 修改配置参数以支持逻辑复制
配置文件postgresql.conf中参数修改,可以通过sql脚本先查询
-- 查看当前配置参数情况
SHOW wal_level;
#需要更改的配置参数
wal_level=logical
- 创建发布者
在需要同步的主数据库上,对应的表
-- 全部表
CREATE PUBLICATION my_pub FOR ALL TABLES;
-- 指定表,可以多个
CREATE PUBLICATION my_pub FOR TABLE table1,table2;
- 创建订阅者
在备份的数据库上
CREATE SUBSCRIPTION my_sub CONNECTION 'host=远程ip port=5433 user=postgres password=password dbname=dbname' PUBLICATION my_pub;
这样就会自动同步
不过有一些需要特别注意缺点,主库和备份库的表要一致,而且只能同步数据,不能同步表结构和索引等其他内容,如果主表有调整表结构,要备份表同时调整。