数据库备份与恢复(XtraBackup)

使用XtraBackup工具
特点:一款强大的在线热备份工具
–备份过程中不锁定表,适合生产环境
–有专业组织Percona提供(改进Mysql分之)
主要包含两个组件:
–xtrabackup:C程序,支持InnoDB/XtraDB
–innobackupex:以Perl脚本封装xtrabackup,还支持MyISAM

安装percona
#rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
#yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

命令帮助
innobackupex --help //常用选项
man innobackupex //详细帮助

innobackupex命令常用选项
–host 主机名
–user 用户名
–port 端口号
–password 密码
–databases 数据库名
–no-timestamp 不用日期命名

innobackupex命令常用选项(续)
–redo-only 日志合并
–apply-log 准备恢复数据
–copy-back 拷贝数据
–incremental 目录名 增量备份
–incremental-basedir=目录名 增量备份时,指定上一次备份数据存储的目录名
–incremental-dir=目录名 准备恢复数据时,制定增量备份数据存储的目录名
–export 导出表信息
import 导入表空间

命令格式
完全备份
#innobackupex --user 用户名 --password 密码 备份目录名–no-timestamp
完全恢复
#innobackupex --apply-log 目录名 //准备恢复数据
#innobackupex --copy-back 目录名 //恢复数据
增量备份
#innobackupex --user 用户名 --password 密码 --incremental 增量目录 --incremental-basedir
=目录名 --no-timestamp
增量恢复
#innobackupex --apply-log --redo-only 目录名 --incremental-dir=目录名 //准备恢复数据
#innobackupex --copy-back 目录名 //恢复数据

完全备与增量备

完全备份:
#innobackupex --user root --password 密码 /allbak --no-timestamp

增量备份:
#innobackupex --user root --password 密码 --incremental /new1dir --incremental-basedir=/allbak --no-timestamp

增量备份2:
#innobackupex --user root --password 密码 --incremental /new2dir --incremental-basedir=/new1dir --no-timestamp

完全恢复:
#systemctl stop mysqld #先关闭数据库
#rm -rf /var/lib/mysql/* #清空旧的
#innobackupex --apply-log /allbak //准备恢复数据
#innobackupex --copy-back /allbak //恢复数据
#chown -R mysql:mysql /var/lib/mysql/ //增加权限
#systemctl start mysqld //启动服务检查结果

恢复单张表
流程:
1.删除表空间
2.导出表信息
3.拷贝表信息文件到数据库目录下
4.修改表信息文件的所有者和组用户为mysql
5.导入表空间
6.删除数据库目录下的表信息文件
7.查看表记录

相关命令:
mysql> alter table 库名.表名 discard tablespace; //删除表空间
#innobackupex --apply-log --export 数据完全备份目录 //导出表信息
#cp 数据完全备份目录/数据库名目录/表名.{ibd,cfg,exp} 数据库目录/库名目录/ //拷贝表信息文件
#chown mysql:mysql 数据库目录/库名 //修改权限
mysql > alter table 库名.表名 import tablespace; //导入表空间
mysql > select * from 库名.表名; //查看表记录
#rm -rf 数据库目录/库名/表名.{cfg,exp} //删除表信息文件

增量恢复
#systemctl stop mysqld
#rm -rf /var/lib/mysql/*
#innobackupex --apply-log --redo-only /allbak //完全恢复
#innobackupex --apply-log --redo-only /allbak --incremental-dir=/new1dir //恢复增量
#cat /allbak/xtrabackup_checkpoints //查看文件发现backup_type = log-applied(之前是full-backuped)
#innobackupex --copy-back /allbak //拷贝文件
#chown -R mysql:mysql /var/lib/mysql;
#systemctl start mysqld

补充:差异备份
周一 innobackupex --user root --password 123456 /fullbak --no-timestamp
周二 innobackupex --user root --password 123456 --incremental /new1dir --incremental-basedir=/fullbak --no-timestamp
周三 innobackupex --user root --password 123456 --incremental /new2dir --incremental-basedir=/fullbak --no -timestamp
周四 innobackupex --user root --password 123456 --incremental /new3dir --incremental-basedir=/fullbak --no-timestamp
周五 innobackupex --user root --password 123456 --incremental /new4dir --incremental-basedir=/fullbak --no-timestamp

发布了18 篇原创文章 · 获赞 23 · 访问量 3091

猜你喜欢

转载自blog.csdn.net/qq_42130112/article/details/103469239
今日推荐