Pré-requisitos

A alta disponibilidade usa o MySQL Group Replication, que requer que cada tabela tenha uma chave primária definida. Se você tentar criar uma tabela sem uma chave primária em um sistema de banco de dados de alta disponibilidade, ela falhará.

Se você estiver migrando dados para HeatWave e não tiver chaves primárias definidas em suas tabelas, deverá adicioná-las. Verifique as tabelas de chaves primárias e adicione chaves às tabelas que não as tenham:

  1. Verificando Tabelas para Chaves Primárias Usando um Cliente de Linha de Comando
  2. Adicione chaves primárias usando um dos seguintes métodos:
    • Usando coluna invisível: Consulte Adição Manual de Chaves Primárias com um Cliente de Linha de Comando.
      Observação

      O uso de colunas invisíveis para adicionar chaves primárias é uma maneira de baixo impacto de atualizar os dados existentes para o uso com um sistema de banco de dados de alta disponibilidade. Ele é transparente para seus aplicativos, a nova coluna permanece oculta das consultas SELECT, permitindo que seus aplicativos continuem funcionando como anteriormente.
    • Usando o utilitário de dump do MySQL Shell: Consulte create_invisible_pks no Utilitário de Dump do MySQL Shell.
    • Usando o utilitário de carregamento do MySQL Shell: Consulte createInvisiblePKs no Utilitário de Carga do MySQL Shell.
      Observação

      Para usar o utilitário de dump e carga do Shell MySQL, use o Shell MySQL versão 8.0.30 ou mais recente.
    • Usando a variável sql_generate_invisible_primary_key: Defina a variável como ON para adicionar chaves primárias a novas tabelas que você cria. A definição da variável como ON não adiciona chaves primárias a tabelas já existentes. Consulte Gerando Chaves Primárias Invisíveis.

Verificando Tabelas para Chaves Primárias Usando um Cliente de Linha de Comando

Use um cliente de linha de comando, como MySQL Client ou MySQL Shell, para verificar se há chaves primárias nas suas tabelas e listar as que não têm chaves primárias. As chaves primárias são um pré-requisito para a replicação do grupo usada pela alta disponibilidade.

  1. Execute a instrução a seguir no banco de dados para gerar uma lista de tabelas que não têm chaves primárias:
    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');

Adicionando manualmente chaves primárias usando um cliente de linha de comando

Use um cliente de linha de comando, como MySQL Client ou MySQL Shell, para adicionar chaves primárias a colunas invisíveis.

Esta tarefa requer o seguinte:
  • MySQL versão 8.0.23 ou posterior. As colunas invisíveis foram introduzidas na versão 8.0.23.
Siga este procedimento para adicionar uma chave primária a uma coluna invisível:
  1. Execute um comando semelhante ao seguinte na tabela à qual deseja adicionar a coluna invisível e a chave primária:
    ALTER TABLE <Table1> ADD <my_row_id> BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY INVISIBLE FIRST;

    O comando altera a tabela, <Table1>, com uma coluna, test adicionando uma coluna, <my_row_id>, que é invisível e contém a chave primária da tabela.

Tópicos Relacionados