Cómo migrar de la versión 15.5.2 de AlloyDB Omni y versiones anteriores a la versión más reciente

En esta página, se proporcionan instrucciones para migrar de la versión 15.5.2 y versiones anteriores a la versión más reciente de AlloyDB Omni.

A partir de AlloyDB Omni 15.5.4, puedes controlar AlloyDB Omni con herramientas comunes de administración de paquetes.

Si tienes una instalación existente de AlloyDB Omni, sigue las instrucciones de esta página para migrar a la nueva instalación de una sola imagen.

Requisitos previos

Antes de comenzar a actualizar a la versión más reciente de AlloyDB Omni, completa los siguientes requisitos previos, si aún no lo hiciste.

Actualiza a AlloyDB Omni 15.5.2

La versión más reciente de AlloyDB Omni que admite la CLI de AlloyDB Omni es la 15.5.2. Para verificar la versión de AlloyDB Omni, ejecuta el siguiente comando:

sudo alloydb version

El resultado es similar al siguiente:

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

Si el resultado muestra una versión de base de datos anterior a la 15.5.2, ejecuta el siguiente comando para actualizar:

sudo alloydb database-server upgrade

Recopila información sobre tu instalación existente

  1. Ejecuta el siguiente comando:

    cat /var/alloydb/config/dataplane.conf
  2. En el resultado del comando cat, anota los valores de las siguientes variables para tu referencia:

    • DATADIR_PATH (por ejemplo, /var/alloydb/main)
    • ENABLE_ALLOYDB_AI (por ejemplo, FALSE)
    • PGPORT (por ejemplo, 5432)
    • INSTANCE_TYPE (por ejemplo, PRIMARY/READ_REPLICA)

Se descartaron los índices de ScaNN creados con la extensión postgres_ann.

Se cambió el nombre de la extensión postgres_ann por alloyd_scann. Si instalaste la extensión postgres_ann y creaste índices ScaNN con ella, debes descartar todos los índices ScaNN y desinstalar la extensión antes de realizar una actualización.

Para controlar cualquier impacto en tu base de datos debido al cambio de nombre de la extensión postgres_ann, completa los siguientes pasos:

  1. Ejecuta AlloyDB Omni y conéctate a él.
  2. Identifica todas las tablas que usan el índice ScaNN.

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

    Reemplaza DATABASE_NAME por el nombre de la base de datos en la que deseas ejecutar la consulta.

  3. Guarda las definiciones y los parámetros de índice como un volcado de DDL con una utilidad como pg_dump para volver a crear los índices ScaNN más adelante.

    pg_dump -st TABLE_NAME DATABASE_NAME

    Reemplaza lo siguiente:

    • DATABASE_NAME: Es el nombre de la base de datos.
    • TABLE_NAME: Es el nombre de la tabla.
  4. Elimina los índices ScaNN que se crearon con el índice postgres_ann.

    DROP INDEX INDEX_NAME;

    Reemplaza INDEX_NAME por el nombre de la base de datos en la que deseas ejecutar la consulta.

  5. Verifica que ninguna de tus bases de datos incluya índices ScaNN. Usa la siguiente consulta en SQL para verificar la eliminación: El siguiente SQL debe mostrar un conjunto de resultados vacío.

     \c DATABASE_NAME
     select schemaname, relname, indexrelname, indextype, indexconfig, indexsize, indexscan FROM pg_stat_ann_indexes;
  6. Sigue estos pasos para soltar la extensión postgres_ann:

    1. Verifica que la extensión postgres_ann esté instalada en tu base de datos.
    select * from pg_extension;
    1. Suelta la extensión postgres_ann.
    DROP EXTENSION postgres_ann CASCADE;
    1. Verifica que la extensión postgres_ann ya no esté instalada en tu base de datos.
    select * from pg_extension;

Realiza una actualización in situ

  1. Detén la base de datos existente:

    sudo alloydb database-server stop
  2. Inicia la nueva imagen única de AlloyDB Omni y activa el directorio de datos existente de antes:

    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:15.5.5

    Reemplaza lo siguiente:

    • CONTAINER_NAME: Es el nombre que se asignará a este nuevo contenedor de AlloyDB Omni en el registro de contenedores de la máquina anfitrión, por ejemplo, my-omni.

    • PASSWORD: Es la contraseña asignada al usuario postgres del contenedor nuevo después de su creación.

    • PGPORT: Es la dirección IP del puerto en el que se ejecuta AlloyDB Omni. Este es el valor que anotaste en el paso 2 de Recopila información sobre tu instalación existente.

    Los argumentos de docker run son los que se usan en versiones anteriores de AlloyDB Omni, pero puedes personalizarlos aún más. Consulta Cómo personalizar tu instalación de AlloyDB Omni para obtener más información.

  3. Si el tipo de instancia de tu base de datos es PRIMARY, ejecuta el siguiente comando para crear los siguientes usuarios. Estos son nombres de usuario que no se usan en este momento, pero que se reservan para extensiones futuras.

    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á configurado como TRUE, sigue las instrucciones que se indican en Cómo instalar AlloyDB Omni con AlloyDB AI para configurar AlloyDB AI.

  5. Conéctate a la base de datos para verificar que los datos no hayan cambiado:

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres
  6. Desinstala la CLI de AlloyDB Omni:

    sudo alloydb database-server uninstall

    La desinstalación de la CLI de AlloyDB Omni no afecta los datos almacenados en AlloyDB Omni.

Cómo volver a crear índices de ScaNN con la extensión alloydb_scann

Después de actualizar AlloyDB Omni, también se instala la extensión alloydb_scann. Completa los siguientes pasos para volver a crear los índices de ScaNN que descartaste en la sección Cómo descartar índices de ScaNN creados con la extensión postgres_ann antes de la actualización.

  1. Sigue estos pasos para crear la extensión alloydb_scann:

    1. Para crear la extensión alloydb_scann, ejecuta la siguiente consulta:
    create extension alloydb_scann cascade;
    1. Verifica que la extensión alloydb_scann se haya creado correctamente.
    select * from pg_extension;
  2. Vuelve a crear el índice ScaNN para tu tabla y, luego, restablece las definiciones de índices de DDL pg_dump anteriores.

    1. Crea el índice ScaNN en la tabla:
    CREATE INDEX INDEX_NAME ON TABLE_NAME
        USING scann (VECTOR_COLUMN DISTANCE)
        WITH (num_leaves = NUM_LEAVES_VALUE);

    Reemplaza lo siguiente:

    • INDEX_NAME: Es el nombre del índice.
    • TABLE_NAME: Es el nombre de la tabla.
    • VECTOR_COLUMN: Es el nombre de la columna que almacena datos vectoriales.
    • DISTANCE: Es la función de distancia que se usará con este índice.
    • NUM_LEAVES_VALUE: Es la cantidad de particiones que se aplicarán al índice.
    1. Verifica que se haya creado el índice.
    \d TABLE_NAME
    1. Opción recomendada: Crea una copia de seguridad de los datos de tus índices. Como práctica recomendada, te recomendamos que crees una copia de seguridad de tu base de datos y los índices.