MySQL数据库备份实例详解(7)

我们进入目录中查看一下

[root@localhost db_backup]# ls 20190110 2019-01-10_15-15-30 mc_orderdb.sql mc.sql order_master_1000_1050.sql order_master.sql [root@localhost db_backup]# cd 2019-01-10_15-15-30/ [root@localhost 2019-01-10_15-15-30]# ls backup-my.cnf ib_buffer_pool mc_orderdb mc_userdb performance_schema xtrabackup_binlog_info xtrabackup_info bak_orderdb ibdata1 mc_productdb mysql sys xtrabackup_checkpoints xtrabackup_logfile

与原数据文件目录相比,少了ib_logfile0等日志文件

xtrabackup_binlog_info 比较重要,其中记录了备份的日志名和日志点,相当于mysqldump中设置master-data参数的作用

如果我们不想以时间戳的形式自动生成子目录,我们可以通过指定--no-timestamp参数来实现

innobackupex --user=backup --password=123456 --parallel=2 /home/db_backup/2019-01-10 --no-timestamp [root@localhost db_backup]# innobackupex --user=backup --password=123456 --parallel=2 /home/db_backup/2019-01-10 --no-timestamp [root@localhost db_backup]# ls 20190110 2019-01-10 2019-01-10_15-15-30 mc_orderdb.sql mc.sql order_master_1000_1050.sql order_master.sql [root@localhost db_backup]# cd 2019-01-10 [root@localhost 2019-01-10]# ls backup-my.cnf ib_buffer_pool mc_orderdb mc_userdb performance_schema xtrabackup_binlog_info xtrabackup_info bak_orderdb ibdata1 mc_productdb mysql sys xtrabackup_checkpoints xtrabackup_logfile [root@localhost 2019-01-10]# 4. 利用innobackupex 进行全备的恢复 innobackupex --apply-log /path/to/BACKUP-DIR mv /path/to/BACKUP-DIR /home/mysql/data

利用xtrabackup备份产生的备份集并不能直接用于数据库的恢复
进行数据库恢复之前,我们必须把备份中产生的备份集 进行应用,此处我们使用的是备份文件的目录伪2019-01-10

[root@localhost db_backup]# innobackupex --apply-log /home/db_backup/2019-01-10 [root@localhost db_backup]# cd 2019-01-10 [root@localhost 2019-01-10]# ls backup-my.cnf ib_logfile0 mc_productdb sys xtrabackup_info bak_orderdb ib_logfile1 mc_userdb xtrabackup_binlog_info xtrabackup_logfile ib_buffer_pool ibtmp1 mysql xtrabackup_binlog_pos_innodb xtrabackup_master_key_id ibdata1 mc_orderdb performance_schema xtrabackup_checkpoints

可以发现,使用了上面的命令后,备份集中多出了之前缺少的ib_logfile0等文件

使用xtrabackup进行数据库恢复时,我们必须对数据库实例进行重启
先停用mysql服务

然后将原数据库文件所在的文件夹重命名为data_bak,然后将此时的 2019-01-10文件夹移动到data_bak所在的文件夹,并重命名为data,即覆盖了原来的文件

然后 chown -R mysql:mysql data
对文件夹修改所属用户

最后重启mysql服务即可

5. 利用innobackupex 进行增量备份 innobackupex --user=backup --password=123456 /home/db_backup # 先进行全备 innobackupex --user=backup --password=123456 --incremental /home/db_backup/ --incremental-basedir=/home/db_backup/2019-01-10/

incremental :表示我们要进行的是一个全备, 指定全备的目录
incremental-basedir :指定增量备份所依赖的数据基础的备份目录,这个增量备份所依赖的上一个全备

演示:

先进行全备

innobackupex --user=backup --password=123456 /home/db_backup

在 /home/db_backup 目录下生产了一个新的全备子目录 2019-01-10_16-19-37

再依赖上个全量备份进行增量备份

innobackupex --user=backup --password=123456 --incremental /home/db_backup/ --incremental-basedir=/home/db_backup/2019-01-10_16-19-37/

此时在 /home/db_backup 目录下生产了一个增量备分的子目录2019-01-10_16-22-09
增量备份会把自上一个全备后的数据变更记录下来

然后再进行一次增量备份,此时的命令和前面基本相同,只是所基于的增量备份的数据目录要变成上次增量备份生成的目录

innobackupex --user=backup --password=123456 --incremental /home/db_backup/ --incremental-basedir=/home/db_backup/2019-01-10_16-22-09/

此时,第二次增量备份的生成的目录名为2019-01-10_16-24-09

6. 利用innobackupex 进行增量恢复 innobackupex --apply-log --redo-only 全备目录

我们要循环的在多次增量备份中应用上面步骤

innobackupex --apply-log --redo-only 全备目录 --incremental-dir=第一次增量目录

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/1a2d340624be47f3124ea7a7b51e16e8.html