MXS-701: Update Filter Documentation
MXS-701: Update Filter Documentation
This commit is contained in:
		@ -11,6 +11,36 @@
 | 
			
		||||
 * Public License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * This filter replaces binlog events being sent
 | 
			
		||||
 * by binlogrouter module to connected slave server.
 | 
			
		||||
 * The checked binlog events are related to DML
 | 
			
		||||
 * or DDL statements:
 | 
			
		||||
 * if configuration matches, the affected eventa and following ones
 | 
			
		||||
 * are replaced by RAND_EVENT events
 | 
			
		||||
 *
 | 
			
		||||
 * (1) Binlog events being checked
 | 
			
		||||
 *
 | 
			
		||||
 * - HEARTBEAT_EVENT: always skipped
 | 
			
		||||
 * - MARIADB10_GTID_EVENT: just resets filtering process
 | 
			
		||||
 * - MARIADB_ANNOTATE_ROWS_EVENT: filtering is possible
 | 
			
		||||
 * - TABLE_MAP_EVENT: filtering is possible
 | 
			
		||||
 * - QUERY_EVENT: filtering is possible.
 | 
			
		||||
 *   If statement is COMMIT, filtering process stops
 | 
			
		||||
 * - XID_EVENT: filtering process stops.
 | 
			
		||||
 *
 | 
			
		||||
 * (2) Replacing events
 | 
			
		||||
 *
 | 
			
		||||
 * Events are replaced by a RAND_EVENT, which is in details:
 | 
			
		||||
 *
 | 
			
		||||
 * - 19 bytes binlog header
 | 
			
		||||
 * - 8 bytes first seed
 | 
			
		||||
 * - 8 bytes second seed
 | 
			
		||||
 * - 4 bytes CRC32 (if required)
 | 
			
		||||
 *
 | 
			
		||||
 * Number of bytes: 35 without CRC32 ad 39 with it.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// All log messages from this module are prefixed with this
 | 
			
		||||
#define MXS_MODULE_NAME "binlogfilter"
 | 
			
		||||
 | 
			
		||||
@ -29,7 +59,6 @@ static char* extract_column(GWBUF *buf, int col);
 | 
			
		||||
static void event_set_crc32(uint8_t* event, uint32_t event_size);
 | 
			
		||||
static void extract_header(register const uint8_t *event,
 | 
			
		||||
                           register REP_HEADER *hdr);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * BinlogFilterSession constructor
 | 
			
		||||
 *
 | 
			
		||||
@ -163,7 +192,8 @@ int BinlogFilterSession::clientReply(GWBUF* pPacket)
 | 
			
		||||
     * m_crc will be thus set in routeQuery.
 | 
			
		||||
     */
 | 
			
		||||
        case COMMAND_MODE:
 | 
			
		||||
            if (m_sql_query != NULL && !getReplicationChecksum(pPacket))
 | 
			
		||||
            if (m_sql_query != NULL &&
 | 
			
		||||
                !getReplicationChecksum(pPacket))
 | 
			
		||||
            {
 | 
			
		||||
                // Free buffer and close client connection
 | 
			
		||||
                filterError(pPacket);
 | 
			
		||||
@ -193,9 +223,8 @@ int BinlogFilterSession::clientReply(GWBUF* pPacket)
 | 
			
		||||
                handleEventData(len, event[3]);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Assuming ROW replication format:
 | 
			
		||||
            // If transaction events need to be skipped,
 | 
			
		||||
            // they are replaced by an empty paylod packet
 | 
			
		||||
            // they are replaced by a RAND_EVENT event packet
 | 
			
		||||
            if (m_skip)
 | 
			
		||||
            {
 | 
			
		||||
                replaceEvent(&pPacket);
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user