Because GTID-based replication is dependent on transactions, some features otherwise available in MySQL are not supported when using it. This section provides information about restrictions on and limitations of replication with GTIDs.
Updates involving nontransactional storage engines. 
        When using GTIDs, updates to tables using nontransactional
        storage engines such as MyISAM
        cannot be made in the same statement or transaction as updates
        to tables using transactional storage engines such as
        InnoDB.
      
This restriction is due to the fact that updates to tables that use a nontransactional storage engine mixed with updates to tables that use a transactional storage engine within the same transaction can result in multiple GTIDs being assigned to the same transaction.
Such problems can also occur when the source and the replica use different storage engines for their respective versions of the same table, where one storage engine is transactional and the other is not. Also be aware that triggers that are defined to operate on nontransactional tables can be the cause of these problems.
In any of the cases just mentioned, the one-to-one correspondence between transactions and GTIDs is broken, with the result that GTID-based replication cannot function correctly.
CREATE TABLE ... SELECT statements. 
        For storage engines which support atomic DDL,
        CREATE
        TABLE ... SELECT is recorded in the binary log as one
        transaction. For more information, see
        Section 15.1.1, “Atomic Data Definition Statement Support”.
      
Temporary tables. 
        If binlog_format is set to
        STATEMENT,
        CREATE TEMPORARY
        TABLE and
        DROP TEMPORARY
        TABLE statements cannot be used inside transactions,
        procedures, functions, and triggers when GTIDs are in use on the
        server (that is, when the
        enforce_gtid_consistency system
        variable is set to ON). They can be used
        outside these contexts when GTIDs are in use, provided that
        autocommit=1 is set. When
        binlog_format is set to
        ROW or MIXED,
        CREATE TEMPORARY
        TABLE and
        DROP TEMPORARY
        TABLE statements are allowed inside a transaction,
        procedure, function, or trigger when GTIDs are in use. The
        statements are not written to the binary log and are therefore
        not replicated to replicas. The use of row-based replication
        means that the replicas remain in sync without the need to
        replicate temporary tables. If the removal of these statements
        from a transaction results in an empty transaction, the
        transaction is not written to the binary log.
      
Preventing execution of unsupported statements. 
        To prevent execution of statements that would cause GTID-based
        replication to fail, all servers must be started with the
        --enforce-gtid-consistency option
        when enabling GTIDs. This causes statements of any of the types
        discussed previously in this section to fail with an error.
      
      Note that
      --enforce-gtid-consistency only
      takes effect if binary logging takes place for a statement. If
      binary logging is disabled on the server, or if statements are not
      written to the binary log because they are removed by a filter,
      GTID consistency is not checked or enforced for the statements
      that are not logged.
    
For information about other required startup options when enabling GTIDs, see Section 19.1.3.4, “Setting Up Replication Using GTIDs”.
Skipping transactions. 
        sql_replica_skip_counter is not
        available when using GTID-based replication. If you need to skip
        transactions, use the value of the source's
        gtid_executed variable instead.
        If you have enabled GTID assignment on a replication channel
        using the
        ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS option
        of the CHANGE REPLICATION SOURCE
        TO statement,
        sql_replica_skip_counter is
        available. For more information, see
        Section 19.1.7.3, “Skipping Transactions”.
      
Ignoring servers. 
        IGNORE_SERVER_IDS cannot be
        used with CHANGE REPLICATION SOURCE
        TO when using GTIDs, because transactions that have
        already been applied are automatically ignored. Before starting
        GTID-based replication, check for and clear all ignored server
        ID lists that have previously been set on the servers involved.
        The SHOW REPLICA STATUS
        statement, which can be issued for individual channels, displays
        the list of ignored server IDs if there is one. If there is no
        list, the Replicate_Ignore_Server_Ids field
        is blank. If the list of ignored server IDs is not empty, you
        can clear it with CHANGE REPLICATION SOURCE TO ...
        IGNORE_SERVER_IDS=() (in other words, with an empty
        list of server IDs to be ignored).