centos7,mysql5
全量备份
1 备份
#创建备份目录 mkdir -p /xtrabackup/full/ #给予Mysql的目录权限 chown mysql.mysql /xtrabackup/full -R #进行备份 innobackupex --user=数据库账号 --password='数据库密码' /xtrabackup/full #进入备份目录进行查看 #假设备份出的全量备份包为 2021-1-1 #最好对包进行压缩,后期恢复时会对备份包进行一个破坏 [root@localhost full]# ll 总用量 0 drwxr-x--- 6 mysql mysql 238 12月 24 17:20 2021-1-1
2 恢复
1.关闭数据库,进行模拟破坏: [root@mysql-server ~]# systemctl stop mysqld [root@mysql-server ~]# rm -rf /var/lib/mysql/* //删除所有数据 [root@mysql-server ~]# rm -rf /var/log/mysqld.log [root@mysql-server ~]# rm -rf /var/log/mysql-slow/slow.log 2.回滚事务: [root@mysql-server ~]# innobackupex --apply-log /xtrabackup/full/2021-1-1 备注:为什么会有回滚这一项呢,博主个人理解是,备份出数据时,类似在备份包外加了一个'锁',而回滚则是'去锁'的过程,'去锁'后才能把数据恢复到库目录。这也正是为什么在导出包时要做个压缩备 份,应为'去锁'后备份包就不完整了,打包后更安全,假如恢复失败,还可以恢复备份包。 3.恢复 innobackupex --copy-back /xtrabackup/full/2021-1-1
增量备份
1 备份
首先全量备份一次 innobackupex --user=数据库账号 --password='数据库密码' /xtrabackup/ 假设全量生成的备份包为2021-1-1-00 第一次增量备份 innobackupex --user=数据库账号 --password='数据库密码' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2021-1-1-00/ #(基于全量的包)假设第一次增量生成的包为 2021-1-1 第二次增量备份 innobackupex --user=数据库账号 --password='数据库密码' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2021-1-1/ #(基于第一次增量包)假设第二次增量生成的包为 2021-1-2 第三次增量备份 innobackupex --user=数据库账号 --password='数据库密码' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2021-1-2/ #(基于第二次增量包)假设第三次增量生成的包为 2021-1-3 ....................以此类推..........
2 恢复
首先回滚备份包 1. 先回滚全量的包 innobackupex --apply-log --redo-only /xtrabackup/2021-1-1-00 2. 回滚第一次增量包 innobackupex --apply-log --redo-only /xtrabackup/2021-1-1-00 --incremental-dir=/xtrabackup/2020-1-1 3. 回滚第二次增量包 innobackupex --apply-log --redo-only /xtrabackup/2021-1-1-00 --incremental-dir=/xtrabackup/2020-1-2 4. 回滚第三次增量包 innobackupex --apply-log --redo-only /xtrabackup/2021-1-1-00 --incremental-dir=/xtrabackup/2020-1-3 备注:此时回滚的所有增量数据都到了第一次备份的全量包里 这时数据还没有到达库指定目录 接下来我们进行恢复。 恢复回滚好的 第一次全量包 5. innobackupex --copy-back /xtrabackup/2020-1-1-0
差异备份
1 备份
首先进行一次完全备份 innobackupex --user=数据库账号 --password='数据库密码' /xtrabackup 假设完全备份的包是2021-1-1-00 进行第一次差异备份 innobackupex --user=数据库账号 --password='数据库密码' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2021-1-1-00 假设第一次差异备份包是2021-1-1 进行第二次差异备份 innobackupex --user=数据库账号 --password='数据库密码' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2021-1-1-00 #还是基于第一次的全备 假设第二次差异备份的包是2021-1-2 进行第三次差异备份 innobackupex --user=数据库账号 --password='数据库密码' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2021-1-1-00 #还是基于第一次的全备 假设第三次差异备份的包是2021-1-3 进行第四次差异备份 innobackupex --user=数据库账号 --password='数据库密码' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2021-1-1-00 #还是基于第一次的全备 假设第四次差异备份的包是2021-1-4 .................以此类推......................
2 恢复
假设恢复到第三次差异备份的数据 我们回滚时候只需要回 '滚完全备份包' 和 '第三次差异包' 备份即可。 1. 回滚 回滚全量备份包 innobackupex --apply-log --redo-only /xtrabackup/2021-1-1-00 回滚第三次差异备份包 innobackupex --apply-log --redo-only /xtrabackup/2021-1-1-00--incremental-dir=/xtrabacku/2021-1-3 2.进行恢复 恢复回滚好的 第一次全量包 innobackupex --copy-back /xtrabackup/2021-1-1-00
发表评论: