Mettre à niveau AlloyDB Omni vers la version 15.12.0 sur une VM

Sélectionnez une version de la documentation :

Cette page explique comment migrer de la version 15.5.2 ou antérieure vers la dernière version d'AlloyDB Omni.

À partir d'AlloyDB Omni 15.5.4, vous contrôlez AlloyDB Omni avec des outils de gestion de packages courants.

Si vous avez déjà installé AlloyDB Omni, suivez les instructions de cette page pour migrer vers la nouvelle installation à image unique.

Prérequis

Avant de pouvoir passer à la dernière version d'AlloyDB Omni, remplissez les conditions préalables suivantes, si vous ne l'avez pas déjà fait.

Mettre à niveau vers AlloyDB Omni 15.5.2

La dernière version d'AlloyDB Omni compatible avec l'interface de ligne de commande AlloyDB Omni est la version 15.5.2. Pour vérifier la version d'AlloyDB Omni, exécutez la commande suivante :

sudo alloydb version

La sortie ressemble à ceci :

AlloyDB Omni CLI version: 1.6
AlloyDB Omni database server version: 15.5.2

Si le résultat affiche une version de base de données antérieure à 15.5.2, exécutez la commande suivante pour effectuer la mise à niveau :

sudo alloydb database-server upgrade

Rassemblez des informations sur votre installation existante.

  1. Exécutez la commande suivante :

    cat /var/alloydb/config/dataplane.conf
  2. Dans le résultat de la commande cat, notez les valeurs des variables suivantes pour référence :

    • DATADIR_PATH, par exemple /var/alloydb/main
    • ENABLE_ALLOYDB_AI, par exemple FALSE
    • PGPORT, par exemple 5432
    • INSTANCE_TYPE, par exemple PRIMARY/READ_REPLICA

Supprimer les index ScaNN créés avec l'extension postgres_ann

L'extension postgres_ann a été renommée alloydb_scann. Si vous avez installé l'extension postgres_ann et créé des index ScaNN à l'aide de l'extension, vous devez supprimer tous les index ScaNN et désinstaller l'extension avant d'effectuer une mise à niveau.

Pour gérer tout impact sur votre base de données en raison du changement de nom de l'extension postgres_ann, procédez comme suit :

  1. Exécutez AlloyDB Omni et connectez-vous-y.
  2. Identifiez toutes les tables qui utilisent l'index ScaNN.

     \c DATABASE_NAME
     select schemaname, relname, indexrelname, indextype, indexconfig, indexsize, indexscan FROM pg_stat_ann_indexes;

    Remplacez DATABASE_NAME par le nom de la base de données sur laquelle vous souhaitez exécuter la requête.

  3. Enregistrez les définitions et les paramètres d'index en tant que LDD de vidage à l'aide d'un utilitaire tel que pg_dump pour recréer les index ScaNN ultérieurement.

    pg_dump -st TABLE_NAME DATABASE_NAME

    Remplacez les éléments suivants :

    • DATABASE_NAME : nom de la base de données.
    • TABLE_NAME : nom de la table
  4. Supprimez les index ScaNN créés à l'aide de l'index postgres_ann.

    DROP INDEX INDEX_NAME;

    Remplacez INDEX_NAME par le nom de la base de données sur laquelle vous souhaitez exécuter la requête.

  5. Vérifiez qu'aucune de vos bases de données n'inclut d'index ScaNN. Utilisez la requête SQL suivante pour vérifier la suppression : la requête SQL suivante doit renvoyer un ensemble de résultats vide.

     \c DATABASE_NAME
     select schemaname, relname, indexrelname, indextype, indexconfig, indexsize, indexscan FROM pg_stat_ann_indexes;
  6. Supprimez l'extension postgres_ann en procédant comme suit :

    1. Vérifiez que l'extension postgres_ann est installée dans votre base de données.
    select * from pg_extension;
    1. Supprimez l'extension postgres_ann.
    DROP EXTENSION postgres_ann CASCADE;
    1. Vérifiez que l'extension postgres_ann n'est plus installée dans votre base de données.
    select * from pg_extension;

