Requisitos

Un sistema de base de datos de alta disponibilidad requiere una configuración compatible con alta disponibilidad. Dado que la función de alta disponibilidad del sistema de base de datos utiliza la replicación de grupo MySQL, cada tabla debe tener una clave primaria. Si intenta crear una tabla sin una clave primaria en un sistema en una base de datos de alta disponible, se producirá un fallo.

Nota

Si utiliza la consola para activar la alta disponibilidad de un sistema de base de datos, también debe activar la expansión automática del almacenamiento. Este requisito no se aplica en la CLI o la API de REST.

Todas las configuraciones predeterminadas que son compatibles con alta disponibilidad tienen el sufijo HA en el nombre de la configuración. Si desea crear una configuración personalizada que soporte la alta disponibilidad, debe utilizar el método Copiar configuración para copiar desde una configuración existente que soporte la alta disponibilidad. Consulte Copying a Configuration.

Si está migrando datos a HeatWave y no ha definido claves primarias en las tablas, debe agregarlas. Compruebe en las tablas las claves primarias y agregue claves a las tablas que no las tengan:

  1. Comprobación de las tablas de claves primarias mediante un cliente de línea de comandos
  2. Agregue claves primarias mediante cualquiera de los siguientes métodos:
    • Uso de la columna invisible: consulte Adición manual de claves primarias mediante un cliente de línea de comandos.
      Nota

      El uso de columnas invisibles para agregar claves primarias es un método de bajo impacto para actualizar los datos existentes y utilizarlos con un sistema de base de datos de alta disponibilidad. Es transparente para las aplicaciones, la nueva columna permanece oculta en las consultas SELECT, lo que permite que las aplicaciones continúen trabajando como antes.
    • Uso de la utilidad de volcado de MySQL Shell: consulte create_invisible_pks en Utilidad de volcado de MySQL Shell.
    • Uso de la utilidad de carga de MySQL Shell: consulte createInvisiblePKs en Utilidad de carga de MySQL Shell.
      Nota

      Para utilizar la utilidad de carga y volcado del shell MySQL, utilice la versión 8.0.30 del shell MySQL o superior.
    • Uso de la variable sql_generate_invisible_primary_key: defina la variable en ON para agregar claves primarias a las nuevas tablas que cree. La definición de la variable en ON no agrega claves primarias a tablas ya existentes. Consulte Generación de claves primarias invisibles.

Comprobación de las tablas de claves primarias mediante un cliente de línea de comandos

Utilice un cliente de línea de comandos como el cliente MySQL o el shell MySQL para comprobar en las tablas las claves primarias y mostrar las que no tienen claves primarias. Las claves primarias son un requisito para la replicación de grupo que utiliza la alta disponibilidad.

  1. Ejecute la siguiente sentencia en el banco de datos para generar una lista de tablas que no tengan claves primarias:
    SELECT t.table_schema, t.table_name
    FROM information_schema.tables t
      LEFT JOIN (SELECT table_schema, table_name 
                 FROM information_schema.statistics
                 WHERE index_name = 'PRIMARY' 
                 GROUP BY table_schema, table_name, index_name
                 ) pks 
      ON t.table_schema = pks.table_schema AND t.table_name = pks.table_name 
    WHERE pks.table_name IS NULL
      AND t.table_type = 'BASE TABLE' 
      AND t.table_schema NOT IN ('mysql', 'sys', 'performance_schema', 'information_schema');

Adición manual de claves primarias mediante un cliente de línea de comandos

Utilice un cliente de línea de comandos como MySQL Client o MySQL Shell para agregar claves primarias a columnas invisibles.

Para esta tarea, se necesita lo siguiente:
  • MySQL versión 8.0.23 o posterior. En la versión 8.0.23 se han incluido columnas invisibles.
Realice lo siguiente para agregar una clave primaria a una columna invisible:
  1. Ejecute un comando similar al siguiente en la tabla a la que desea agregar la columna invisible y la clave primaria:
    ALTER TABLE <Table1> ADD <my_row_id> BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY INVISIBLE FIRST;

    El comando modifica la tabla, <Table1>, con una columna, test agregando una columna, <my_row_id>, que es invisible y contiene la clave primaria de la tabla.

Temas relacionados