XtraBackup是一个用于MySQL和Percona Server的开源热备份工具,它由Percona开发。XtraBackup支持两种备份类型:完整备份(full backup)和增量备份(incremental backup)。
备份原理:
-
xtrabackup在备份过程中,会复制innodb的data file,由于是物理复制,因此能够在非常短的时间内完成备份。
-
对于MyISAM引擎的表,xtrabackup会进行COPY数据文件的方式进行备份。
-
xtrabackup在备份过程中,会记录备份点,并且能够支持创建多个备份点。
-
xtrabackup在备份innodb的同时,还会保存所有的binlog日志,用于恢复后应用。
-
xtrabackup在备份过程中,会锁定表不能写入,因此对线上业务影响较大,建议在业务低峰时段进行备份。
实例代码:
# 完整备份
innobackupe-1.5.1 --user=DBUSER --password=DBPASS /path/to/BACKUP-DIR/
# 增量备份
innobackupe-1.5.1 --user=DBUSER --password=DBPASS --incremental /path/to/BACKUP-DIR/ --incremental-basedir=/path/to/BACKUP-DIR/base_backup_dir
恢复原理:
-
xtrabackup在恢复过程中,会逐个应用binlog日志,并且重新应用redo log,最终恢复数据到指定的状态。
-
对于innodb表,xtrabackup会重新apply redo log。
-
对于MyISAM表,xtrabackup会COPY回原来的数据文件。
实例代码:
# 恢复
innobackupe-1.5.1 --apply-log /path/to/BACKUP-DIR/
# 备份移动到数据目录
innobackupe-1.5.1 --copy-back /path/to/BACKUP-DIR/