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

问题描述 投票:0回答:1

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

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)
)

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

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

对于同一个用户,主数据库和副本服务器的uuid值是否可以不同(不确定是否将uuid写入WAL,我的假设是不应该写入)?

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

postgresql database-replication wal
1个回答
0
投票

你误解了流媒体复制,或者我误解了你想要做的事情。

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.