Cette section décrit les procédures stockées pour les instances Cloud SQL.
Une procédure stockée contient un code SQL que vous pouvez réutiliser.
.Pour exécuter une procédure stockée, utilisez la commande CALL et remplacez la variable suivante :
- procedure_name est le nom de la procédure stockée.
CALL procedure_name(parameters);
Pour créer une procédure stockée, consultez les instructions CREATE PROCEDURE et CREATE FUNCTION.
Cloud SQL n'est pas compatible avec l'instruction CREATE FUNCTION. Pour en savoir plus, consultez la page Fonctionnalités MySQL non compatibles avec Cloud SQL.
Procédures stockées des index d'instances répliquées gérées
Vous pouvez utiliser les procédures stockées suivantes pour créer, gérer et supprimer des index d'instances répliquées gérées pour vos instances répliquées. Lorsque vos instances dupliquées sont recréées, ces index sont restaurés automatiquement.
Chaque appel de procédure stockée exécute une instruction COMMIT qui finalise les modifications de votre session en cours. Par conséquent, les instructions de langage de manipulation de données (LMD) exécutées à l'aide de ces procédures stockées ne peuvent pas être annulées dans une transaction.
Pour en savoir plus, consultez Index d'instances répliquées gérées.
mysql.cloudsql_replica_idx_defn_create
Syntaxe
mysql.cloudsql_replica_idx_defn_create(IDXNAME, CREATESTMT)
Description
Crée une définition pour un index secondaire. Exécutez cette procédure stockée sur l'instance principale, qui réplique la définition de l'index sur les instances dupliquées.
La procédure stockée renvoie un IDXID, un identifiant entier unique de la définition de l'index secondaire.
- IDXNAME : nom de la définition d'index.
- CREATESTMT : instruction SQL permettant de créer l'index. Doit être une instruction LDD précédée d'un schéma (par exemple,
schema_name.table_name).
mysql.cloudsql_replica_idx_defn_drop
Syntaxe
mysql.cloudsql_replica_idx_defn_drop(IDXID)
Description
Supprime une définition d'index secondaire. Exécutez cette procédure stockée sur l'instance principale.
- IDXID : identifiant entier unique de la définition de l'index supprimé.
mysql.cloudsql_replica_idx_group_add
Syntaxe
mysql.cloudsql_replica_idx_group_add(IDXID, GRPNAME)
Description
Ajoute une définition d'index secondaire à un groupe d'instances répliquées. Exécutez cette procédure stockée sur l'instance principale.
- IDXID : ID entier unique de la définition d'index.
- GRPNAME : nom du groupe d'instances répliquées. GRPNAME est un nom personnalisé que vous sélectionnez. Si ce groupe d'instances répliquées n'existe pas, Cloud SQL en crée un.
mysql.cloudsql_replica_idx_group_drop
Syntaxe
mysql.cloudsql_replica_idx_group_drop(IDXID, GRPNAME)
Description
Supprime un index secondaire d'un mappage de groupe d'instances répliquées. Exécutez cette procédure stockée sur l'instance principale.
- IDXID : ID entier unique de la définition d'index.
- GRPNAME : nom du groupe d'instances répliquées.
mysql.cloudsql_replica_idx_show_status
Syntaxe
mysql.cloudsql_replica_idx_show_status()
Description
Affiche l'état et la progression des opérations de création ou de suppression d'index en cours sur une instance répliquée.
Pour afficher un rapport de progression détaillé, vous devez activer le schéma de performances MySQL sur l'instance. En outre, vous devez activer les instruments et les consommateurs d'étapes en exécutant les commandes SQL suivantes :
Activez les instruments de l'espace de création :
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES' WHERE NAME LIKE 'stage/innodb/alter%';
Activez les consommateurs d'événements de l'étape :
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE 'events_stages_%';
Pour en savoir plus, consultez l'exemple de surveillance ALTER TABLE à l'aide du schéma de performances.
mysql.cloudsql_replica_idx_show_errors
Syntaxe
mysql.cloudsql_replica_idx_show_errors()
Description
Répertorie les tentatives de recréation d'index qui ont échoué lors de leur dernière exécution, en affichant les messages d'erreur et le nombre de nouvelles tentatives sur une instance répliquée. Un échec sur un index ne bloque pas l'exécution des index suivants dans la file d'attente.
mysql.cloudsql_replica_idx_show_all
Syntaxe
mysql.cloudsql_replica_idx_show_all()
Description
Répertorie l'état, le nombre de tentatives, la durée d'exécution et les messages d'erreur pour tous les enregistrements de recréation d'index secondaires d'instance répliquée dans la table d'état des métadonnées. Exécutez cette procédure stockée sur une instance répliquée.
Procédures stockées des index d'instances répliquées autogérées
Les procédures stockées suivantes vous permettent d'ajouter et de supprimer des index secondaires directement sur une instance répliquée, mais ces index ne sont pas conservés si l'instance répliquée est recréée.
mysql.addSecondaryIdxOnReplica
Syntaxe
mysql.addSecondaryIdxOnReplica(IDXTYPE, IDXNAME, TABLENAME, IDXDEFINITION, IDXOPTION)
Description
Ajoute un index secondaire à la base de données. Cette procédure stockée est un wrapper pour l'instruction LDD CREATE INDEX.
- IDXTYPE : type d'index à créer. Par exemple, transmettez
UNIQUEpour créer un index unique. - IDXNAME : nom de l'index.
- TABLENAME : nom de la table au format
schema_name.table_name. - IDXDEFINITION : définition de l'index. N'incluez pas de parenthèses externes.
- IDXOPTION : options supplémentaires à transmettre lors de la création de l'index. Par exemple, dans MySQL 8.0, une option peut transmettre
INVISIBLEpour un index invisible.
mysql.dropSecondaryIdxOnReplica
Syntaxe
mysql.dropSecondaryIdxOnReplica(IDXNAME, TABLENAME, IDXOPTION)
Description
Supprime un index secondaire de la base de données. Cette procédure stockée est un wrapper pour l'instruction LDD DROP INDEX.
- IDXNAME : nom de l'index.
- TABLENAME : nom de la table au format
schema_name.table_name. - IDXOPTION : toutes les options supplémentaires à transmettre lors de la suppression d'un index. Par exemple, une option d'algorithme telle que
INPLACE.
Procédures stockées de réplication de serveur externe
Vous pouvez utiliser la procédure stockée suivante lors de la réplication d'un serveur externe.
mysql.skipReplicationError
Syntaxe
mysql.skipReplicationError()
Description
Ignore une erreur de réplication rencontrée lors de la réplication du serveur externe, puis reprend la réplication.
Vous ne pouvez exécuter cette procédure stockée que si vous avez rencontré une erreur de réplication et que les threads d'E/S et SQL sont arrêtés.
Cette procédure stockée effectue les opérations suivantes :
Détermine si la réplication basée sur GTID ou sur la position du journal binaire est utilisée.
Si la réplication parallèle est utilisée, la procédure stockée appelle d'abord
START_SLAVE_UNTIL_SQL_AFTER_MTS_GAPSouSTART_REPLICA UNTIL_SQL_AFTER_MTS_GAPSpour s'assurer qu'il n'y a pas d'écart dans les transactions appliquées jusqu'à la transaction ayant échoué. La procédure définit ensuite temporairement la configuration de réplication sur un seul thread.Pour la réplication basée sur la position du journal binaire, la procédure définit
SQL_SLAVE_SKIP_COUNTERouSQL_REPLICA_SKIP_COUNTER = 1pour ignorer la transaction en cours.Pour la réplication basée sur GTID, la procédure stockée détermine le GTID de la transaction ayant échoué en fonction des informations de la variable d'état
gtid_executed. La procédure insère ensuite une transaction vide pour renseigner ce GTID.Si la réplication parallèle était précédemment désactivée, la procédure stockée la réactive.
La procédure stockée reprend la réplication.
La table mysql.skip_replication_error_history consigne tous les appels de cette procédure stockée.
Étapes suivantes
- Apprenez à ajouter et supprimer des index sur des instances dupliquées avec accès en lecture Cloud SQL.
- Découvrez comment créer et gérer des index d'instances répliquées avec accès en lecture.