Nesta seção, descrevemos os procedimentos armazenados para instâncias do Cloud SQL.
Um procedimento armazenado é um código SQL que pode ser reutilizado
Para executar o procedimento armazenado, use o comando CALL e substitua a
seguinte variável.
- procedure_name é o nome do procedimento armazenado.
CALL procedure_name(parameters);
Para criar um procedimento armazenado, consulte Instruções CREATE PROCEDURE e CREATE FUNCTION.
O Cloud SQL não é compatível com a instrução CREATE FUNCTION. Para mais informações, consulte Recursos MySQL não compatíveis com o Cloud SQL.
Procedimentos armazenados de índices de réplica gerenciada
Use os procedimentos armazenados a seguir para criar, gerenciar e descartar índices de réplica gerenciados para suas réplicas. Quando as réplicas são recriadas, esses índices são restaurados automaticamente.
Cada chamada de procedimento armazenado executa uma instrução COMMIT que finaliza as
mudanças na sessão atual. Como resultado, as instruções de linguagem de manipulação de dados (DML)
executadas usando esses procedimentos armazenados não podem ser revertidas em uma
transação.
Para mais informações, consulte Índices de réplica gerenciados.
mysql.cloudsql_replica_idx_defn_create
Sintaxe
mysql.cloudsql_replica_idx_defn_create(IDXNAME, CREATESTMT)
Descrição
Cria uma definição para um índice secundário. Execute esse procedimento armazenado na instância principal, que replica a definição do índice para as réplicas.
O procedimento armazenado retorna um IDXID, um identificador inteiro exclusivo da
definição do índice secundário.
- IDXNAME: nome da definição do índice.
- CREATESTMT: instrução SQL para criar o índice. Precisa ser uma instrução DDL com prefixo de esquema (por exemplo,
schema_name.table_name).
mysql.cloudsql_replica_idx_defn_drop
Sintaxe
mysql.cloudsql_replica_idx_defn_drop(IDXID)
Descrição
Descarta uma definição de índice secundário. Execute esse procedimento armazenado na instância principal.
- IDXID: identificador inteiro exclusivo da definição do índice excluído.
mysql.cloudsql_replica_idx_group_add
Sintaxe
mysql.cloudsql_replica_idx_group_add(IDXID, GRPNAME)
Descrição
Adiciona uma definição de índice secundário a um grupo de réplicas. Execute esse procedimento armazenado na instância principal.
- IDXID: ID inteiro exclusivo da definição do índice.
- GRPNAME: nome do grupo de réplicas. GRPNAME é um nome personalizado que você seleciona. Se esse grupo de réplicas não existir, o Cloud SQL vai criar um novo.
mysql.cloudsql_replica_idx_group_drop
Sintaxe
mysql.cloudsql_replica_idx_group_drop(IDXID, GRPNAME)
Descrição
Descarta um índice secundário de um mapeamento de grupo de réplicas. Execute esse procedimento armazenado na instância principal.
- IDXID: ID inteiro exclusivo da definição do índice.
- GRPNAME: nome do grupo de réplicas.
mysql.cloudsql_replica_idx_show_status
Sintaxe
mysql.cloudsql_replica_idx_show_status()
Descrição
Mostra o status e o progresso das operações de criação ou remoção de índices em andamento em uma instância de réplica.
Para ver um relatório de progresso detalhado, ative o esquema de desempenho do MySQL na instância. Além disso, é preciso ativar os instrumentos de estágio e os consumidores executando os seguintes comandos SQL:
Ative os instrumentos de preparo:
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES' WHERE NAME LIKE 'stage/innodb/alter%';
Ative os consumidores de eventos de estágio:
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE 'events_stages_%';
Para mais informações, consulte o exemplo de monitoramento de ALTER TABLE usando o esquema de desempenho.
mysql.cloudsql_replica_idx_show_errors
Sintaxe
mysql.cloudsql_replica_idx_show_errors()
Descrição
Lista as tentativas de recriação de índice que falharam na última execução, mostrando mensagens de erro e contagens de novas tentativas em uma instância de réplica. Uma falha em um índice não bloqueia a execução dos índices subsequentes na fila.
mysql.cloudsql_replica_idx_show_all
Sintaxe
mysql.cloudsql_replica_idx_show_all()
Descrição
Lista o status, as contagens de novas tentativas, a duração da execução e as mensagens de erro de todos os registros de recriação de índice secundário de réplica na tabela de status de metadados. Execute esse procedimento armazenado em uma instância de réplica.
Procedimentos armazenados de índices de réplica autogerenciados
Os procedimentos armazenados a seguir permitem adicionar e remover índices secundários diretamente em uma réplica, mas esses índices não persistem se a réplica for recriada.
mysql.addSecondaryIdxOnReplica
Sintaxe
mysql.addSecondaryIdxOnReplica(IDXTYPE, IDXNAME, TABLENAME, IDXDEFINITION, IDXOPTION)
Descrição
Adiciona um índice secundário no banco de dados. Este procedimento armazenado é um wrapper para a instrução DDL CRIAR ÍNDICE.
- IDXTYPE: tipo de índice a ser criado. Por exemplo,
transmita
UNIQUEpara criar um índice exclusivo. - IDXNAME: nome do índice.
- TABLENAME: nome da tabela no formato
schema_name.table_name. - IDXDEFINITION: definição do índice. Não inclua parênteses externos.
- IDXOPTION: qualquer outra opção para transmitir
a criação do índice. Por exemplo, no MySQL 8.0, uma opção pode transmitir
INVISIBLEpara um índice invisível.
mysql.dropSecondaryIdxOnReplica
Sintaxe
mysql.dropSecondaryIdxOnReplica(IDXNAME, TABLENAME, IDXOPTION)
Descrição
Descarta um índice secundário no banco de dados. Este procedimento armazenado é um wrapper para a instrução DDL DESCARTAR ÍNDICE.
- IDXNAME: nome do índice.
- TABLENAME: nome da tabela no formato
schema_name.table_name. - IDXOPTION: qualquer outra opção a ser transmitida
ao descartar um índice. Por exemplo, uma opção de algoritmo como
INPLACE.
Procedimentos armazenados de replicação de servidor externo
É possível usar o procedimento armazenado a seguir durante a replicação do servidor externo.
mysql.skipReplicationError
Sintaxe
mysql.skipReplicationError()
Descrição
Ignora um erro de replicação encontrado durante a replicação do servidor externo e retoma a replicação.
Só é possível executar esse procedimento armazenado se você tiver encontrado um erro de replicação e as linhas de execução de E/S e SQL estiverem interrompidas.
Esse procedimento armazenado faz o seguinte:
Determina se a replicação baseada em GTID ou em posição de registro binário é usada.
Se a replicação paralela estiver sendo usada, o procedimento armazenado primeiro chamará
START_SLAVE_UNTIL_SQL_AFTER_MTS_GAPSouSTART_REPLICA UNTIL_SQL_AFTER_MTS_GAPSpara garantir que não haja lacunas nas transações aplicadas até a transação com falha. Em seguida, o procedimento define temporariamente a configuração de replicação como linha de execução única.Para replicação baseada em posição de registro binário, o procedimento define
SQL_SLAVE_SKIP_COUNTERouSQL_REPLICA_SKIP_COUNTER = 1para pular a transação atual.Para replicação baseada em GTID, o procedimento armazenado determina o GTID da transação com falha atual com base nas informações na variável de status
gtid_executed. Em seguida, o procedimento insere uma transação vazia para preencher esse GTID.Se a replicação paralela tiver sido desativada, o procedimento armazenado vai reativá-la.
O procedimento armazenado retoma a replicação.
A tabela mysql.skip_replication_error_history registra todas as invocações desse
procedimento armazenado.
A seguir
- Saiba como adicionar e descartar índices em réplicas de leitura do Cloud SQL.
- Saiba como criar e gerenciar índices de réplicas de leitura.