En esta sección, se describen los procedimientos almacenados para las instancias de Cloud SQL.
Un procedimiento almacenado contiene un código SQL que puedes volver a usar.
Para ejecutar un procedimiento almacenado, usa el comando CALL y reemplaza la siguiente variable:
- procedure_name es el nombre del procedimiento almacenado.
CALL procedure_name(parameters);
Para crear un procedimiento almacenado, consulta CREATE PROCEDURE y CREATE FUNCTION Functions.
Cloud SQL no es compatible con la instrucción CREATE FUNCTION. Si deseas obtener más información, consulta Funciones de MySQL no compatibles con Cloud SQL.
Procedimientos almacenados de índices de réplicas administradas
Puedes usar los siguientes procedimientos almacenados para crear, administrar y descartar índices de réplicas administradas para tus réplicas. Cuando se vuelven a crear las réplicas, estos índices se restablecen automáticamente.
Cada llamada de procedimiento almacenado ejecuta una sentencia COMMIT que finaliza los
cambios en tu sesión actual. Como resultado, las sentencias de lenguaje de manipulación de datos (DML)
ejecutadas con estos procedimientos almacenados no se pueden revertir dentro de una
transacción.
Para obtener más información, consulta Índices de réplica administrados.
mysql.cloudsql_replica_idx_defn_create
Sintaxis
mysql.cloudsql_replica_idx_defn_create(IDXNAME, CREATESTMT)
Descripción
Crea una definición para un índice secundario. Ejecuta este procedimiento almacenado en la instancia principal, que replica la definición del índice en las réplicas.
El procedimiento almacenado devuelve un IDXID, un identificador de número entero único de
la definición del índice secundario.
- IDXNAME: Es el nombre de la definición del índice.
- CREATESTMT: Es la instrucción de SQL para crear el índice. Debe ser una declaración de DDL con prefijo de esquema (por ejemplo,
schema_name.table_name).
mysql.cloudsql_replica_idx_defn_drop
Sintaxis
mysql.cloudsql_replica_idx_defn_drop(IDXID)
Descripción
Descarta una definición de índice secundario. Ejecuta este procedimiento almacenado en la instancia principal.
- IDXID: Es el identificador único de número entero de la definición del índice borrado.
mysql.cloudsql_replica_idx_group_add
Sintaxis
mysql.cloudsql_replica_idx_group_add(IDXID, GRPNAME)
Descripción
Agrega una definición de índice secundario a un grupo de réplicas. Ejecuta este procedimiento almacenado en la instancia principal.
- IDXID: Es el ID de número entero único de la definición del índice.
- GRPNAME: Es el nombre del grupo de réplicas. GRPNAME es un nombre personalizado que seleccionas. Si ese grupo de réplicas no existe, Cloud SQL crea uno nuevo.
mysql.cloudsql_replica_idx_group_drop
Sintaxis
mysql.cloudsql_replica_idx_group_drop(IDXID, GRPNAME)
Descripción
Descarta un índice secundario de una asignación de grupo de réplicas. Ejecuta este procedimiento almacenado en la instancia principal.
- IDXID: Es el ID de número entero único de la definición del índice.
- GRPNAME: Es el nombre del grupo de réplicas.
mysql.cloudsql_replica_idx_show_status
Sintaxis
mysql.cloudsql_replica_idx_show_status()
Descripción
Muestra el estado y el progreso de las operaciones de creación o eliminación de índices en curso en una instancia de réplica.
Para ver un informe de progreso detallado, debes habilitar el esquema de rendimiento de MySQL en la instancia. Además, debes habilitar los instrumentos y consumidores de la etapa de ejecución con los siguientes comandos de SQL:
Habilita los instrumentos de etapa:
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES' WHERE NAME LIKE 'stage/innodb/alter%';
Habilita los consumidores de eventos de etapa:
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE 'events_stages_%';
Para obtener más información, consulta el ejemplo de supervisión de ALTER TABLE con el esquema de rendimiento.
mysql.cloudsql_replica_idx_show_errors
Sintaxis
mysql.cloudsql_replica_idx_show_errors()
Descripción
Enumera los intentos de recreación de índices que fallaron en su última ejecución, con mensajes de error y recuentos de reintentos en una instancia de réplica. Una falla en un índice no bloquea la ejecución de los índices posteriores en la cola.
mysql.cloudsql_replica_idx_show_all
Sintaxis
mysql.cloudsql_replica_idx_show_all()
Descripción
Enumera el estado, los recuentos de reintentos, la duración de la ejecución y los mensajes de error de todos los registros de recreación de índices secundarios de réplica en la tabla de estado de metadatos. Ejecuta este procedimiento almacenado en una instancia de réplica.
Procedimientos almacenados de índices de réplicas autoadministradas
Los siguientes procedimientos almacenados te permiten agregar y quitar índices secundarios directamente en una réplica, pero estos índices no se conservan si se vuelve a crear la réplica.
mysql.addSecondaryIdxOnReplica
Sintaxis
mysql.addSecondaryIdxOnReplica(IDXTYPE, IDXNAME, TABLENAME, IDXDEFINITION, IDXOPTION)
Descripción
Agrega un índice secundario a la base de datos. Este procedimiento almacenado es un wrapper para la declaración DDL CREATE INDEX.
- IDXTYPE: Tipo de índice que se creará. Por ejemplo,
pasa
UNIQUEpara crear un índice único. - IDXNAME: Nombre del índice.
- TABLENAME: Es el nombre de la tabla en el formato
schema_name.table_name. - IDXDEFINITION: Definición del índice. No incluyas paréntesis externos.
- IDXOPTION: Cualquier opción adicional para pasar la creación del índice. Por ejemplo, en MySQL 8.0, una opción podría pasar
INVISIBLEpara un índice invisible.
mysql.dropSecondaryIdxOnReplica
Sintaxis
mysql.dropSecondaryIdxOnReplica(IDXNAME, TABLENAME, IDXOPTION)
Descripción
Agrega un índice secundario a la base de datos. Este procedimiento almacenado es un wrapper de la declaración DDL DROP INDEX.
- IDXNAME: Nombre del índice.
- TABLENAME: Es el nombre de la tabla en el formato
schema_name.table_name. - IDXOPTION: cualquier opción adicional para pasar cuando se descarta un índice. Por ejemplo, una opción de algoritmo como
INPLACE.
Procedimientos almacenados de replicación del servidor externo
Puedes usar el siguiente procedimiento almacenado durante la replicación del servidor externo.
mysql.skipReplicationError
Sintaxis
mysql.skipReplicationError()
Descripción
Omite un error de replicación que se produjo durante la replicación del servidor externo y, luego, reanuda la replicación.
Puedes ejecutar este procedimiento almacenado solo si encontraste un error de replicación y los subprocesos de E/S y SQL están detenidos.
Este procedimiento almacenado hace lo siguiente:
Determina si se usa la replicación basada en GTID o en la posición del registro binario.
Si se usa la replicación paralela, el procedimiento almacenado primero llama a
START_SLAVE_UNTIL_SQL_AFTER_MTS_GAPSoSTART_REPLICA UNTIL_SQL_AFTER_MTS_GAPSpara garantizar que no haya brechas en las transacciones aplicadas hasta la transacción con errores. Luego, el procedimiento establece de forma temporal la configuración de replicación en un solo subproceso.Para la replicación basada en la posición del registro binario, el procedimiento establece
SQL_SLAVE_SKIP_COUNTERoSQL_REPLICA_SKIP_COUNTER = 1para omitir la transacción actual.Para la replicación basada en GTID, el procedimiento almacenado determina el GTID de la transacción con errores actual según la información de la variable de estado
gtid_executed. Luego, el procedimiento inserta una transacción vacía para reabastecer ese GTID.Si la replicación paralela se inhabilitó antes, el procedimiento almacenado la vuelve a habilitar.
El procedimiento almacenado reanuda la replicación.
En la tabla mysql.skip_replication_error_history, se registran todas las invocaciones de este
procedimiento almacenado.
¿Qué sigue?
- Obtén información sobre cómo agregar y descartar índices en las réplicas de lectura de Cloud SQL.
- Obtén más información para crear y administrar índices de réplicas de lectura.