As noted in
        Section 11.3, “How to Downgrade”, you should
        ensure a “slow” shutdown is done with the
        InnoDB storage engine, before running with the built-in InnoDB in MySQL, in order to
        clean up all buffers. To initiate a slow shutdown, execute the
        command SET GLOBAL innodb_fast_shutdown=0
        before initiating the shutdown of the InnoDB storage engine.
      
        We recommend “slow” shutdown
        (innodb_fast_shutdown=0) because the
        InnoDB storage engine may write special records to the transaction
        undo log that cause problems if the built-in InnoDB in MySQL attempts to read
        the log. Specifically, these special records are written when a
        record in a COMPRESSED or DYNAMIC table is updated or
        deleted and the record contains columns stored off-page. The
        built-in InnoDB in MySQL cannot read these undo log records. Also, the
        built-in InnoDB in MySQL cannot roll back incomplete transactions that affect
        tables that it is unable to read (tables in COMPRESSED or
        DYNAMIC format).
      
        Note that a “normal” shutdown does not
        necessarily empty the undo log. A normal shutdown
        occurs when innodb_fast_shutdown=1, the
        default. When InnoDB is shut down, some active transactions
        may have uncommitted modifications, or they may be holding a
        read view that prevents the purging of some version information
        from the undo log. The next time InnoDB is started after a
        normal shutdown (innodb_fast_shutdown=1), it
        rolls back any incomplete transactions and purge old version
        information. Therefore, it is important to perform a
        “slow” shutdown
        (innodb_fast_shutdown=0) as part of the
        downgrade process.
      
        In case it is not possible to have the InnoDB storage engine clear the
        undo log, you can prevent the built-in InnoDB in MySQL from accessing the undo
        log by setting innodb_force_recovery=3. However, this is not a
        recommended approach, since in addition to preventing the purge
        of old versions, this recovery mode prevents the rollback of
        uncommitted transactions. For more information, see the MySQL
        manual on
        Forcing
        InnoDB Recovery.
      
        When it comes to downgrading, there are also considerations with
        respect to redo log information. For the purpose of crash
        recovery, InnoDB writes to the log files information about
        every modification to the data files. When recording changes to
        tables that were created in DYNAMIC or COMPRESSED format,
        the InnoDB storage engine writes redo log entries that cannot be
        recognized by the built-in InnoDB in MySQL. The built-in InnoDB in MySQL refuses to start if
        it sees any unknown entries in the redo log.
      
        When InnoDB is shut down cleanly, it
        flushes all unwritten changes from the buffer pool to the data
        files and makes a checkpoint in the redo log. When InnoDB is
        subsequently restarted, it scans the redo log starting from the
        last checkpoint. After a clean shutdown, InnoDB crash recovery
        only then sees the end-of-log marker in the redo log. In this
        case, the built-in InnoDB in MySQL would not see any unrecognizable redo log
        entries. This is a second reason why you should ensure a clean,
        slow shutdown of MySQL
        (innodb_fast_shutdown=0) before you attempt a
        downgrade.
      
        In an emergency, you may prevent the redo log scan and the crash
        recovery from the redo log by setting the parameter
        innodb_force_recovery=6. However, this is
        strongly discouraged, because
        may lead into severe corruption. See the MySQL manual on
        Forcing
        InnoDB Recovery for more information.
      
This is the User’s Guide for InnoDB storage engine 1.1 for MySQL 5.5, generated on 2010-04-13 (revision: 19994) .

