摘要
本文部分内容来源于网络,个人收集整理,请勿传播
先简单介绍一下这个工具:
innobackupex
innobackupex比xtrabackup有更强的功能,它整合了xtrabackup和其他的一些功能,他不但可以全量备份/恢复,还可以基于时间的增量备份与恢复。
innobackupex备份原理
innobackupex首先调用xtrabackup来备份innodb数据文件,当xtrabackup完成后,innobackupex就查看文件 xtrabackup_suspended ;然后执行“FLUSH TABLES WITH READ LOCK”来备份其他的文件
innobackupex恢复原理
innobackupex首先读取my.cnf,查看变量
- datadir
- innodb_data_home_dir
- innodb_data_file_path
- innodb_log_group_home_dir
对应的目录是否存在,确定相关目录存在后,然后先copy myisam表和索引,然后在copy innodb的表、索引和日志。
全量备份
全备命令
1 | ./innobackupex --user=root --password=root --host=172.17.210.112 --parallel=4 --throttle=400 --stream=tar /mysqlbak/innobackupex 2>/mysqlbak/innobackupex/bak.log 1>/mysqlbak/innobackupex/fullbak.tar |
参数解释
1 | --user=root 备份操作用户名,一般都是root用户 |
不压缩的全备
1 | ./innobackupex --user=root --password=root --host=172.17.210.112 --parallel=4 --throttle=400 /mysqlbak/innobackupex 2>/mysqlbak/innobackupex/bak.log 1>/mysqlbak/innobackupex/ |
查看日志信息,会出现
1 | 141011 09:44:02 innobackupex: Executing FLUSH ENGINE LOGS... |
表示备份成功。
innobackupex的全量备份脚本
1 |
|
全量恢复
恢复备份文件要保证datadir文件为空,否则会报如下的错误
1 | innobackupex --user=root /data/backup/ |
恢复第一步:应用日志
1 | ./innobackupex --user=root --password=root1 --defaults-file=/etc/my.cnf --apply-log /u02/backup/ |
恢复第二步:拷贝文件
1 | ./innobackupex --user=root --password=root1 --defaults-file=/etc/my.cnf --copy-back /u02/backup/ |
参数解释
1 | --defaults-file=/etc/my.cnf 恢复会使用my.cnf文件把需要恢复的文件,恢复到my.cnf指定的位置。 |
恢复需要一点点的时间,出现下面信息表示恢复成功。
1 | innobackupex: Starting to copy InnoDB system tablespace |
恢复第三步:修改文件权限
1 | cd /data |
可能出现的报错:
出现下面错误,先初始化一下mysql
1 | ./mysql.server start |
权限:应该恢复使用的是root用户,但是MySQL需要MySQL用户去访问。
1 | ./mysql.server restart |
连接MySQL的时候
1 | ./mysql -uroot -p |