Esegui la migrazione dalla versione 15.5.2 e precedenti di AlloyDB Omni alla versione più recente

Questa pagina fornisce istruzioni per la migrazione dalla versione 15.5.2 e precedenti alla versione più recente di AlloyDB Omni.

A partire da AlloyDB Omni 15.5.4, puoi controllare AlloyDB Omni con gli strumenti di gestione dei pacchetti comuni.

Se hai già installato AlloyDB Omni, segui le istruzioni riportate in questa pagina per eseguire la migrazione alla nuova installazione con un'unica immagine.

Prerequisiti

Prima di poter iniziare l'upgrade alla versione più recente di AlloyDB Omni, completa i seguenti prerequisiti, se non l'hai già fatto.

Eseguire l'upgrade ad AlloyDB Omni 15.5.2

La versione più recente di AlloyDB Omni che supporta la CLI di AlloyDB Omni è 15.5.2. Per controllare la versione di AlloyDB Omni, esegui il seguente comando:

sudo alloydb version

L'output è simile al seguente:

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

Se l'output mostra una versione del database precedente alla 15.5.2, esegui il seguente comando per eseguire l'upgrade:

sudo alloydb database-server upgrade

Raccogliere informazioni sull'installazione esistente

  1. Esegui questo comando:

    cat /var/alloydb/config/dataplane.conf
  2. Dall'output del comando cat, prendi nota dei valori delle seguenti variabili per riferimento futuro:

    • DATADIR_PATH, ad esempio /var/alloydb/main
    • ENABLE_ALLOYDB_AI, ad esempio FALSE
    • PGPORT, ad esempio 5432
    • INSTANCE_TYPE, ad esempio PRIMARY/READ_REPLICA

Elimina gli indici ScaNN creati con l'estensione postgres_ann

L'estensione postgres_ann viene rinominata in alloydb_scann. Se hai installato l'estensione postgres_ann e hai creato indici ScaNN utilizzando l'estensione, devi eliminare tutti gli indici ScaNN e disinstallare l'estensione prima di eseguire un upgrade.

Per gestire eventuali ripercussioni sul database a causa della ridenominazione dell'estensione postgres_ann, svolgi i seguenti passaggi:

  1. Esegui e connettiti ad AlloyDB Omni.
  2. Identifica tutte le tabelle che utilizzano l'indice ScaNN.

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

    Sostituisci DATABASE_NAME con il nome del database in cui vuoi eseguire la query.

  3. Salva le definizioni e i parametri degli indici come dump DDL utilizzando un'utilità come pg_dump per ricreare in un secondo momento gli indici ScaNN.

    pg_dump -st TABLE_NAME DATABASE_NAME

    Sostituisci quanto segue:

    • DATABASE_NAME: il nome del database.
    • TABLE_NAME: il nome della tabella.
  4. Elimina gli indici ScaNN creati utilizzando l'indice postgres_ann.

    DROP INDEX INDEX_NAME;

    Sostituisci INDEX_NAME con il nome del database in cui vuoi eseguire la query.

  5. Verifica che nessuno dei tuoi database includa indici ScaNN. Utilizza la seguente query SQL per verificare l'eliminazione: il seguente codice SQL dovrebbe restituire un insieme di risultati vuoto.

     \c DATABASE_NAME
     select schemaname, relname, indexrelname, indextype, indexconfig, indexsize, indexscan FROM pg_stat_ann_indexes;
  6. Inserisci l'estensione postgres_ann seguendo questa procedura:

    1. Verifica che l'estensione postgres_ann sia installata nel database.
    select * from pg_extension;
    1. Rilascia l'estensione postgres_ann.
    DROP EXTENSION postgres_ann CASCADE;
    1. Verifica che l'estensione postgres_ann non sia più installata nel database.
    select * from pg_extension;

Eseguire un upgrade in loco

  1. Arresta il database esistente:

    sudo alloydb database-server stop
  2. Avvia il nuovo AlloyDB Omni con un'immagine singola, montando la directory di dati esistente:

    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

    Sostituisci quanto segue:

    • CONTAINER_NAME: il nome da assegnare a questo nuovo contenitore AlloyDB Omni nel registry dei contenitori della macchina host, ad esempio my-omni.

    • PASSWORD: la password assegnata all'utente postgres del nuovo contenitore dopo la sua creazione.

    • PGPORT: l'indirizzo IP della porta su cui viene eseguito AlloyDB Omni. Si tratta del valore che hai annotato nel passaggio 2 della sezione Raccogliere informazioni sull'installazione esistente.

    Gli argomenti di docker run sono quelli utilizzati nelle versioni precedenti di AlloyDB Omni, ma puoi personalizzarli ulteriormente. Per informazioni dettagliate, consulta Personalizzare l'installazione di AlloyDB Omni.

  3. Se il tipo di istanza del database è PRIMARY, esegui il seguente comando per creare gli utenti indicati di seguito. Si tratta di nomi utente non utilizzati al momento, ma riservati per estensioni future.

    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. Se ENABLE_ALLOYDB_AI è impostato su TRUE, segui le istruzioni riportate in Install AlloyDB Omni with AlloyDB AI per configurare AlloyDB AI.

  5. Connettiti al database per verificare che i dati non siano stati modificati:

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres
  6. Disinstalla l'interfaccia a riga di comando AlloyDB Omni:

    sudo alloydb database-server uninstall

    La disinstallazione della CLI di AlloyDB Omni non influisce sui dati archiviati in AlloyDB Omni.

Ricrea gli indici ScaNN utilizzando l'estensione alloydb_scann

Dopo l'upgrade di AlloyDB Omni, viene installata anche l'estensione alloydb_scann. Completa i seguenti passaggi per ricreare gli indici ScaNN che hai eliminato nella sezione Elimina gli indici ScaNN creati con l'estensione postgres_ann prima dell'upgrade.

  1. Crea l'estensione alloydb_scann seguendo questa procedura:

    1. Per creare l'estensione alloydb_scann, esegui la seguente query:
    create extension alloydb_scann cascade;
    1. Verifica che l'estensione alloydb_scann sia stata creata correttamente.
    select * from pg_extension;
  2. Ricrea l'indice ScaNN per la tabella e poi ripristina le definizioni di indici DDL pg_dump precedenti.

    1. Crea l'indice ScaNN nella tabella:
    CREATE INDEX INDEX_NAME ON TABLE_NAME
        USING scann (VECTOR_COLUMN DISTANCE)
        WITH (num_leaves = NUM_LEAVES_VALUE);

    Sostituisci quanto segue:

    • INDEX_NAME: il nome dell'indice.
    • TABLE_NAME: il nome della tabella.
    • VECTOR_COLUMN: il nome della colonna che memorizza i dati vettoriali.
    • DISTANCE: la funzione di distanza da utilizzare con questo indice.
    • NUM_LEAVES_VALUE: il numero di partizioni da applicare all'indice.
    1. Verifica che l'indice sia stato creato.
    \d TABLE_NAME
    1. (Consigliato) Esegui il backup dei dati degli indici. Come best practice, ti consigliamo di creare un backup del database e degli indici.