Effectuer une mise à niveau sur place

  1. Arrêtez la base de données existante :

    sudo alloydb database-server stop
  2. Démarrez la nouvelle image unique AlloyDB Omni en montant votre répertoire de données existant :

    docker run --name CONTAINER_NAME \
        -e POSTGRES_PASSWORD=PASSWORD \
        -e PGDATA=/var/lib/postgresql/data \
        -v /var/alloydb/main/data:/var/lib/postgresql/data \
        -v /dev/shm:/dev/shm \
        -p PGPORT:5432 \
        --network=host \
        --ulimit=nice=-20:-20 \
        --ulimit=core=-1:-1 \
        --log-driver=journald \
        -d google/alloydbomni

    Remplacez les éléments suivants :

    • CONTAINER_NAME : nom à attribuer à ce nouveau conteneur AlloyDB Omni dans le registre de conteneurs de votre machine hôte (par exemple, my-omni).

    • PASSWORD : mot de passe attribué à l'utilisateur postgres du nouveau conteneur après sa création.

    • PGPORT : adresse IP du port sur lequel AlloyDB Omni s'exécute. Il s'agit de la valeur que vous avez notée à l'étape 2 de la section Recueillir des informations sur votre installation existante.

    Les arguments de docker run sont les mêmes que dans les versions antérieures d'AlloyDB Omni, mais vous pouvez les personnaliser davantage. Pour en savoir plus, consultez Personnaliser votre installation AlloyDB Omni.

  3. Si le type d'instance de votre base de données est PRIMARY, exécutez la commande suivante pour créer les utilisateurs suivants. Il s'agit de noms d'utilisateur qui ne sont pas utilisés pour le moment, mais qui sont réservés pour de futures extensions.

    for name in alloydbagent alloydbexport alloydbiamgroupuser alloydbiamuser alloydbimportexport alloydbobservability alloydbsqllogical alloydbsuperuser; do
      echo docker exec -it CONTAINER_NAME psql -h localhost -U postgres alloydbadmin \
        -c "CREATE ROLE ${name} NOLOGIN;" \
        -c "CREATE TABLE ${name}_table();" \
        -c "ALTER TABLE ${name}_table OWNER TO ${name};"
    done
  4. Si ENABLE_ALLOYDB_AI est défini sur TRUE, suivez les instructions de la section Installer AlloyDB Omni avec AlloyDB AI pour configurer AlloyDB AI.

  5. Connectez-vous à la base de données pour vérifier que les données n'ont pas changé :

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres
  6. Désinstallez la CLI AlloyDB Omni :

    sudo alloydb database-server uninstall

    La désinstallation de l'interface de ligne de commande AlloyDB Omni n'affecte pas les données stockées dans AlloyDB Omni.

Recréer des index ScaNN à l'aide de l'extension alloydb_scann

Une fois que vous avez mis à niveau AlloyDB Omni, l'extension alloydb_scann est également installée. Procédez comme suit pour recréer les index ScaNN que vous avez supprimés dans la section Supprimer les index ScaNN créés avec l'extension postgres_ann avant la mise à niveau.

  1. Créez l'extension alloydb_scann en procédant comme suit :

    1. Pour créer l'extension alloydb_scann, exécutez la requête suivante :
    create extension alloydb_scann cascade;
    1. Vérifiez que l'extension alloydb_scann a bien été créée.
    select * from pg_extension;
  2. Recréez l'index ScaNN pour votre table, puis restaurez les définitions d'index LDD pg_dump précédentes.

    1. Créez l'index ScaNN sur la table :
    CREATE INDEX INDEX_NAME ON TABLE_NAME
        USING scann (VECTOR_COLUMN DISTANCE)
        WITH (num_leaves = NUM_LEAVES_VALUE);

    Remplacez les éléments suivants :

    • INDEX_NAME : nom de l'index.
    • TABLE_NAME : nom de la table
    • VECTOR_COLUMN : nom de la colonne qui stocke les données vectorielles.
    • DISTANCE : fonction de distance à utiliser avec cet index.
    • NUM_LEAVES_VALUE : nombre de partitions à appliquer à l'index.
    1. Vérifiez que l'index a bien été créé.
    \d TABLE_NAME
    1. Recommandation : Sauvegardez les données de vos index. Nous vous recommandons de créer une sauvegarde de votre base de données et de vos index.