Procedure memorizzate Cloud SQL

Questa sezione descrive le stored procedure per le istanze Cloud SQL.

Una stored procedure contiene codice SQL che puoi riutilizzare.

Per eseguire una stored procedure, utilizza il comando CALL e sostituisci la seguente variabile:

  • procedure_name è il nome della stored procedure.
CALL procedure_name(parameters);
Per saperne di più, consulta la pagina di riferimento dell'istruzione CALL.

Per creare una stored procedure, consulta Istruzioni CREATE PROCEDURE e CREATE FUNCTION. Cloud SQL non supporta l'istruzione CREATE FUNCTION. Per saperne di più, consulta Funzionalità MySQL non supportate per Cloud SQL.

Stored procedure per gli indici delle repliche gestite

Puoi utilizzare le seguenti stored procedure per creare, gestire ed eliminare gli indici delle repliche gestite per le tue repliche. Quando le repliche vengono ricreate, questi indici vengono ripristinati automaticamente.

Ogni chiamata alla stored procedure esegue un'istruzione COMMIT che finalizza le modifiche nella sessione corrente. Di conseguenza, non è possibile eseguire il rollback delle istruzioni DML (Data Manipulation Language) eseguite utilizzando queste stored procedure all'interno di una transazione.

Per saperne di più, consulta Indici di replica gestiti.

mysql.cloudsql_replica_idx_defn_create

Sintassi

mysql.cloudsql_replica_idx_defn_create(IDXNAME, CREATESTMT)

Descrizione

Crea una definizione per un indice secondario. Esegui questa stored procedure sull'istanza principale, che replica la definizione dell'indice nelle repliche.

La stored procedure restituisce un IDXID, un identificatore intero univoco della definizione dell'indice secondario.

  • IDXNAME: il nome della definizione dell'indice.
  • CREATESTMT: l'istruzione SQL per creare l'indice. Deve essere un'istruzione DDL con prefisso dello schema (ad esempio schema_name.table_name).

mysql.cloudsql_replica_idx_defn_drop

Sintassi

mysql.cloudsql_replica_idx_defn_drop(IDXID)

Descrizione

Elimina la definizione di un indice secondario. Esegui questa stored procedure sull'istanza principale.

  • IDXID: identificatore intero univoco della definizione dell'indice eliminato.

mysql.cloudsql_replica_idx_group_add

Sintassi

mysql.cloudsql_replica_idx_group_add(IDXID, GRPNAME)

Descrizione

Aggiunge una definizione di indice secondario a un gruppo di repliche. Esegui questa stored procedure sull'istanza principale.

  • IDXID: ID intero univoco della definizione dell'indice.
  • GRPNAME: il nome del gruppo di repliche. GRPNAME è un nome personalizzato che selezioni. Se il gruppo di repliche non esiste, Cloud SQL ne crea uno nuovo.

mysql.cloudsql_replica_idx_group_drop

Sintassi

mysql.cloudsql_replica_idx_group_drop(IDXID, GRPNAME)

Descrizione

Elimina un indice secondario da una mappatura del gruppo di repliche. Esegui questa stored procedure sull'istanza principale.

  • IDXID: ID intero univoco della definizione dell'indice.
  • GRPNAME: il nome del gruppo di repliche.

mysql.cloudsql_replica_idx_show_status

Sintassi

mysql.cloudsql_replica_idx_show_status()

Descrizione

Mostra lo stato e l'avanzamento delle operazioni di creazione o eliminazione degli indici in corso su un'istanza di replica.

Per visualizzare un report dettagliato sull'avanzamento, devi attivare lo schema delle prestazioni MySQL sull'istanza. Inoltre, devi attivare gli strumenti e i consumer della fase eseguendo i seguenti comandi SQL:

  1. Attiva gli strumenti di gestione temporanea:

    UPDATE performance_schema.setup_instruments
    SET ENABLED = 'YES'
    WHERE NAME LIKE 'stage/innodb/alter%';
  2. Abilita i consumer di eventi della fase:

    UPDATE performance_schema.setup_consumers
    SET ENABLED = 'YES'
    WHERE NAME LIKE 'events_stages_%';

Per ulteriori informazioni, consulta l'esempio di monitoraggio di ALTER TABLE utilizzando lo schema di prestazioni.

