Procedimientos almacenados de Cloud SQL

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 obtener más información, consulta la página de referencia sentencia CALL.

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:

  1. Habilita los instrumentos de etapa:

    UPDATE performance_schema.setup_instruments
    SET ENABLED = 'YES'
    WHERE NAME LIKE 'stage/innodb/alter%';
  2. 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 UNIQUE para 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 INVISIBLE para 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:

  1. Determina si se usa la replicación basada en GTID o en la posición del registro binario.

  2. Si se usa la replicación paralela, el procedimiento almacenado primero llama a START_SLAVE_UNTIL_SQL_AFTER_MTS_GAPS o START_REPLICA UNTIL_SQL_AFTER_MTS_GAPS para 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.

  3. Para la replicación basada en la posición del registro binario, el procedimiento establece SQL_SLAVE_SKIP_COUNTER o SQL_REPLICA_SKIP_COUNTER = 1 para omitir la transacción actual.

  4. 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.

  5. Si la replicación paralela se inhabilitó antes, el procedimiento almacenado la vuelve a habilitar.

  6. 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?