En las siguientes secciones se indican los pasos para configurar el servidor principal de AlloyDB Omni para la replicación, configurar el servidor réplica y verificar el estado de la replicación en el servidor principal.
Para obtener más información, consulta Instalar AlloyDB Omni en Kubernetes.
Configurar el servidor principal para la replicación
Actualiza la configuración de red o del cortafuegos del host de tu servidor principal para que permita el tráfico entrante del host del servidor réplica a través del puerto de Postgres del servidor principal.
Crea un usuario de replicación:
Docker
docker exec CONTAINER_NAME psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'"
Haz los cambios siguientes:
REPLICA_USER
: el nombre del usuario de la réplica.PASSWORD
: la contraseña del usuario de la réplica.CONTAINER_NAME
: el nombre que asignaste al contenedor de AlloyDB Omni cuando lo instalaste.
Podman
podman exec CONTAINER_NAME psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'"
Haz los cambios siguientes:
REPLICA_USER
: el nombre del usuario de la réplica.PASSWORD
: la contraseña del usuario de la réplica.CONTAINER_NAME
: el nombre que asignaste al contenedor de AlloyDB Omni cuando lo instalaste.
Añada las siguientes líneas al archivo
/DATA_DIR/pg_hba.conf
antes dehost all all all scram-sha-256
que ya esté en el archivo:host alloydbmetadata alloydbmetadata IP_RANGE trust host replication REPLICA_USER IP_RANGE scram-sha-256
Haz los cambios siguientes:
IP_RANGE
: el intervalo de IPs, en notación CIDR, de la subred en la que se encuentra tu máquina réplica. Por ejemplo,203.0.113.0/24
.DATA_DIR
: la ruta del sistema de archivos que quieres que use esta réplica para su directorio de datos.
Reinicia el servidor principal:
Docker
docker restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
Crear y configurar el servidor réplica
Para crear y configurar un servidor réplica de AlloyDB Omni, sigue estos pasos:
Asegúrate de que la réplica tenga conectividad de red con el servidor principal:
ping SOURCE_IP
Sustituye
SOURCE_IP
por la dirección IP de la instancia principal de AlloyDB Omni desde la que se va a replicar.Asegúrate de que la réplica pueda conectarse al servidor principal:
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;"
La salida debería ser similar a la siguiente:
systemid | timeline | xlogpos | dbname ---------------------+----------+-----------+-------- 7376500460465963036 | 1 | 0/454B670 | (1 row)
La réplica debe tener una ubicación de almacenamiento persistente en el disco:
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"
Haz los cambios siguientes:
SOURCE_PORT
: el puerto TCP de la instancia principal de AlloyDB Omni desde la que se va a replicar. Si no proporciona este valor, AlloyDB Omni aplicará el valor predeterminado5432
.SLOT_NAME
: la etiqueta del nombre de la ranura de replicación.
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"
Haz los cambios siguientes:
SOURCE_PORT
: el puerto TCP de la instancia principal de AlloyDB Omni desde la que se va a replicar. Si no proporciona este valor, AlloyDB Omni aplicará el valor predeterminado5432
.SLOT_NAME
: la etiqueta del nombre de la ranura de replicación.
Inicia la instancia de réplica:
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
Verificar el estado de la replicación en el servidor principal
Para comprobar que la replicación está configurada correctamente, ejecuta el siguiente comando en el host del servidor principal:
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"
La tabla de salida contiene una fila por cada réplica conectada a tu servidor de base de datos principal.
Una vez que hayas configurado la replicación, todas las inserciones, actualizaciones y eliminaciones de filas en tu servidor de base de datos principal se podrán leer en tu réplica en cuestión de segundos.