这是Ubuntu 18.04上的postgres 10
我通过架构从发布者复制到订阅者
pg_dump -d <db> -s | psql <db> -h subscriber_host -U rep
将wal_level设置为发布服务器上的逻辑
ALTER SYSTEM SET wal_level = 'logical';
我在发布服务器上重新启动了数据库
我已连接到数据库
\<db>
创建的出版物
CREATE PUBLICATION my_pub FOR ALL TABLES;
然后向名为rep的现有复制用户授予特权
GRANT ALL PRIVILEGES ON DATABASE <db> TO rep;
我现在在订阅服务器上
CREATE Subscription sub CONNECT 'dbname=<db> host=x.x.0.174 user=rep password=password' PUBLICATION my_pub;
数据未复制,订阅服务器上的表仍然为空。
我在日志上看到以下错误:
2020-08-14 01:26:08.055 UTC [21523] LOG: worker process: logical replication worker for subscription 56144 sync 55996 (PID 435) exited with exit code 1
2020-08-14 01:26:08.057 UTC [437] LOG: logical replication table synchronization worker for subscription "sub", table "wholesaletransfers" has started
2020-08-14 01:26:08.081 UTC [436] ERROR: could not start initial contents copy for table "public.wholesale": ERROR: permission denied for relation wholesale
为什么在批发桌时会说public.wholesale
答案 0 :(得分:2)
您仅向用户rep
授予了数据库权限,而没有向架构和表授予权限。
用户仅需要数据库上的CONNECT
特权,但是模式上需要USAGE
,表上需要SELECT
。