Pour augmenter le débit de lecture et la disponibilité, vous pouvez créer un serveur de réplication AlloyDB Omni pour un serveur AlloyDB Omni existant. Un serveur de réplication fournit un clone en lecture seule de votre serveur de base de données principal. Il met à jour en continu ses propres données pour refléter les modifications apportées aux données de votre serveur principal.
Les sections suivantes décrivent comment configurer votre serveur principal AlloyDB Omni pour la réplication, configurer le serveur de réplication 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
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 de l'hôte du serveur réplicateur via le port Postgres du serveur principal.
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 la réplication.PASSWORD
: mot de passe de l'utilisateur de la réplication.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 la réplication.PASSWORD
: mot de passe de l'utilisateur de la réplication.CONTAINER_NAME
: nom que vous avez attribué au conteneur AlloyDB Omni lors de son installation.
Ajoutez les lignes suivantes dans le fichier
/DATA_DIR/pg_hba.conf
avanthost 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 où se trouve votre machine de réplication. Exemple :203.0.113.0/24
.DATA_DIR
: chemin d'accès au système de fichiers que vous souhaitez que ce réplica utilise pour son répertoire de données.
Redémarrez votre serveur principal:
Docker
docker restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
Créer et configurer le serveur de réplication
Pour créer et configurer un serveur de réplication AlloyDB Omni, procédez comme suit:
Assurez-vous que le réplica dispose d'une connectivité réseau au serveur principal:
ping SOURCE_IP
Remplacez
SOURCE_IP
par l'adresse IP de l'instance AlloyDB Omni principale à partir de laquelle vous souhaitez effectuer la réplication.Assurez-vous que l'instance dupliqué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)
Le réplica doit disposer d'un emplacement de stockage persistant sur 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 AlloyDB Omni principale à partir de laquelle effectuer la réplication. Si vous ne fournissez pas cette valeur, AlloyDB Omni applique une valeur par défaut de5432
.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 AlloyDB Omni principale à partir de laquelle effectuer la réplication. Si vous ne fournissez pas cette valeur, AlloyDB Omni applique une valeur par défaut de5432
.SLOT_NAME
: libellé du nom de l'emplacement de réplication.
Démarrez votre instance de réplication:
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 dans votre serveur de base de données principal deviennent lisibles sur votre réplica en quelques secondes.