您的位置:首页 > 数据库 > MySQL

xtrabackup原理和使用

2015-06-16 14:08 302 查看
对于InnoDB,XtraBackup基于InnoDB的crash-recovery功能进行备份。
crash-recovery是这样的:InnoDB维护了一个redolog,又称为 transaction log,也叫事务日志,它包含了InnoDB数据的所有改动情况。InnoDB启动的时候先去检查datafile和transaction log,然后应用所有已提交的事务并回滚所有未提交的事务。
XtraBackup在备份的时候并不锁定表,而是一页一页地复制InnoDB的数据,与此同时,XtraBackup还有另外一个线程监视着transactions log,一旦log发生变化,就把变化过的log pages复制走(因为transactions log文件大小有限,写满之后,就会从头再开始写,新数据可能会覆盖到旧的数据,所以一旦变化就要立刻复制走)。在全部数据文件复制完成之后,停止复制logfile。

备份步骤:
./innobackupex--defaults-file=/etc/my.cnf /data/backup/
innobackupex: Backupcreated in directory '/data/backup/2014-11-04_20-47-41'(比较重要的输出信息)

如果不想要后面的时间戳:

加上--no-timestamp

日志输出

innobackupex: completedOK!
代表备份完成

看备份下的文件

[root@node20db_full_20141103]# ls -lh
total 1.1G
-rw-r--r-- 1 rootroot 357 Nov 3 22:18 backup-my.cnf
drwxr-xr-x 2 rootroot 19 Nov 3 22:18 db01
-rw-r----- 1 root root1.0G Nov 3 22:18 ibdata1
drwxr-xr-x 2 root root4.0K Nov 3 22:18 mysql
drwxr-xr-x 2 root root4.0K Nov 3 22:18 performance_schema
drwxr-xr-x 2 rootroot 6 Nov 3 22:18 test
-rw-r--r-- 1 rootroot 25 Nov 3 22:18 xtrabackup_binlog_info
-rw-r----- 1 root root 89 Nov 3 22:18 xtrabackup_checkpoints
-rw-r--r-- 1 rootroot 590 Nov 3 22:18 xtrabackup_info
-rw-r----- 1 root root2.5K Nov 3 22:18 xtrabackup_logfile

catxtrabackup_checkpoints (记录LSN,以及备份的类型)
backup_type =full-backuped(备份类型,全备)
from_lsn = 0
to_lsn = 2084534
last_lsn = 2084534

1 日志应用到备份文件的数据文件中
innobackupex --apply-log--defaults-file=backup-my.cnf /data/backup/2014-11-04_20-47-41/
日志恢复成功会提示
xtrabackup: startingshutdown with innodb_fast_shutdown = 1
141111 23:31:25 InnoDB: Starting shutdown...
141111 23:31:30 InnoDB: Shutdown completed; log sequencenumber 1626124
141111 23:31:30 innobackupex: completed OK!

2 备份文件中的数据恢复到数据库中

/etc/init.d/mysql stop
cd/data/mysql/mysql_3306
mv data data_bak
mkdir data
cd data
cp -r /data/backup/2014-11-04_20-47-41/*. (拷贝备份)

cd ..
chown -R mysql:mysqldata (修改权限)

[root@node20mysql_3306]# ls -lh
total 8.0K
drwxr-xr-x 7 mysqlmysql 4.0K Nov 3 22:35 data
drwxr-xr-x 7 mysqlmysql 4.0K Nov 3 22:33 data_bak
drwxr-xr-x 2 mysqlmysql 6 Sep 11 20:57 logs
drwxr-xr-x 2 mysqlmysql 6 Sep 11 20:57 tmp

启动数据库
/etc/init.d/mysql start
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql备份