• Kristian Nielsen's avatar
    MDEV-12179: Per-engine mysql.gtid_slave_pos table · 6a84473c
    Kristian Nielsen authored
    Intermediate commit.
    
    This commit implements that record_gtid() selects a gtid_slave_posXXX table
    with a storage engine already in use by current transaction, if any.
    
    The default table mysql.gtid_slave_pos is used if no match can be found on
    storage engine, or for GTID position updates with no specific storage
    engine.
    
    Table discovery of mysql.gtid_slave_pos* happens on initial GTID state load
    as well as on every START SLAVE. Some effort is made to make this possible
    without additional locking. New tables are added using lock-free atomics.
    Removing tables requires stopping all slaves first. A warning is given in
    the error log when a table is removed but a non-stopped slave still has a
    reference to it.
    
    If multiple mysql.gtid_slave_posXXX tables with same storage engine exist,
    one is chosen arbitrarily to be used, with a warning in the error log. GTID
    data from all tables is still read, but only one among redundant tables with
    same storage engine will be updated.
    6a84473c
mdev12179.result 1.77 KB