数据增量备份与恢复
说明:增量备份是备份 上次备份后新产生的数据 所以在执行增量备份之前 必须得现有一次备份 不然的话无法得知那些数据是新数据
通常增量备份之前的备份 就应该是完全备份 比如 每周的周一都对数据做完全备份 每周的周二到周日 对数据都做增量备份
增量备份数据的命令格式
--incremental 备份新数据并定义新数据存放的目录名
--incremental-basedir 备份新数据参考的备份目录名
]#innobackupex -uroot -p密码 --incremental /目录名
--incremental-basedir=/目录名 --no-timestamp
增量恢复数据的命令格式
--incremental-dir 增量备份数据存放的目录名
准备恢复数据
]#innobackupex --apply-log --redo-only /首次备份目录名
合并数据 合并的次数与增量备份的顺序要一致
]#innobackupex --apply-log --redo-only /首次备份目录名 --incremental-dir=/目录名
拷贝数据
]#innobackupex --copy-back /完全备份目录
使用增量备份文件恢复数据的具体操作步骤:
1) 停止数据库服务
2) 清空数据库目录
3)数据
4) 合并准备恢复数据 (合并的次数要增量备份的次数一样 并且合并的顺序也有与增量备份的顺序一致)
5) 恢复数据
6) 修改数据库目录的所有者和组用户为mysql
7) 启动服务
8) 查看数据
增量备份的例子: 统一在 host51 主机做练习 每周的周一对数据做完全备份 每周的周二到周日对数据做增量备份
周一 执行完全备份
[root@host51 ~]# innobackupex -uroot -pNSD2107...a /fullbak --no-timestamp
[root@host51 ~]# ls /fullbak/
backup-my.cnf ib_buffer_pool mysql sys xtrabackup_info
db51 ibdata1 performance_schema xtrabackup_checkpoints xtrabackup_logfile
[root@host51 ~]#
向表里添加新数据 (多执行几遍)
mysql> insert into tarena.user(name,shell) values("fff","fff");
周二 执行增量备份
[root@host51 ~]# innobackupex -uroot -pNSD2107...a --incremental /new1dir --incremental-basedir=/fullbak --no-timestamp
查看备份目录 列表
[root@host51 ~]# ls /new1dir/
backup-my.cnf ibdata1.delta performance_schema xtrabackup_info
db51 ibdata1.meta sys xtrabackup_logfile
ib_buffer_pool mysql xtrabackup_checkpoints
[root@host51 ~]#
向表里添加新数据 多执行几遍
mysql> insert into tarena.user(name,shell) values("zzz","zzz");
说明: 如果周二做的是差异备份的话 命令这样写
[root@host51 ~]# innobackupex -uroot -pNSD2107...a --incremental /new1dir -incremental-basedir=/fullbak --no-timestamp
周三 执行增量备份
[root@host51 ~]# innobackupex -uroot -pNSD2107...a --incremental /new2dir --incremental-basedir=/new1dir --no-timestamp
[root@host51 ~]# ls /new2dir/ 查看备份目录 列表
backup-my.cnf ibdata1.delta performance_schema xtrabackup_info
db51 ibdata1.meta sys xtrabackup_logfile
ib_buffer_pool mysql xtrabackup_checkpoints
[root@host51 ~]#
向表里添加新数据 mysql> insert into tarena.user(name,shell) values("www","wwww"); (多执行几遍)
说明: 如果周三做的是差异备份的话 命令这样写
[root@host51 ~]# innobackupex -uroot -pNSD2107...a --incremental /new2dir --incremental-basedir=/fullbak --no-timestamp
周四 执行增量备份
[root@host51 ~]# innobackupex -uroot -pNSD2107...a --incremental /new3dir
--incremental-basedir=/new2dir --no-timestamp
[root@host51 ~]# ls /new3dir/ 查看备份目录 列表
backup-my.cnf ibdata1.delta performance_schema xtrabackup_info
db51 ibdata1.meta sys xtrabackup_logfile
ib_buffer_pool mysql xtrabackup_checkpoints
[root@host51 ~]#
说明: 如果周四做的是差异备份的话 命令这样写
[root@host51 ~]# innobackupex -uroot -pNSD2107...a --incremental /new3dir --incremental-basedir=/fullbak --no-timestamp
周五到 周日 不演示了
增量恢复 (使用增量备份文件恢复数据)
模拟数据丢失
[root@host51 ~]# mysql -uroot -pNSD2107...a -e 'drop database tarena'
[root@host51 ~]# mysql -uroot -pNSD2107...a -e 'drop database mysql'
具体操作步骤:(host51 主机使用自己的增量备份文件恢复数据)
1) 停止数据库服务 [root@host51 ~]# systemctl stop mysqld
2) 清空数据库目录 [root@host51 ~]# rm -rf /var/lib/mysql/*
3) 准备恢复数据 (告诉程序innobackupex从什么位置开始合并数据)
[root@host51 ~]# innobackupex --apply-log --redo-only /fullbak/
4) 合并数据 (合并的次数要增量备份的次数一样 并且合并的顺序也有与增量备份的顺序一致)
[root@host51 ~]# innobackupex --apply-log --redo-only /fullbak/
--incremental-dir=/new1dir 合并第1次增量备份数据
[root@host51 ~]# innobackupex --apply-log --redo-only /fullbak/
--incremental-dir=/new2dir 合并第2次增量备份数据
[root@host51 ~]# innobackupex --apply-log --redo-only /fullbak/
--incremental-dir=/new3dir 合并第3次增量备份数据
5) 恢复数据 (把合并后的数据拷贝到数据库目录下)
[root@host51 ~]# innobackupex --copy-back /fullbak
6) 修改数据库目录的所有者和组用户为mysql
[root@host51 ~]# chown -R mysql:mysql /var/lib/mysql
7) 启动服务
[root@host51 ~]# systemctl start mysqld
8)查看数据
[root@host51 ~]# mysql -uroot -pNSD2107...a -e 'show databases'