不同版本的 pgsql 主从复制错误

问题描述

我正在尝试将 ubuntu 18.04 LTS 中的 postgresql 10 作为主服务器复制到 ubuntu 16.04 中的 postgresql 9.5 从服务器,但出现错误

postgres@localhost:/root$ pg_basebackup -h 139.162.4.197 -U replication -p 5432 -D /var/lib/postgresql/9.5/main/  -Fp -Xs -P -R

Could not change directory to "/root": Permission denied
Password: 
pg_basebackup: incompatible server version 10.16 (Ubuntu 10.16-1.pgdg18.04+1)

但是当使用相同的 postgresql 版本如

  • postgresql 10 作为 master 和 postgresql 10 slave 或
  • postgresql 12 作为 master 和 postgresql 12 slave

它复制得很好

但是当使用不同的 postgresql 版本如

  • postgresql 10 作为 master 和 postgresql 9.5 slave 或
  • postgresql 12 作为 master 和 postgresql 10 slave

出现上述错误

pg_basebackup: 不兼容的服务器版本 10.16 (Ubuntu 10.16-1.pgdg18.04+1)

解决问题的任何线索

解决方法

这对于流式复制是不可能的;马的评论引用the documentation

通常,运行不同主要 PostgreSQL 版本级别的服务器之间的日志传送是不可能的。

但是从 PostgreSQL v10 开始,您可以使用 logical replication,它也适用于主要版本之间。问题在于并非所有内容都被复制:DDL 语句不是。