我正在尝试遵循 Postgres 的 Debezium 教程并设置复制用户。我正在创建复制用户,如下所示:
CREATE ROLE replication_role WITH REPLICATION LOGIN;
CREATE USER debezium WITH PASSWORD 'my-secret-pw';
GRANT replication_role TO debezium;
CREATE ROLE replication_group WITH LOGIN;
GRANT replication_group TO postgres;
GRANT replication_group TO debezium;
ALTER TABLE person OWNER TO replication_group;
它设置复制用户如下:
List of roles
Role name | Attributes | Member of
-------------------+------------------------------------------------------------+--------------------------------------
debezium | | {replication_role,replication_group}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {replication_group}
replication_group | | {}
replication_role | Replication | {}
当我尝试启动 Postgres 源连接器时,出现如下错误:
io.debezium.DebeziumException: Creation of replication slot failed
...
Caused by: org.postgresql.util.PSQLException: FATAL: must be superuser or replication role to start walsender
如何解决权限问题以便我可以开始从 Postgres 进行复制?
复制属性不被继承。该属性必须直接在将使用它的角色上设置。你说你正在遵循教程,但据我所知,你没有。您似乎混淆了创建出版物所需的权限/属性与流式传输出版物所需的权限/属性。
ALTER USER debezium REPLICATION;