~akopytov/percona-xtrabackup/bug1291299-2.1

Viewing all changes in revision 740.

  • Committer: Alexey Kopytov
  • Date: 2014-04-30 13:11:44 UTC
  • Revision ID: akopytov@gmail.com-20140430131144-1gwojj6mo0quzxg9
Bug #1291299: xtrabackup_56 crashes with segfault during --prepare

The problem was that if a remote InnoDB tablespace got CREATEd or
ALTERed during the backup, an attempt to prepare such a backup later
would lead to an xtrabackup crash.

The reason is that InnoDB code that replays MLOG_FILE_CREATE2 log
records does not support remote tablespaces, because the remote path is
not stored in the record. fil_create_new_single_table_tablespace(),
however, assumes the remote path to be known when a tablespace is marked
as remote in the data dictionary. Which is not a problem for InnoDB per
se, as log records corresponding to DDL operations are ignored on InnoDB
recovery (and thus, fil_create_new_single_table_tablespace() is not
called), but it is a problem for InnoDB hot backup tools such as
XtraBackup, which do have to replace such records.

Fixed by making XtraBackup ignore the ?remote tablespace? data
dictionary flag in fil_create_new_single_table_tablespace(). XtraBackup
recovery assumes all tablespaces to be local, and relies on innobackupex
to handle .isl files and to restore remote tablespaces to the proper
locations on --copy-back.

expand all expand all

Show diffs side-by-side

added added

removed removed

Lines of Context: