When GTIDs are in use
          (gtid_mode is
          ON), the GTID for a committed transaction
          is persisted on the replica even if the content of the
          transaction is filtered out. This feature prevents a replica
          from retrieving previously filtered transactions when it
          reconnects to the source using GTID auto-positioning. It can
          also be used to skip a transaction on the replica, by
          committing an empty transaction in place of the failing
          transaction.
        
          If the failing transaction generated an error in a worker
          thread, you can obtain its GTID directly from the
          APPLYING_TRANSACTION field in the
          Performance Schema table
          replication_applier_status_by_worker.
          To see what the transaction is, issue
          SHOW RELAYLOG EVENTS on the
          replica or SHOW BINLOG
          EVENTS on the source, and search the output for a
          transaction preceded by that GTID.
        
When you have assessed the failing transaction for any other appropriate actions as described previously (such as security considerations), to skip it, commit an empty transaction on the replica that has the same GTID as the failing transaction. For example:
SET GTID_NEXT='aaa-bbb-ccc-ddd:N';
BEGIN;
COMMIT;
SET GTID_NEXT='AUTOMATIC';
          The presence of this empty transaction on the replica means
          that when you issue a START
          SLAVE statement to restart replication, the replica
          uses the auto-skip function to ignore the failing transaction,
          because it sees a transaction with that GTID has already been
          applied. If the replica is a multi-source replica, you do not
          need to specify the channel name when you commit the empty
          transaction, but you do need to specify the channel name when
          you issue START SLAVE.
        
Note that if binary logging is in use on this replica, the empty transaction enters the replication stream if the replica becomes a source or primary in the future. If you need to avoid this possibility, consider flushing and purging the replica's binary logs, as in this example:
FLUSH LOGS;
PURGE BINARY LOGS TO 'binlog.000146';The GTID of the empty transaction is persisted, but the transaction itself is removed by purging the binary log files.