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 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:
Attiva gli strumenti di gestione temporanea:
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES' WHERE NAME LIKE 'stage/innodb/alter%';
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
UNIQUEper 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
INVISIBLEper 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:
Determina se viene utilizzata la replica basata su GTID o sulla posizione del log binario.
Se viene utilizzata la replica parallela, la stored procedure chiama prima
START_SLAVE_UNTIL_SQL_AFTER_MTS_GAPSoSTART_REPLICA UNTIL_SQL_AFTER_MTS_GAPSper 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.Per la replica basata sulla posizione del log binario, la procedura imposta
SQL_SLAVE_SKIP_COUNTERoSQL_REPLICA_SKIP_COUNTER = 1per saltare la transazione corrente.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.Se la replica parallela era stata disattivata in precedenza, la stored procedure la riattiva.
La stored procedure riprende la replica.
La tabella mysql.skip_replication_error_history registra tutte le chiamate di questa stored procedure.
Passaggi successivi
- Scopri come aggiungere ed eliminare indici nelle repliche di lettura di Cloud SQL.
- Scopri come creare e gestire gli indici delle repliche di lettura.