• Marko Mäkelä's avatar
    MDEV-32939 If tables are frequently created, renamed, dropped, a backup cannot be restored · f21a6cbf
    Marko Mäkelä authored
    During mariadb-backup --backup, a table could be renamed, created and
    dropped. We could have both oldname.ibd and oldname.new, and one of
    the files would be deleted before the InnoDB recovery starts. The desired
    end result would be that we will recover both oldname.ibd and newname.ibd.
    
    During normal crash recovery, at most one file operation (create, rename,
    delete) may require to be replayed from the write-ahead log before the
    DDL recovery starts.
    
    deferred_spaces.create(): In mariadb-backup --prepare, try to create the
    file in case it does not exist.
    
    fil_name_process(): Display a message about not found files not only
    if innodb_force_recovery is set, but also in mariadb-backup --prepare.
    If we are processing a FILE_RENAME for a tablespace whose recovery is
    deferred, suppress the message and adjust the file name in case
    fil_ibd_load() returns FIL_LOAD_NOT_FOUND or FIL_LOAD_DEFER.
    
    fil_ibd_load(): Remove a redundant file name comparison.
    The caller already compared that the file names are different.
    We used to wrongly return FIL_LOAD_OK instead of FIL_LOAD_ID_CHANGED
    if only the schema name differed, such as a/t1.ibd and b/t1.ibd.
    
    Tested by: Matthias Leich
    Reviewed by: Thirunarayanan Balathandayuthapani
    f21a6cbf
log0recv.cc 145 KB