Support separate UNDO tablespaces in MySQL 5.6

Registered by Alexey Kopytov

InnoDB in MySQL 5.6 allows storing UNDO logs in separate tablespace(s): https://blogs.oracle.com/mysqlinnodb/entry/allow_undo_logs_to_reside

XtraBackup should support the corresponding options and copying/restoring those tablespaces.

Blueprint information

Status:
Complete
Approver:
Alexey Kopytov
Priority:
High
Drafter:
Alexey Kopytov
Direction:
Approved
Assignee:
Alexey Kopytov
Definition:
Approved
Series goal:
Accepted for 2.0
Implementation:
Implemented
Milestone target:
None
Started by
Alexey Kopytov
Completed by
Alexey Kopytov

Whiteboard

In order to backup separate undo tablespaces they must be added in the
fil_system list of tablespaces on the backup stage. This is
implemented in srv_undo_tablespaces_init(), which needs some
modifications for XtraBackup. It needs another argument to check if it
can read the number of currently used undo tablespaces from the trx
header. We can't do that on the backup stage, so we just do what
srv_undo_tablespaces_init() would do in 'create_new_db == TRUE' mode,
i.e. just assume the number of available undo tablespaces is the
number of used tablespaces.

We also have to restore undo tablespaces on --copy-back (unlike
e.g. separate doublewrite tablespace in PS). The reasons are that:

1) the server would refuse to start if the number of available undo
tablespaces is less than the number of configured ones.

2) we can prepare the backup with --redo-only (i.e. let the server
rollback uncommitted transactions)

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.