mysql.cloudsql_replica_idx_show_errors

Sintassi

mysql.cloudsql_replica_idx_show_errors()

Descrizione

Elenca i tentativi di ricreazione dell'indice che non sono andati a buon fine nell'ultima esecuzione, mostrando i messaggi di errore e i conteggi dei nuovi tentativi su un'istanza di replica. Un errore in un indice non blocca l'esecuzione degli indici successivi nella coda.

mysql.cloudsql_replica_idx_show_all

Sintassi

mysql.cloudsql_replica_idx_show_all()

Descrizione

Elenca lo stato, i conteggi dei nuovi tentativi, la durata dell'esecuzione e i messaggi di errore per tutti i record di ricreazione degli indici secondari della replica nella tabella dello stato dei metadati. Esegui questa stored procedure su un'istanza di replica.

Stored procedure degli indici delle repliche autogestite

Le seguenti stored procedure consentono di aggiungere ed eliminare gli indici secondari direttamente su una replica, ma questi indici non vengono mantenuti se la replica viene ricreata.

mysql.addSecondaryIdxOnReplica

Sintassi

mysql.addSecondaryIdxOnReplica(IDXTYPE, IDXNAME, TABLENAME, IDXDEFINITION, IDXOPTION)

Descrizione

Aggiunge un indice secondario al database. Questa stored procedure è un wrapper per l'istruzione DDL CREATE INDEX.

  • IDXTYPE: il tipo di indice da creare. Ad esempio, passa UNIQUE per creare un indice univoco.
  • IDXNAME: il nome dell'indice.
  • TABLENAME: nome della tabella nel formato schema_name.table_name.
  • IDXDEFINITION: definizione dell'indice. Non includere parentesi esterne.
  • IDXOPTION: eventuali opzioni aggiuntive da passare alla creazione dell'indice. Ad esempio, in MySQL 8.0, un'opzione potrebbe passare INVISIBLE per un indice invisibile.

mysql.dropSecondaryIdxOnReplica

Sintassi

mysql.dropSecondaryIdxOnReplica(IDXNAME, TABLENAME, IDXOPTION)

Descrizione

Elimina un indice secondario nel database. Questa stored procedure è un wrapper per l'istruzione DDL DROP INDEX.

  • IDXNAME: il nome dell'indice.
  • TABLENAME: nome della tabella nel formato schema_name.table_name.
  • IDXOPTION: eventuali opzioni aggiuntive da passare quando si elimina un indice. Ad esempio, un'opzione di algoritmo come INPLACE.

Stored procedure di replica del server esterno

Puoi utilizzare la seguente stored procedure durante la replica del server esterno.

mysql.skipReplicationError

Sintassi

mysql.skipReplicationError()

Descrizione

Salta un errore di replica riscontrato durante la replica del server esterno, quindi riprende la replica.

Puoi eseguire questa stored procedure solo se hai riscontrato un errore di replica e i thread I/O e SQL sono stati arrestati.

Questa stored procedure esegue le seguenti operazioni:

  1. Determina se viene utilizzata la replica basata su GTID o sulla posizione del log binario.

  2. Se viene utilizzata la replica parallela, la stored procedure chiama prima START_SLAVE_UNTIL_SQL_AFTER_MTS_GAPS o START_REPLICA UNTIL_SQL_AFTER_MTS_GAPS per assicurarsi che non ci siano lacune nelle transazioni applicate fino alla transazione non riuscita. La procedura imposta quindi temporaneamente la configurazione della replica su single-threaded.

  3. Per la replica basata sulla posizione del log binario, la procedura imposta SQL_SLAVE_SKIP_COUNTER o SQL_REPLICA_SKIP_COUNTER = 1 per saltare la transazione corrente.

  4. Per la replica basata su GTID, la stored procedure determina il GTID della transazione non riuscita corrente in base alle informazioni contenute nella variabile di stato gtid_executed. La procedura inserisce quindi una transazione vuota per eseguire il backfill del GTID.

  5. Se la replica parallela era stata disattivata in precedenza, la stored procedure la riattiva.

  6. La stored procedure riprende la replica.

La tabella mysql.skip_replication_error_history registra tutte le chiamate di questa stored procedure.

Passaggi successivi