Para aumentar la capacidad de procesamiento de lectura y la disponibilidad, puedes crear un servidor de réplica de AlloyDB Omni para un servidor de AlloyDB Omni existente. Un servidor de réplica proporciona una clon de solo lectura de tu servidor de base de datos principal. Actualiza sus propios datos de forma continua para reflejar los cambios en los datos de tu servidor principal.
En las siguientes secciones, se proporcionan pasos para configurar el servidor principal de AlloyDB Omni para la replicación, configurar el servidor de réplicas y verificar el estado de la replicación en el servidor principal.
Para obtener más información, consulta Cómo instalar AlloyDB Omni en Kubernetes.
Configura tu servidor principal para la replicación
Actualiza la configuración de red o firewall del host del servidor principal para que permita el tráfico entrante del host del servidor de 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'"
Reemplaza lo siguiente:
REPLICA_USER
: Es el nombre del usuario de la réplica.PASSWORD
: La contraseña del usuario de la réplica.CONTAINER_NAME
: Es 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'"
Reemplaza lo siguiente:
REPLICA_USER
: Es el nombre del usuario de la réplica.PASSWORD
: La contraseña del usuario de la réplica.CONTAINER_NAME
: Es el nombre que asignaste al contenedor de AlloyDB Omni cuando lo instalaste.
Agrega las siguientes líneas en el archivo
/DATA_DIR/pg_hba.conf
antes dehost all all all scram-sha-256
que existe en el archivo:host alloydbmetadata alloydbmetadata IP_RANGE trust host replication REPLICA_USER IP_RANGE scram-sha-256
Reemplaza lo siguiente:
IP_RANGE
: Es el rango de IP, en notación CIDR, de la subred en la que se encuentra tu máquina de réplica. Por ejemplo,203.0.113.0/24
DATA_DIR
: Es la ruta de acceso del sistema de archivos que deseas que esta réplica use para su directorio de datos.
Reinicia el servidor principal:
Docker
docker restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
Crea y configura el servidor de réplica
Para crear y configurar un servidor de réplicas de AlloyDB Omni, completa los siguientes pasos:
Asegúrate de que la réplica tenga conectividad de red con el servidor principal:
ping SOURCE_IP
Reemplaza
SOURCE_IP
por la dirección IP de la instancia principal de AlloyDB Omni desde la que se 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;"
El resultado debería ser similar al 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"
Reemplaza lo siguiente:
SOURCE_PORT
: Es el puerto TCP de la instancia principal de AlloyDB Omni desde la que se replicará. Si no proporcionas este valor, AlloyDB Omni aplica un valor predeterminado de5432
.SLOT_NAME
: Es la etiqueta del nombre del espacio de réplica.
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"
Reemplaza lo siguiente:
SOURCE_PORT
: Es el puerto TCP de la instancia principal de AlloyDB Omni desde la que se replicará. Si no proporcionas este valor, AlloyDB Omni aplica un valor predeterminado de5432
.SLOT_NAME
: Es la etiqueta del nombre del espacio de réplica.
Inicia tu 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
Verifica el estado de la replicación en el servidor principal
Para verificar 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 resultados contiene una fila para cada réplica conectada a tu servidor de base de datos primario.
Después de configurar la replicación, todas las inserciones, actualizaciones y eliminaciones de filas en el servidor de base de datos principal se pueden leer en la réplica en cuestión de segundos.