使用WAL的主从复制:Postgres uuid_generate_v4()生成主键

时间:2019-02-26 13:16:15

标签: postgresql database-replication wal

我正在使用以下架构在postgres中创建一个用户表:

CREATE TABLE users
(
    uuid character uuid COLLATE pg_catalog."default" NOT NULL DEFAULT uuid_generate_v4(),
    first_name character varying(100) COLLATE pg_catalog."default",

    CONSTRAINT agents_pkey PRIMARY KEY (uuid)
)

uuid是类型uuid的主键。我正在使用uuid_generate_v4()来生成uuid值。

我现在不在复制模式下使用Postgres。
但是后来,当我开始使用复制(最可能是WAL流复制)时,添加副本是否会导致问题?
这是否类似于使用非确定性函数(time now())的情况?

同一用户的主副本和副本副本之间的uuid值是否可以不同(不确定uuid是否写入WAL,我认为不应该将其写入)?

自动增量键又如何在主站-从站之间保持同步,是否通过以与主站相同的顺序重放/插入行来保持同步?

1 个答案:

答案 0 :(得分:0)

您可能误解了流复制,或者我误解了您想做什么。

流复制备用数据库是主数据库的物理副本,如果为hot_standby = on,则可以建立只读连接。

在两台服务器上,表的内容将始终相同,并且您将无法在备用服务器上插入行,因此DEFAULT子句中的函数是确定性的还是不是。

似乎您可能正在寻找一种称为“多主复制”的东西,以便可以在两台服务器上修改数据。 PostgreSQL没有提供开箱即用的解决方案。

似乎您了解多主复制的一些问题,因为您提出了这个问题。在大多数情况下,最好选择问题较少的其他体系结构。

相关问题