chore(postgresql): add replication slots and publication commands

This commit is contained in:
Michele Cereda
2024-07-24 18:04:54 +02:00
parent cc1a89bb19
commit 436c0c8b6c

View File

@@ -74,13 +74,14 @@ ALTER DEFAULT PRIVILEGES FOR ROLE juan IN SCHEMA cache REVOKE all ON TABLES FROM
\du
\du+
-- List users only
select usename FROM pg_catalog.pg_user;
SELECT usename FROM pg_catalog.pg_user;
-- Check the current user has SuperUser privileges
SHOW is_superuser
SHOW is_superuser;
-- Create roles
-- Roles *are* users and groups since PostgreSQL vFIXME
-- Roles *are* users *and* groups since PostgreSQL vFIXME
-- Users are just roles that can LOGIN
-- Does *not* support IF NOT EXISTS
CREATE ROLE miriam;
CREATE ROLE miriam WITH LOGIN PASSWORD 'jw8s0F4' VALID UNTIL '2005-01-01';
@@ -89,18 +90,23 @@ CREATE USER mike;
-- Grant roles SuperUser privileges
-- The role granting privileges must be already SuperUser
ALTER USER joel WITH SUPERUSER;
-- Revoke SuperUser privileges
ALTER USER joel WITH NOSUPERUSER;
-- Grant privileges to users
ALTER USER mark CREATEDB;
ALTER USER mark CREATEDB REPLICATION;
ALTER ROLE miriam CREATEROLE CREATEDB;
-- Change passwords
ALTER USER jonathan WITH PASSWORD 'seagull5-pantomime-Resting';
ALTER ROLE samantha WITH PASSWORD 'Wing5+Trunks3+Relic2' VALID UNTIL 'August 4 12:00:00 2024 +1';
-- Change password's validity
ALTER ROLE fred VALID UNTIL 'infinity';
-- Rename
ALTER ROLE manager RENAME TO boss
ALTER ROLE manager RENAME TO boss;
-- Assign roles to users
GRANT rds_superuser TO mike;
@@ -141,6 +147,7 @@ SELECT transport.import_from_server(
'destination.password',
true
);
-- Run DB transfers
-- Requires 'pg_transport' to be installed on both the source and destination DBs
-- Requires 'pg_transport' to be the *only* extension active on the source
@@ -150,3 +157,24 @@ SELECT transport.import_from_server(
'destination.password',
false
);
-- List replication slots
SELECT * FROM pg_replication_slots;
-- Create replication slots
-- Requires the executor to be superuser or replication role
SELECT pg_create_physical_replication_slot('peerflow_slot_prod');
SELECT pg_create_logical_replication_slot('airbyte_slot', 'pgoutput');
-- Drop replication slots
SELECT pg_drop_replication_slot('airbyte_slot');
-- List publications
\dRp
\dRp+
-- Create publications
CREATE PUBLICATION peerflow_prod FOR ALL TABLES;
CREATE PUBLICATION airbyte FOR TABLE call_log, queue_log;