Crea una réplica de solo lectura

Selecciona una versión de la documentación:

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 un clon de solo lectura de tu servidor de base de datos principal. Actualiza continuamente sus propios datos para reflejar los cambios en los datos de tu servidor principal.

En las siguientes secciones, se proporcionan los pasos para configurar tu servidor principal de AlloyDB Omni para la replicación, configurar el servidor de réplica y verificar el estado de la replicación en el servidor principal.

Antes de comenzar

Antes de continuar, instala y configura AlloyDB Omni con el paquete RPM. Para obtener más información, consulta Instala AlloyDB Omni con RPM.

Configura tu servidor principal para la replicación

  1. Actualiza la configuración de red o firewall del host de tu servidor principal para que permita el tráfico de entrada desde el host del servidor de réplica a través del puerto Postgres del servidor principal.

  2. Crea un usuario de replicación:

    psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD';
    grant pg_read_all_settings to REPLICA_USER;"
  3. Agrega las siguientes líneas en el archivo /DATA_DIR/pg_hba.conf del servidor principal antes de host 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 al directorio de datos del servidor principal.
  4. Reinicia el servidor principal:

    sudo systemctl restart alloydbomni18

Crea y configura el servidor de réplica

Para crear y configurar un servidor de réplica de AlloyDB Omni, completa los siguientes pasos:

  1. 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á.

  2. Asegúrate de que la réplica pueda conectarse al servidor principal:

    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)
    
  3. La réplica debe tener una ubicación de almacenamiento persistente en el disco:

    sudo -u postgres pg_basebackup \
      --pgdata=DATA_DIR \
      --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 de 5432.
    • SLOT_NAME: Es la etiqueta para el nombre de la ranura de replicación.
    • DATA_DIR: Es la ruta de acceso al directorio de datos del servidor de réplica.
  4. Inicia tu instancia de réplica:

    sudo systemctl start alloydbomni18

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:

psql -h localhost -U postgres -c "select * from pg_stat_replication"

La tabla de salida contiene una fila para cada réplica conectada a tu servidor de base de datos principal.

Después de configurar 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.

Escala las cargas de trabajo de lectura con grupos de lectura

Para escalar tus requisitos de informes y de solo lectura, puedes aprovisionar varias réplicas de transmisión asíncrona para formar un grupo de lectura. Puedes acceder al grupo de lectura conectándote directamente a las direcciones IP de tus nodos de réplica.

Antes de comenzar

Asegúrate de haber creado el REPLICA_USER con privilegios REPLICATION en el servidor principal. También debes asegurarte de que el archivo pg_hba.conf del servidor principal esté configurado para permitir conexiones de replicación desde las direcciones IP de tus nodos de réplica.

Aprovisiona varias réplicas de solo lectura

Para crear varias réplicas, repite estos pasos para cada nodo de réplica que desees en el grupo.

En cada nodo de réplica, ejecuta el comando pg_basebackup y asegúrate de proporcionar un nombre de ranura de replicación único para cada nodo:

  sudo -u postgres pg_basebackup \
   --pgdata=DATA_DIR \
   --checkpoint=fast \
   --host="SOURCE_IP" \
   --port="SOURCE_PORT" \
   --username=REPLICA_USER \
   --create-slot \
   --write-recovery-conf \
   --slot="UNIQUE_SLOT_NAME_PER_NODE"
   ```
Once the backup is complete, start the database service on each replica:
  ```posix-terminal
  sudo systemctl start alloydbomni18