You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/docs/hosting/gcp.md
+38-1Lines changed: 38 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ keywords: [Bemi, GCP Cloud SQL, PostgreSQL, Change Data Capture, real-time data
7
7
image: 'img/social-card.png'
8
8
---
9
9
10
-
# GCP Cloud SQL
10
+
# Google Cloud Platform Cloud SQL
11
11
12
12
## WAL level
13
13
@@ -20,3 +20,40 @@ Run the below command and then you can connect with the same credentials on the
20
20
-- Grant replication permission to allow using replication slots
21
21
ALTERUSER [user] WITH REPLICATION;
22
22
```
23
+
24
+
## Read-only credentials
25
+
26
+
Alternatively, you can manually create read-only PostgreSQL database credentials to connect to the primary instance's WAL.
27
+
At a high level, you need to run these commands that are safe to execute without any downtime or performance issues:
28
+
29
+
*`CREATE ROLE` creates a new read-only user for Bemi to read database changes.
30
+
*`CREATE PUBLICATION` creates a "channel" that we'll subscribe to and track changes in real-time.
31
+
*`REPLICA IDENTITY FULL` enhances records stored in WAL to record the previous state (“before”) in addition to the tracked by default new state (“after”).
32
+
33
+
```sql
34
+
-- Create read-only user with REPLICATION permission
35
+
CREATE ROLE [username] WITH LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE REPLICATION PASSWORD '[password]';
36
+
-- Grant SELECT access to tables for selective tracking
37
+
GRANTSELECTON ALL TABLES IN SCHEMA public TO [username];
38
+
-- Grant SELECT access to new tables created in the future for selective tracking
39
+
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANTSELECTON TABLES TO [username];
40
+
41
+
-- Create "bemi" PUBLICATION to enable logical replication
42
+
CREATE PUBLICATION bemi FOR ALL TABLES;
43
+
44
+
-- Create a procedure to set REPLICA IDENTITY FULL for tables to track the "before" state on DB row changes
45
+
CREATE OR REPLACE PROCEDURE _bemi_set_replica_identity() AS $$ DECLARE current_tablename TEXT;
46
+
BEGIN
47
+
FOR current_tablename INSELECT tablename FROM pg_tables LEFT JOIN pg_class ON relname = tablename WHERE schemaname ='public'AND relreplident !='f' LOOP
0 commit comments