-
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.