Habilitación de la anotación de registros binarios de MariaDB - Amazon Relational Database Service

Habilitación de la anotación de registros binarios de MariaDB

En una instancia de base de datos de MariaDB, puede usar el evento Annotate_rows para incluir en un evento de fila una copia de la consulta de SQL que causó el evento de fila. Este enfoque proporciona una funcionalidad similar a la habilitación del parámetro binlog_rows_query_log_events en una instancia de base de datos de RDS para MySQL.

Puede habilitar globalmente las anotaciones de registros binarios creando un grupo de parámetros personalizado y definiendo el parámetro binlog_annotate_row_events como 1. También puede habilitar las anotaciones en el nivel de sesión llamando a SET SESSION binlog_annotate_row_events = 1. Use replicate_annotate_row_events para reproducir las anotaciones de registros binarios en la instancia réplica si el registro binario está habilitado en ella. No se requieren privilegios especiales para usar estos ajustes.

A continuación se muestra un ejemplo de una transacción basada en filas de MariaDB. El uso del registro basado en filas se dispara definiendo el nivel de aislamiento de transacciones como de lectura confirmada.

CREATE DATABASE IF NOT EXISTS test; USE test; CREATE TABLE square(x INT PRIMARY KEY, y INT NOT NULL) ENGINE = InnoDB; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; BEGIN INSERT INTO square(x, y) VALUES(5, 5 * 5); COMMIT;

Sin anotaciones, las entradas de los registros binarios de la transacción tendrán un aspecto similar al siguiente:

BEGIN /*!*/; # at 1163 # at 1209 #150922 7:55:57 server id 1855786460 end_log_pos 1209 Table_map: `test`.`square` mapped to number 76 #150922 7:55:57 server id 1855786460 end_log_pos 1247 Write_rows: table id 76 flags: STMT_END_F ### INSERT INTO `test`.`square` ### SET ### @1=5 ### @2=25 # at 1247 #150922 7:56:01 server id 1855786460 end_log_pos 1274 Xid = 62 COMMIT/*!*/;

La siguiente instrucción habilita las anotaciones de nivel de sesión para esta misma transacción y las deshabilita después de confirmar la transacción:

CREATE DATABASE IF NOT EXISTS test; USE test; CREATE TABLE square(x INT PRIMARY KEY, y INT NOT NULL) ENGINE = InnoDB; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION binlog_annotate_row_events = 1; BEGIN; INSERT INTO square(x, y) VALUES(5, 5 * 5); COMMIT; SET SESSION binlog_annotate_row_events = 0;

Con anotaciones, las entradas de los registros binarios de la transacción tendrán un aspecto similar al siguiente:

BEGIN /*!*/; # at 423 # at 483 # at 529 #150922 8:04:24 server id 1855786460 end_log_pos 483 Annotate_rows: #Q> INSERT INTO square(x, y) VALUES(5, 5 * 5) #150922 8:04:24 server id 1855786460 end_log_pos 529 Table_map: `test`.`square` mapped to number 76 #150922 8:04:24 server id 1855786460 end_log_pos 567 Write_rows: table id 76 flags: STMT_END_F ### INSERT INTO `test`.`square` ### SET ### @1=5 ### @2=25 # at 567 #150922 8:04:26 server id 1855786460 end_log_pos 594 Xid = 88 COMMIT/*!*/;