In den folgenden Abschnitten wird beschrieben, wie Sie den primären AlloyDB Omni-Server für die Replikation konfigurieren, den Replikatserver konfigurieren und den Replikationsstatus auf dem primären Server prüfen.
Aktualisieren Sie die Netzwerk- oder Firewalleinstellungen des Hosts Ihres primären Servers, sodass eingehender Traffic vom Host des Replikatservers über den Postgres-Port des primären Servers zugelassen wird.
Replikationsnutzer erstellen:
dockerexecCONTAINER_NAMEpsql-hlocalhost-Upostgres-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 ist 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:
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 Standardwert 5432 an.
SLOT_NAME: Das Label für den Namen des Replikations-Slots.
Führen Sie den folgenden Befehl auf dem Host des primären Servers aus, um zu prüfen, ob die Replikation richtig konfiguriert ist:
dockerexec-itCONTAINER_NAMEpsql-hlocalhost-Upostgres-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.
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-08-17 (UTC)."],[[["\u003cp\u003eAlloyDB Omni allows the creation of replica servers to enhance read throughput and availability by providing a read-only clone of the primary database that mirrors its data changes.\u003c/p\u003e\n"],["\u003cp\u003eConfiguring the primary server for replication involves updating network settings, creating a replication user, modifying the \u003ccode\u003epg_hba.conf\u003c/code\u003e file, and restarting the primary server.\u003c/p\u003e\n"],["\u003cp\u003eSetting up a replica server requires verifying network connectivity to the primary server, ensuring the replica can connect to it, creating a persistent storage location, and then starting the replica instance.\u003c/p\u003e\n"],["\u003cp\u003eYou can check if replication is properly configured by running a command on the primary server to view a table that contains a row for every replica connected to the database.\u003c/p\u003e\n"],["\u003cp\u003eAfter replication is established, modifications made to the primary database server, such as inserts, updates, and deletions, become visible on the replica within seconds.\u003c/p\u003e\n"]]],[],null,["# Create a read-only replica\n\nSelect a documentation version: 15.5.4keyboard_arrow_down\n\n- [Current (16.8.0)](/alloydb/omni/current/docs/set-up-read-replica)\n- [16.8.0](/alloydb/omni/16.8.0/docs/set-up-read-replica)\n- [16.3.0](/alloydb/omni/16.3.0/docs/set-up-read-replica)\n- [15.12.0](/alloydb/omni/15.12.0/docs/set-up-read-replica)\n- [15.7.1](/alloydb/omni/15.7.1/docs/set-up-read-replica)\n- [15.7.0](/alloydb/omni/15.7.0/docs/set-up-read-replica)\n- [15.5.5](/alloydb/omni/15.5.5/docs/set-up-read-replica)\n- [15.5.4](/alloydb/omni/15.5.4/docs/set-up-read-replica)\n- [15.5.2](/alloydb/omni/15.5.2/docs/set-up-read-replica)\n\n\u003cbr /\u003e\n\nTo increase read throughput and availability, you can create an AlloyDB Omni replica server for an existing AlloyDB Omni server. A replica server provides a read-only clone of your primary database server. It continuously updates its own data to reflect changes to your primary server's data.\n\n\u003cbr /\u003e\n\nThe following sections provide steps to configure your\nAlloyDB Omni primary server for replication, configure the\nreplica server, and verify replication status on the primary server.\n\n\n| The information on this page applies only to AlloyDB Omni for containers. It does not apply to AlloyDB Omni for Kubernetes.\n\n\u003cbr /\u003e\n\nFor details, see [Install AlloyDB Omni on Kubernetes](/alloydb/omni/15.5.4/docs/deploy-kubernetes).\n\nConfigure your primary server for replication\n---------------------------------------------\n\n1. Update the network or firewall settings of your primary server's host so\n that it allows ingress traffic from the replica server's host through the primary server's [Postgres port](/alloydb/omni/15.5.4/docs/install).\n\n2. Create a replication user:\n\n docker exec \u003cvar translate=\"no\"\u003eCONTAINER_NAME\u003c/var\u003e psql -h localhost -U postgres -c \"create user \u003cvar translate=\"no\"\u003eREPLICA_USER\u003c/var\u003e with replication password '\u003cvar translate=\"no\"\u003ePASSWORD\u003c/var\u003e'\"\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eREPLICA_USER\u003c/var\u003e: the name of the replica user.\n - \u003cvar translate=\"no\"\u003ePASSWORD\u003c/var\u003e: the password for the replica user.\n - \u003cvar translate=\"no\"\u003eCONTAINER_NAME\u003c/var\u003e: the name that you assigned to the AlloyDB Omni container when you installed it.\n3. Add the following lines in the `/`\u003cvar translate=\"no\"\u003eDATA_DIR\u003c/var\u003e`/pg_hba.conf` file **before** `host all all all scram-sha-256` that exists in the file:\n\n host alloydbmetadata alloydbmetadata \u003cvar translate=\"no\"\u003eIP_RANGE\u003c/var\u003e trust\n host replication \u003cvar translate=\"no\"\u003eREPLICA_USER\u003c/var\u003e \u003cvar translate=\"no\"\u003eIP_RANGE\u003c/var\u003e scram-sha-256\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eIP_RANGE\u003c/var\u003e: the IP range, in CIDR notation, of the subnet where your replica machine is located. For example, `203.0.113.0/24`.\n - \u003cvar translate=\"no\"\u003eDATA_DIR\u003c/var\u003e: the file system path you want this replica to use for its data directory.\n4. Restart your primary server:\n\n docker restart \u003cvar translate=\"no\"\u003eCONTAINER_NAME\u003c/var\u003e\n\nCreate and configure the replica server\n---------------------------------------\n\nTo create and configure an AlloyDB Omni replica server, complete\nthe following steps:\n\n1. Ensure the replica has network connectivity to the primary server:\n\n ping \u003cvar translate=\"no\"\u003eSOURCE_IP\u003c/var\u003e\n\n Replace \u003cvar translate=\"no\"\u003eSOURCE_IP\u003c/var\u003e with the IP address of the primary AlloyDB Omni instance to replicate from.\n2. Ensure the replica can connect to the primary server:\n\n docker run -it --rm google/alloydbomni psql \"host=\u003cvar translate=\"no\"\u003eSOURCE_IP\u003c/var\u003e user=\u003cvar translate=\"no\"\u003eREPLICA_USER\u003c/var\u003e replication=1\" -c \"IDENTIFY_SYSTEM;\"\n\n The output should look similar to the following: \n\n systemid | timeline | xlogpos | dbname\n ---------------------+----------+-----------+--------\n 7376500460465963036 | 1 | 0/454B670 |\n (1 row)\n\n3. The replica must have a persistent storage location on disk:\n\n mkdir alloydb && docker run --rm -it \\\n -e PGDATA=/var/lib/postgresql/data/pgdata \\\n -v \"$PWD/alloydb\":/var/lib/postgresql/data \\\n -p 5432:5432 \\\n --user $(id -u):$(id -g) \\\n google/alloydbomni \\\n /usr/lib/postgresql/15/bin/pg_basebackup \\\n --pgdata=/var/lib/postgresql/data/pgdata \\\n --checkpoint=fast \\\n --host=\"\u003cvar translate=\"no\"\u003eSOURCE_IP\u003c/var\u003e\" \\\n --port=\"\u003cvar translate=\"no\"\u003eSOURCE_PORT\u003c/var\u003e\" \\\n --username=\u003cvar translate=\"no\"\u003eREPLICA_USER\u003c/var\u003e \\\n --create-slot \\\n --write-recovery-conf \\\n --slot=\"\u003cvar translate=\"no\"\u003eSLOT_NAME\u003c/var\u003e\"\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eSOURCE_PORT\u003c/var\u003e: the TCP port of the primary AlloyDB Omni instance to replicate from. If you don't provide this value, then AlloyDB Omni applies a default value of `5432`.\n - \u003cvar translate=\"no\"\u003eSLOT_NAME\u003c/var\u003e: the label for the name of the replication slot.\n4. Start your replica instance:\n\n docker run --detach \\\n --name pg-service \\\n -e POSTGRES_PASSWORD=a \\\n -e PGDATA=/var/lib/postgresql/data/pgdata \\\n -v \"$PWD/alloydb\":/var/lib/postgresql/data \\\n -v /dev/shm:/dev/shm \\\n -p 5432:5432 \\\n --user $(id -u):$(id -g) \\\n google/alloydbomni\n\nVerify replication status on the primary server\n-----------------------------------------------\n\nTo verify replication is configured properly, run the following command on the\nprimary server's host: \n\n docker exec -it \u003cvar translate=\"no\"\u003eCONTAINER_NAME\u003c/var\u003e psql -h localhost -U postgres -c \"select * from pg_stat_replication\"\n\nThe output table contains one row for every replica connected to your primary\ndatabase server.\n\nAfter you set up replication, all inserts, updates, and deletions to rows in\nyour primary database server become readable on your replica within seconds."]]