Créer une instance dupliquée en lecture seule

Sélectionnez une version de la documentation :

Pour augmenter le débit en lecture et la disponibilité, vous pouvez créer un serveur répliqué AlloyDB Omni pour un serveur AlloyDB Omni existant. Un serveur répliqué fournit un clone en lecture seule de votre serveur de base de données principal. Il met à jour en permanence ses propres données pour refléter les modifications apportées aux données de votre serveur principal.

Les sections suivantes décrivent les étapes à suivre pour configurer votre serveur principal AlloyDB Omni pour la réplication, configurer le serveur répliqué et vérifier l'état de la réplication sur le serveur principal.

Pour en savoir plus, consultez Installer AlloyDB Omni sur Kubernetes.

Configurer votre serveur principal pour la réplication

  1. Mettez à jour les paramètres réseau ou de pare-feu de l'hôte de votre serveur principal afin qu'il autorise le trafic entrant depuis l'hôte du serveur répliqué via le port Postgres du serveur principal.

  2. Créez un utilisateur de réplication :

    Docker

    docker exec CONTAINER_NAME psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'"

    Remplacez les éléments suivants :

    • REPLICA_USER : nom de l'utilisateur de l'instance répliquée.
    • PASSWORD : mot de passe de l'utilisateur de l'instance répliquée.
    • CONTAINER_NAME : nom que vous avez attribué au conteneur AlloyDB Omni lors de son installation.

    Podman

    podman exec CONTAINER_NAME psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'"

    Remplacez les éléments suivants :

    • REPLICA_USER : nom de l'utilisateur de l'instance répliquée.
    • PASSWORD : mot de passe de l'utilisateur de l'instance répliquée.
    • CONTAINER_NAME : nom que vous avez attribué au conteneur AlloyDB Omni lors de son installation.
  3. Ajoutez les lignes suivantes dans le fichier /DATA_DIR/pg_hba.conf du serveur principal avant host all all all scram-sha-256 qui existe dans le fichier :

    host alloydbmetadata    alloydbmetadata   IP_RANGE trust
    host replication        REPLICA_USER    IP_RANGE scram-sha-256
    

    Remplacez les éléments suivants :

    • IP_RANGE : plage d'adresses IP, au format CIDR, du sous-réseau dans lequel se trouve votre machine répliquée. Exemple : 203.0.113.0/24.
    • DATA_DIR : chemin d'accès au répertoire de données du serveur principal.
  4. Redémarrez votre serveur principal :

    Docker

    docker restart CONTAINER_NAME

    Podman

    podman restart CONTAINER_NAME

Créer et configurer le serveur répliqué

Pour créer et configurer un serveur réplica AlloyDB Omni, procédez comme suit :

  1. Assurez-vous que l'instance répliquée dispose d'une connectivité réseau au serveur principal :

    ping SOURCE_IP

    Remplacez SOURCE_IP par l'adresse IP de l'instance principale AlloyDB Omni à partir de laquelle effectuer la réplication.

  2. Assurez-vous que l'instance répliquée peut se connecter au serveur 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;"

    Le résultat doit ressembler à ce qui suit :

           systemid       | timeline |  xlogpos  | dbname
     ---------------------+----------+-----------+--------
      7376500460465963036 |        1 | 0/454B670 |
      (1 row)
    
  3. La réplique doit disposer d'un emplacement de stockage persistant sur le disque :

    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"

    Remplacez les éléments suivants :

    • SOURCE_PORT : port TCP de l'instance principale AlloyDB Omni à partir de laquelle effectuer la réplication. Si vous ne fournissez pas cette valeur, AlloyDB Omni applique la valeur par défaut 5432.
    • SLOT_NAME : libellé du nom de l'emplacement de réplication.

    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"

    Remplacez les éléments suivants :

    • SOURCE_PORT : port TCP de l'instance principale AlloyDB Omni à partir de laquelle effectuer la réplication. Si vous ne fournissez pas cette valeur, AlloyDB Omni applique la valeur par défaut 5432.
    • SLOT_NAME : libellé du nom de l'emplacement de réplication.
  4. Démarrez votre instance répliquée :

    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

Vérifier l'état de la réplication sur le serveur principal

Pour vérifier que la réplication est correctement configurée, exécutez la commande suivante sur l'hôte du serveur 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"

Le tableau de sortie contient une ligne pour chaque réplica connecté à votre serveur de base de données principal.

Une fois la réplication configurée, toutes les insertions, mises à jour et suppressions de lignes sur votre serveur de base de données principal deviennent lisibles sur votre instance répliquée en quelques secondes.

Étapes suivantes