Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-20608

innodb_log_optimize_ddl=OFF may omit some redo log

    XMLWordPrintable

    Details

      Description

      MDEV-16809 introduced the configuration parameter innodb_log_optimize_ddl (ON by default, to keep existing behaviour). The intention was that with the non-default setting innodb_log_optimize_ddl=OFF, all changes to persistent data pages would be redo-logged.

      Unfortunately, while the PageBulk code appears to write redo log for many operations, both in PageBulk::insert() and PageBulk::finish(), the modifications of the sparse page directory and the linked list of records are not being redo-logged.

      Furthermore, PageBulk::init() is bypassing some checks by setting a flag buf_block_t::skip_flush_check, which should not exist at all. There should be no special logic for flushing ‘incomplete’ pages, and all changes to persistent pages should be redo-logged if innodb_log_optimize_ddl=OFF.

      As far as I can tell, there should be no impact on InnoDB crash recovery due to this. The omitted redo logging should only affect scenarios where mariabackup --backup is run concurrently with a table-rebuilding or index-creating ALTER TABLE…ALGORITHM=INPLACE operation.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              vlad.lesin Vladislav Lesin
              Reporter:
              marko Marko Mäkelä
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated: