录中的内容: 一部分是MySQL下datadir的内容,如库目录,redolog,系统表空间。 一部分是之前也有介绍过的,由备份工具生成的东西: backup-my.cnf ibdata1 ib_logfile0 ib_logfile1 mysql performance_schema test xtrabackup_binlog_info xtrabackup_binlog_pos_innodb xtrabackup_checkpoints xtrabackup_info xtrabackup_logfile 进行prepare $ innobackupex --apply-log /data/backup/backup 关闭mysqld $ mysqladmin -uroot -p shutdown Enter password: $ ps -ef|grep mysql root 2991 2438 1 11:08 pts/0 00:00:00 grep mysql 移除datadir: $ mv /data/mysql_data /data/mysql_data.bk 恢复数据 $ innobackupex --copy-back /data/backup/backup/ 修改新datadir的权限 $ chown mysql:mysql -R /data/mysql_data 启动数据库 $ mysqld & $ ps -ef|grep mysql root 2712 2438 86 16:35 pts/0 00:00:02 mysqld root 2714 2438 0 16:35 pts/0 00:00:00 grep mysql
检查test.tb中的内容
至此,完全备份&恢复完成
〇 增量备份&恢复 先来一次全备: $ innobackupex -uxbackup -pbackup123 --no-timestamp /data/backup/all_backup 修改测试表及数据:(加个字段,改两条数据)
执行第一次增量备份: $ innobackupex -uxbackup -pbackup123 --no-timestamp --incremental /data/backup/incremental-dir-1 --incremental-basedir=/data/backup/all_backup/ 可以再做一次增量备份: 此时有两种增量备份方法: 第一种,总是针对basedir做增量,这个方式恢复起来就特别简单了,只需要将最后一次的增量备份合并到全量备份里,就可以恢复了。 第二种,总是针对上一次的增量,做增量备份。这个方式的恢复,就要逐一合并了,也就是我上述所说看起来有点复杂的增备思路。 反正我是喜欢第一种的,感觉也可以适应绝大多数场景。 我拿word涂了两张图,帮助理解。 第一种: 总是将1月1日的全备作为basedir,所以FROM_LSN号总是5000。 第二种: 总是把上一次(最近一次)的备份作为basedir。
此处介绍第二种: 多次增量备份的方法依旧,只需要修改--incremental-basedir即可: 继续对test.tb做一些修改:
针对第一次增量备份/data/backup/incremental-dir-1,做第二次增量备份,将第二次的增量备份放到/data/backup/incremental-dir-2/ $ innobackupex -uxbackup -pbackup123 --no-timestamp --incremental /data/backup/incremental-dir-2/ --incremental-basedir=/data/backup/incremental-dir-1
prepare过程,这个也是增量备份里最蛋疼的过程: 因为总共做了三次备份,所以先做三次prepare: 先对全备做prepare: $ innobackupex --apply-log --redo-only /data/backup/all_backup/ 然后接下来做第一次增量备 |