• Marko Mäkelä's avatar
    MDEV-15158 On commit, do not write to the TRX_SYS page · 947efe17
    Marko Mäkelä authored
    This is based on a prototype by
    Thirunarayanan Balathandayuthapani <thiru@mariadb.com>.
    
    Binlog and Galera write-set replication information was written into
    TRX_SYS page on each commit. Instead of writing to the TRX_SYS during
    normal operation, InnoDB can make use of rollback segment header pages,
    which are already being written to during a commit.
    
    The following list of fields in rollback segment header page are added:
        TRX_RSEG_BINLOG_OFFSET
        TRX_RSEG_BINLOG_NAME (NUL-terminated; empty name = not present)
        TRX_RSEG_WSREP_XID_FORMAT (0=not present; 1=present)
        TRX_RSEG_WSREP_XID_GTRID
        TRX_RSEG_WSREP_XID_BQUAL
        TRX_RSEG_WSREP_XID_DATA
    
    trx_sys_t: Introduce the fields
    recovered_binlog_filename, recovered_binlog_offset, recovered_wsrep_xid.
    
    To facilitate upgrade from older mysql or mariaDB versions, we will read
    the information in TRX_SYS page. It will be overridden by the
    information that we find in rollback segment header pages.
    
    Mariabackup --prepare will read the metadata from the rollback
    segment header pages via trx_rseg_array_init(). It will still
    not read any undo log pages or recover any transactions.
    947efe17
ha_innodb.cc 625 KB