物理备份缺点:跨平台性差,备份时间长,冗余备份,浪费存储空间
mysqldump备份缺点:效率比较底,备份和还原速度慢,备份过程中,数据插入和更新操作会被锁也就是挂起、
XtarBackup工具:备份过程中不锁库表,适合生产环境,由专业组织percona提供,主要含有两个组件:
xtrabackup:C程序,支持innoDB/XtraDB ----该主件只支持这两种表
innobackupex:以Perl脚本封装xtrabackup还支持Myisam ---都可以备份,但是是对完全备份Myisam,对innoDB/XtraDB是增量备份。
安装包
libev-4.15-1.el6.rf.x86_64.rpm
percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
perl-DBD-MySQL.x86_64.0.4.023-5.el7
perl-Digest-MD5.x86_64.0.2.52-3.el7
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema | 当前运行的加载到内存的值,虚拟库,不存在
| mysql | 当前的授权库
| performance_schema | 已有库和表的信息,视图,存储过程 ---删了服务器就挂了
| sys 当前服务器的运行参数
[root@host51 ~]# innobackupex --host localhost --user root --password 123456 /hhh
[root@host51 ~]# cd /hhh/
[root@host51 hhh]# ls
2018-07-27_22-03-20
[root@host51 hhh]# cd 2018-07-27_22-03-20/
[root@host51 2018-07-27_22-03-20]# ls
backup-my.cnf ibdata1 performance_schema xtrabackup_binlog_info xtrabackup_info zhuhaicheng
ib_buffer_pool mysql sys xtrabackup_checkpoints xtrabackup_logfile zhuhaiyan
备份的文件不用搭上时间的标签
[root@host51 ~]# innobackupex --host localhost --user root --password 123456 /zhy --no-timestamp
[root@host51 ~]# cd /zhy/
[root@host51 zhy]# ls
backup-my.cnf ibdata1 performance_schema xtrabackup_binlog_info xtrabackup_info zhuhaicheng
ib_buffer_pool mysql sys xtrabackup_checkpoints xtrabackup_logfile zhuhaiyan
完全备份
完全恢复
数据增量备份、恢复
启用MySQL服务的binlog实现对数据的实时增量备份:
启用日志 ROW STATEMENT MIXED
自定义日志文件存储目录和文件名
mysqlbinlog 文件名
记录sql命令的方式:时间点 偏移量
完全备份
备份库的全部的信息
[root@host51 ~]# innobackupex -uroot -p123456 --databases="zhuhaiyan" /datazhuhaiyan --no-timestamp
备份指定库的所有数据
[root@host51 ~]# innobackupex -uroot -p123456 --databases="zhuhaiyan.a" /zhuhaiyana --no-timestamp
备份指定表的所有数据
[root@host51 ~]# innobackupex --host localhost --user root --password 123456 /hhh
当恢复文件的时候要求数据库的目录是空的
rm -rf /var/lib/mysql/*
当只是备份了单个的数据库还需要备份某个表,这样才可以使得mysql可以正常启动
| mysql | 当前的授权库
| performance_schema | 已有库和表的信息,视图,存储过程 ---删了服务器就挂了
| sys 当前服务器的运行参数
[root@host51 ~]# innobackupex --user root --password 123456 --databases="mysql sys performance_schema zhuhaiyan" /zhuss --no-timestamp
[root@host51 ~]# ls /zhuss
backup-my.cnf ibdata1 performance_schema xtrabackup_binlog_info xtrabackup_info zhuhaiyan
ib_buffer_pool mysql sys xtrabackup_checkpoints xtrabackup_logfile
完全恢复(要求数据库目录为空)
重做日志 --apply-log
恢复数据 --copy-back
步骤:
重做日志
[root@host51 ~]# innobackupex --user root --password 123456 --apply-log /zhuss
清空数据库目录
[root@host51 ~]# systemctl stop mysqld
[root@host51 ~]# rm -rf /var/lib/mysql/*
[root@host51 ~]# ls /var/lib/mysql
恢复数据
[root@host51 ~]# innobackupex --user root --password 123456 --copy-back /zhuss
重启数据库服务
[root@host51 ~]# chown -R mysql:mysql /var/lib/mysql
[root@host51 ~]# systemctl restart mysqld
具体的步骤:
重做日志前
[root@host51 ~]# cat /zhuss/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 2573975
last_lsn = 2573984
compact = 0
recover_binlog_info = 0
重做日志后
[root@host51 zhuss]# cat xtrabackup_checkpoints
backup_type = full-prepared
from_lsn = 0
to_lsn = 2573975
last_lsn = 2573984
compact = 0
recover_binlog_info = 0
innobackupex增量备份、恢复
做首次命令
[root@host51 ~]# innobackupex --user root --password 123456 --databases="mysql sys performance_schema zhuhaiyan" /fullzhuss --no-timestamp
[root@host51 ~]# ls /fullzhuss/
backup-my.cnf ibdata1 performance_schema xtrabackup_binlog_info xtrabackup_info zhuhaiyan
ib_buffer_pool mysql sys xtrabackup_checkpoints xtrabackup_logfile
写入数据,做增量备份
insert into zhuhaiyan.a values(10); [写1-10]
做增量备份
[root@host51 ~]# innobackupex --user root --password 123456 --databases="mysql sys performance_schema zhuhaiyan" --incremental /newdir --incremental-basedir=/fullzhuss --no-timestamp
[root@host51 ~]# ls /fullzhuss
backup-my.cnf ibdata1 performance_schema xtrabackup_binlog_info xtrabackup_info zhuhaiyan
ib_buffer_pool mysql sys xtrabackup_checkpoints xtrabackup_logfile
[root@host51 ~]# ls /newdir
backup-my.cnf ibdata1.meta sys xtrabackup_info
ib_buffer_pool mysql xtrabackup_binlog_info xtrabackup_logfile
ibdata1.delta performance_schema xtrabackup_checkpoints zhuhaiyan
[root@host51 ~]# innobackupex --user root --password 123456 --databases="mysql sys performance_schema zhuhaiyan" --incremental /newdir1 --incremental-basedir=/newdir --no-timestamp
[root@host51 ~]# ls /newdir
backup-my.cnf ibdata1.meta sys xtrabackup_info
ib_buffer_pool mysql xtrabackup_binlog_info xtrabackup_logfile
ibdata1.delta performance_schema xtrabackup_checkpoints zhuhaiyan
[root@host51 ~]# ls /newdir1
backup-my.cnf ibdata1.meta sys xtrabackup_info
ib_buffer_pool mysql xtrabackup_binlog_info xtrabackup_logfile
ibdata1.delta performance_schema xtrabackup_checkpoints zhuhaiyan
innobackupex对innodb和xtrdb是增量表
innodb支持事务和事务回滚,当使用事务和事务回滚的时候使用的是事务日志
/var/lib/mysql/事务日志文件
ib_logfile1 ---记录正确完成的sql命令
ib_logfile0
ibdata1 ---记录未提交的sql命令 LSN日志序列号
xtrabackup_checkpoints
内容中的lsn是从/var/lib/mysql/中的ibdata1提出来的
backup_type = full-prepared
from_lsn = 0
to_lsn = 2573975
last_lsn = 2573984
compact = 0
recover_binlog_info = 0
backup-my.cnf --备份用的系统资源的参数
增量恢复
增量备份目录名 --incremental-dir=
重做并合并日志
--apply-log --redo-only
[root@host51 /]# innobackupex --user root --password 123456 --apply-log --redo-only /fullzhuss/
[root@host51 /]# innobackupex --user root --password 123456 --apply-log --redo-only /fullzhuss --incremental-dir=/newdir
[root@host51 /]# innobackupex --user root --password 123456 --apply-log --redo-only /fullzhuss --incremental-dir=/newdir1
清空数据库目录
[root@host51 /]# systemctl stop mysqld
[root@host51 /]# rm -rf /var/lib/mysql/*
[root@host51 /]# ls /var/lib/mysql
恢复数据
[root@host51 /]# innobackupex --copy-back /fullzhuss
[root@host51 ~]# chown -R mysql:mysql /var/lib/mysql ---如果设置权限将打不开数据库
[root@host51 /]# systemctl start mysqld