代码之家  ›  专栏  ›  技术社区  ›  Hamed Kamrava

postgresql 11中的逻辑复制和声明性分区

  •  1
  • Hamed Kamrava  · 技术社区  · 6 年前

    我有一张普通的桌子 transactions 有2亿排。

    我决定使用逻辑复制将此表转换为声明性分区。

    我在node1上创建了一个出版物,如下所示:

    CREATE PUBLICATION transactions_pub FOR TABLE transactions;
    

    当我尝试在node2上创建订阅时,如下所示:

    CREATE SUBSCRIPTION transactions_sub CONNECTION 'host=x.x.x.x port=5432 password=123456 user=replicator dbname=mydbname' PUBLICATION transactions_pub;
    

    返回此错误:

    ERROR:  logical replication target relation "public.transactions" is not a table
    

    是否可以使用逻辑复制将常规表复制到声明性分区表?

    2 回复  |  直到 6 年前
        1
  •  2
  •   amitlan    6 年前

    不,逻辑复制无法从 到声明性分区表。

        2
  •  2
  •   Arkhena    6 年前

    目前,逻辑复制只适用于基表。

    this documentation page :

    只能从基表复制到基表。也就是说,发布和订阅端的表必须是普通表,而不是视图、物化视图、分区根表或外部表。对于分区,因此可以一对一地复制分区层次结构,但当前不能复制到不同分区的设置。尝试复制基表以外的表将导致错误。