In den folgenden Abschnitten finden Sie eine Anleitung zum Konfigurieren des primären AlloyDB Omni-Servers für die Replikation, zum Konfigurieren des Replikatservers und zum Prüfen des Replikationsstatus auf dem primären Server.
Weitere Informationen finden Sie unter AlloyDB Omni auf Kubernetes installieren.
Primären Server für die Replikation konfigurieren
Aktualisieren Sie die Netzwerk- oder Firewalleinstellungen des Hosts Ihres primären Servers, damit eingehender Traffic vom Host des Replikatservers über den Postgres-Port des primären Servers zugelassen wird.
Replikationsnutzer erstellen:
Docker
docker exec CONTAINER_NAME psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'"
Ersetzen Sie Folgendes:
REPLICA_USER
: der Name des Replikatnutzers.PASSWORD
: das Passwort für den Replikatnutzer.CONTAINER_NAME
: Der Name, den Sie dem AlloyDB Omni-Container bei der Installation zugewiesen haben.
Podman
podman exec CONTAINER_NAME psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'"
Ersetzen Sie Folgendes:
REPLICA_USER
: der Name des Replikatnutzers.PASSWORD
: das Passwort für den Replikatnutzer.CONTAINER_NAME
: Der Name, den Sie dem AlloyDB Omni-Container bei der Installation zugewiesen haben.
Fügen Sie der Datei
/DATA_DIR/pg_hba.conf
die folgenden Zeilen vorhost all all all scram-sha-256
hinzu:host alloydbmetadata alloydbmetadata IP_RANGE trust host replication REPLICA_USER IP_RANGE scram-sha-256
Ersetzen Sie Folgendes:
IP_RANGE
: Der IP-Bereich des Subnetzes, in dem sich Ihr Replikatcomputer befindet, in CIDR-Notation. Beispiel:203.0.113.0/24
DATA_DIR
: Der Dateisystempfad, den dieses Replikat für sein Datenverzeichnis verwenden soll.
Starten Sie den primären Server neu:
Docker
docker restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
Replikatserver erstellen und konfigurieren
So erstellen und konfigurieren Sie einen AlloyDB Omni-Replikatserver:
Prüfen Sie, ob das Replikat eine Netzwerkverbindung zum primären Server hat:
ping SOURCE_IP
Ersetzen Sie
SOURCE_IP
durch die IP-Adresse der primären AlloyDB Omni-Instanz, von der repliziert werden soll.Prüfen Sie, ob das Replikat eine Verbindung zum primären Server herstellen kann:
Docker
docker run -it --rm google/alloydbomni psql "host=SOURCE_IP user=REPLICA_USER replication=1" -c "IDENTIFY_SYSTEM;"
Podman
podman run -it --rm google/alloydbomni psql "host=SOURCE_IP user=REPLICA_USER replication=1" -c "IDENTIFY_SYSTEM;"
Die Ausgabe sollte in etwa so aussehen:
systemid | timeline | xlogpos | dbname ---------------------+----------+-----------+-------- 7376500460465963036 | 1 | 0/454B670 | (1 row)
Die Replik muss einen persistenten Speicherort auf der Festplatte haben:
Docker
mkdir alloydb && docker run --rm -it \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v "$PWD/alloydb":/var/lib/postgresql/data \ -p 5432:5432 \ --user $(id -u):$(id -g) \ google/alloydbomni \ /usr/lib/postgresql/15/bin/pg_basebackup \ --pgdata=/var/lib/postgresql/data/pgdata \ --checkpoint=fast \ --host="SOURCE_IP" \ --port="SOURCE_PORT" \ --username=REPLICA_USER \ --create-slot \ --write-recovery-conf \ --slot="SLOT_NAME"
Ersetzen Sie Folgendes:
SOURCE_PORT
: Der TCP-Port der primären AlloyDB Omni-Instanz, von der repliziert werden soll. Wenn Sie diesen Wert nicht angeben, wendet AlloyDB Omni den Standardwert5432
an.SLOT_NAME
: Das Label für den Namen des Replikations-Slots.
Podman
mkdir alloydb && podman run --rm -it \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v "$PWD/alloydb":/var/lib/postgresql/data \ -p 5432:5432 \ --user $(id -u):$(id -g) \ google/alloydbomni \ /usr/lib/postgresql/15/bin/pg_basebackup \ --pgdata=/var/lib/postgresql/data/pgdata \ --checkpoint=fast \ --host="SOURCE_IP" \ --port="SOURCE_PORT" \ --username=REPLICA_USER \ --create-slot \ --write-recovery-conf \ --slot="SLOT_NAME"
Ersetzen Sie Folgendes:
SOURCE_PORT
: Der TCP-Port der primären AlloyDB Omni-Instanz, von der repliziert werden soll. Wenn Sie diesen Wert nicht angeben, wendet AlloyDB Omni den Standardwert5432
an.SLOT_NAME
: Das Label für den Namen des Replikations-Slots.
Starten Sie die Replikatinstanz:
Docker
docker run --detach \ --name pg-service \ -e POSTGRES_PASSWORD=a \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v "$PWD/alloydb":/var/lib/postgresql/data \ -v /dev/shm:/dev/shm \ -p 5432:5432 \ --user $(id -u):$(id -g) \ google/alloydbomni
Podman
podman run --detach \ --name pg-service \ -e POSTGRES_PASSWORD=a \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v "$PWD/alloydb":/var/lib/postgresql/data \ -v /dev/shm:/dev/shm \ -p 5432:5432 \ --user $(id -u):$(id -g) \ google/alloydbomni
Replikationsstatus auf dem primären Server prüfen
Führen Sie den folgenden Befehl auf dem Host des primären Servers aus, um zu prüfen, ob die Replikation richtig konfiguriert ist:
Docker
docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "select * from pg_stat_replication"
Podman
podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "select * from pg_stat_replication"
Die Ausgabetabelle enthält eine Zeile für jedes Replikat, das mit Ihrem primären Datenbankserver verbunden ist.
Nachdem Sie die Replikation eingerichtet haben, sind alle Einfügungen, Aktualisierungen und Löschungen von Zeilen auf Ihrem primären Datenbankserver innerhalb von Sekunden auf Ihrem Replikat lesbar.