Xtrabackup备份与恢复

Xtrabackup备份与恢复

第一章..... xtrabackup. 3

1.1          备份原理... 3

1.2          xtrabackup安装... 3

1.3          常用选项... 5

1.4          完整备份与恢复... 5

1.4.1       备份... 6

1.4.2       恢复... 6

1.4.3       备份文件说明... 6

1.5          增量备份与恢复... 7

1.5.1       第一次增量备份... 7

1.5.2            第二次增量备份... 8

1.5.3            日志回滚... 8

1.5.4            合并增量备份1到完整备份... 8

1.5.5       合并增量备份2到完整备份... 9

1.5.6       备份恢复... 9

1.5.7       修改恢复数据文件权限... 9

1.5.8       启动MySQL,查看数据库恢复情况... 10

第一章   xtrabackup

     Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁);mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump备份就不太适合。

1.1   备份原理

备份开始时首先会开启一个后台检测进程,实时检测mysql redo的变化,一旦发现redo中有新的日志写入,立刻将日志记入后台日志文件xtrabackup_log中。之后复制innodb的数据文件和系统表空间文件ibdata1,待复制结束后,执行flush tables with read lock操作,复制.frm,MYI,MYD,等文件(执行flush table swith read lock的目的是为了防止数据表发生DDL操作,并且在这一时刻获得binlog的位置)最后会发出unlock tables,把表设置为可读可写状态,最终停止xtrabackup_log。

1.2   xtrabackup安装

由于新的MySQL重做日志和数据字典格式,8.0版本只支持mysql8.0和percona8.0,下载地址如下:

https://www.percona.com/downloads/Percona-XtraBackup-LATEST/

早于mysql8.0的版本需要使用xtrabackup2.4备份和恢复,下载地址如下:

https://www.percona.com/downloads/Percona-XtraBackup-2.4/

安装依赖包

yum install perl-DBD-MySQL

yum -y install rsync perl l perl-Digest-MD5

wget ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/libev-4.15-1.el6.rf.x86_64.rpm

rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm

wget https://www.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.8/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm

rpm -ivh percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm

#查看安装版本

xtrabackup -v

      1588082352(1).jpg       

               

1.3   常用选项

xtrabackup --help

 选项    描述  
 -u, --user=name    用户  
 -p, --password=name    密码  
 -P, --port=#    端口  
 -S, --socket=name    套接字  
 --backup    将备份数据恢复到目标目录  
 --databases    备份数据库,多个以空格分隔,默认备份所有库  
 --databases-file=name    备份数据库位于文件中  
 --tables=name    正则过滤表名  
 --tables-file=name    备份表位于文件中,格式database.table  
 --defaults-file    指定my.cnf配置文件  
 --apply-log    日志回滚  
 --incremental    增量备份  
 --incremental-basedir    基于上次增量备份而增量备份  
 --redo-only    合并完全备份和增量备份文件  
 --copy-back    将备份数据恢复到数据库  
 --no-timestramp    生成备份文件不以时间戳为目录名  
 --stream    流的格式做备份, 将备份归档, --stream-tar  
 --remote-host=user@ip DST_DIR    备份到远程主机  

1.4   完整备份与恢复

1.4.1  备份

innobackupex --defaults-file=/etc/my.cnf--host=localhost --user=root --password=123456 --port=3306--socket=/tmp/mysql.sock /opt/backup

1.4.2  恢复

innobackupex --defaults-file=/etc/my.cnf--host=localhost   --user=root--password=123456 --port=3306 --socket=/tmp/mysql.sock --copy-back/opt/backup/2020-04-25_22-12-32

chown mysql . -R

systemctl restart mysqld

1.4.3  备份文件说明

backup-my.cnf:记录innobackup使用到mysql参数

xtrabackup_binary:备份中用到的可执行文件

xtrabackup_checkpoints:记录备份的类型、开始和结束的日志序列号

xtrabackup_logfile:备份中会开启一个log copy线程,用来监控innodb日志文件(ib_logfile),如果修改就会复制到这个文件1588082394(1).jpg

1.5   增量备份与恢复

增量备份

上一步全量备份生成目录:2020-04-25_22-12-321588082435(1).jpg

1.5.1  第一次增量备份

innobackupex --defaults-file=/etc/my.cnf--host=localhost --user=root --password=123456 --port=3306--socket=/tmp/mysql.sock --incremental /opt/backup--incremental-basedir=/opt/backup/2020-04-25_22-12-32

生成目录:2020-04-25_22-18-35

1.5.2  第二次增量备份

innobackupex --defaults-file=/etc/my.cnf--host=localhost --user=root --password=123456 --port=3306--socket=/tmp/mysql.sock --incremental /opt/backup--incremental-basedir=/opt/backup/2020-04-25_22-18-35

生成目录:2020-04-25_22-23-49

备份恢复

备份恢复思路:将增量备份1、增量备份2...合并到完整备份,加到一起出来一个新的完整备份,将新的完整备份以拷贝的形式到数据库空目录。

1.5.3  日志回滚

#xtrabackup把备份过程中可能有尚未提交的事务或已经提交但未同步数据文件的事务,写到xtrabackup_logfile文件,所以要先通过这个日志文件回滚,把未完成的事务同步到备份文件,保证数据文件处于一致性。

innobackupex --apply-log --redo-only/opt/backup/2020-04-25_22-12-32

1.5.4  合并增量备份1到完整备份

innobackupex --apply-log --redo-only/opt/backup/2020-04-25_22-12-32--incremental-dir=/opt/backup/2020-04-25_22-18-35

1.5.5  合并增量备份2到完整备份

innobackupex --apply-log --redo-only/opt/backup/2020-04-25_22-12-32 --incremental-dir=/opt/backup/2020-04-25_22-23-49

备份恢复:

innobackupex --defaults-file=/etc/my.cnf--copy-back /opt/backup/2020-04-25_22-12-32

查看恢复日志序列号1588082525(1).jpg

1.5.6  备份恢复

innobackupex --defaults-file=/etc/my.cnf--copy-back /opt/backup/2020-04-25_22-12-32

1.5.7  修改恢复数据文件权限

chown -R mysql /usr/local/mysql/

1.5.8  启动MySQL,查看数据库恢复情况

systemctl restart mysqld


猜你喜欢

转载自blog.51cto.com/13836096/2491357