使用第三方工具来备份mysql-----perconamysql
1、前期准备工做:sql
一、安装依赖包:yum -y install perl-Digest-MD5 perl-DBD-MySQL数据库
rpm -ivh libev-4.15-1.el6.rf.x86_64.rpmapp
二、安装主包: percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpmide
percona是一款在线热备工具工具
三、包含两个组件:spa
/usr/bin/xtrabackup :支持innodb和xtraDB(增量备份)命令行
/usr/bin/innobackupex :支持innodb和myisam(只支持全备,不支持增量)rest
四、innobackupex 包含的一些选项日志
--user 用户名
--password 密码
--databases 库名
--no-timestamp 不使用系统日期作备份目录的子目录名
--apply-log 恢复日志
--copy-back 恢复数据
2、彻底备份和彻底恢复
一、彻底备份
innobackupex --user root --password 123456 --database="mysql db66 performance sys"
--no-timestamp /allbak //指定备份三个数据库,生成的备份文件目录不用系统时间作目录名
二、恢复数据时,数据库目录为空,三个系统库必须备份进去
首先恢复日志:innobackupex --user root --password 123456 --apply-log /allbak
删除数据库目录: rm -rf /var/lib/mysql
建立数据库目录: mkdir /var/lib/mysql
恢复数据:innobackupex --user root --password 123456 --copy-back /allbak/
赋予数据目录权限:chown -R mysql:mysql /var/lib/mysql
重启服务,验证:systemctl restart mysqld
3、增量备份和增量恢复
一、在增量备份以前先作一次彻底备份。
innobackupex --user root --password 123456
--databases="performance_schema sys mysql db666"
--no-timestamp /onebak
二、第一次增量备份
innobackupex --user root --password 123456 //指定用户名密码
--databases="performance_schema sys mysql db666" //指定须要备份的数据库
--incremental /new1 //指定增量备份的路径
--incremental-basedir=/onebak //指定以哪一个备份来作为增量备份的参考
--no-timestamp
三、第二次增量备份:
innobackupex --user root --password 123456
--databases="performance_schema sys mysql db666"
--incremental /new2 //第二次增量备份的路径
--incremental-basedir=/new1 //以上次增量备份作为参考来作增量备份
--no-timestamp
四、增量恢复的文件目录说明
xtrabackup_checkpoints xtrabackup_logfile //这两个文件记录修改的lsn号
五、恢复步骤
A、删除数据目录下的文件:rm -rf /var/lib/mysql/*
B、恢复日志---彻底备份的日志
innobackupex --user root --password 123456
--databases="performance_schema sys mysql db666"
--apply-log --redo-only //恢复日志,并合并日志
/onebak --no-timestamp
C、恢复第一次增量的备份(只须要恢复日志,日志合并便可)
innobackupex --user root --password 123456
--databases="performance_schema sys mysql db666"
--apply-log --redo-only /onebak //源日志路径
--incremental-dir=/new1 --no-timestamp //需合并的日志文件的路径
D、恢复第二次增量的备份
innobackupex --user root --password 123456
--databases="performance_schema sys mysql db666"
--apply-log --redo-only /onebak //源日志文件的路径
--incremental-dir=/new2 --no-timestamp //第二次增量备份合并的日志
E、恢复数据,只需还原全备份里面的,由于增量备份的内容已经合并到全备里面
innobackupex --user root --password 123456 --copy-back /onebak
F、给数据目录给权限,重启服务验证
chown -R mysql:mysql /var/lib/mysql
systemctl restart mysqld
4、恢复彻底备份数据中的单张表
一、export //导出表信息 import //导入表空间
删除表空间:alter table 表 discard tablespace;
二、备份单个数据库:
innobackupex --user root --password 123456
--databases="mydb" --no-timestamp /mydb //只备份一个数据库
三、删除表,建立表(表字段必需要和之前的同样,模拟表丢失
drop table t1; create table t1(id int);
四、导出表信息:用到的参数是--export
innobackupex --user root --password 123456 --databases="db66" --apply-log --export /db66
五、删除表空间:在mysql命令行里操做
alter table db66.t1 discard tablespace;
六、把备份目录下导出的表信息拷贝到数据库目录下,并给权限
cp /db66/db66/t1.{cfg,exp,ibd} /var/lib/mysql/db66/
chown mysql /var/lib/mysql/db66/t1.*
七、导入表空间
alter table db66.t1 import tablespace;
八、验证:select * from db66.t1;