一、安装软件
1.rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
2.yum -y install perl-DBD-mysql perl-Digest-MD5
3.rpm -ivh percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
4.rpm -ql percona-xtrabackup-24
提供2个备份命令
/usr/bin/innobackupex命令集成了命令xtrabackup,所以可以支持MYISAM存储引擎
/usr/bin/xtrabackup命令仅支持InnoDB和XtraDB存储引擎的表
二、innobackupex备份命令格式
innobackupex <选项>
常用选项
–user 用户名
–password 密码
–databases="库名"
–no-timestamp 不使用时间戳做备份文件的子目录名
–databases="库名" //单个库
–databases= "库名1 库名2" //多个库
–databases="库名.表名" /表
–redo-only 日志合并
–apply-log 准备还原 ( 回滚日志 )
–copy-back 恢复数据
–incremental 目录名 增量备份
–incremental–basedir=目录名 增量备份时,指定上一次备份数据存储的目录名
–incremental-dir= 目录名 准备恢复数据时,指定增量备份数据存储的目录名
–export 导出表信息 import 导入表空间(sql命令使用)
三、innobackupex完全备份/恢复
1.完全备份
innobackupex –user root –password 654321 –databases="mysql performance_schema sys gamedb" /allbak –no-timestamp
//备份4个库的所有数据,/allbak自己定义,必须为空,可以没有该文件夹,可以多层文件夹 ,不使用databases指定库备份所有数据库数据
2.完全恢复(要求数据库目录是空的)
思路:重做日志(–apply-log) 恢复数据(–copy-back) 重启数据库服务
(1)innobackupex –user root –password 123456 –apply-log /12/buydbfull/ //重做日志,使得数据文件处于一致性状态
(2)systemctl stop mysqld.service //停住服务
(3)rm -rf /var/lib/mysql/* //清空数据库目录
(4)innobackupex –user root –password 123456 –copy-back /allbak //恢复数据
(5)chown -R mysql:mysql /var/lib/mysql //修改权限
(6)systemctl restart mysqld //重启服务
(7)mysql -uroot -p123456 //进入数据库验证
三、innobackupex增量备份/恢复
backup-my.cnf //执行备份命令分配的系统资源 ibdata1.delta //.delta说明是增量备份
xtrabackup_checkpoints:记录备份类型 和lsn范围(提取的事务日志文件中LSN:日志序列号) lsn对比确定增量数据
backup_type: full-backuped(未重做日志) full-prepared(已重做日志) log-applied(重做合并日志)
1.增量备份
(1)做首次备份(完全备份)
innobackupex –user root –password 123456 –databases="mysql sys buydb performance_schema" /12/fullsb –no-timestamp
(2)插入新记录,执行增量备份 存放目录 /new1dir
–incremental 目录名 #增量备份 –incremental-basedir=目录名 #增量备份时,指定上一次备份文件存储的目录名
insert into ss values(8080),(8080);
innobackupex –user root –password 123456 –databases="mysql sys buydb performance_schema" –incremental /12/new1dir –incremental-basedir=/12/fullsb –no-timestamp
插入新记录,执行增量备份 存放目录 /new2dir
insert into ss values(8099),(8099);
innobackupex –user root –password 123456 –databases="mysql sys buydb performance_schema" –incremental /12/new2dir –incremental-basedir=/12/new1dir –no-timestamp
2.增量恢复
思路:重做合并日志 停止服务 清空数据库目录 恢复数据 启动服务
–apply-log准备恢复数据 –redo-only合并日志 –incremental-dir=目录名 #增量恢复数据时指定备份目录名称 –copy-back 恢复数据
(1)innobackupex –user root –password 123456 –apply-log –redo-only /12/fullsb //按顺序重做合并日志,同时也会合并备份数据
(2)innobackupex –user root –password 123456 –apply-log –redo-only /12/fullsb –incremental-dir=/12/new1dir
(3)innobackupex –user root –password 123456 –apply-log –redo-only /12/fullsb –incremental-dir=/12/new2dir
(4)systemctl stop mysqld.service //停止服务
(5)rm -rf /var/lib/mysql/* //清空数据库目录
(6)innobackupex –copy-back /12/fullsb/ //拷贝备份文件到数据库目录
(7)chown -R mysql:mysql /var/lib/mysql //修改文件的所有者/组mysql
(8)systemctl restart mysqld //重启数据库服务
(9)mysql -uroot -p654321 //进入数据库验证
四、使用完全备份文件恢复单个表
–export 导出表信息 *.ibd 表空间文件
mysql> alter table 库.表 discard tablespace; 删除表空间
mysql> alter table 库.表 import tablespace; 导入表空间
innobackupex –user root –password 123456 –databases="buydb" /12/buydb1 –no-timestamp //完全备份
drop table buydb.b; //误删除b表
mysql> create table b (name char(15)); //按照备份时的表结构创建删除的表
innobackupex –user root –password 123456 –databases="buydb" –apply-log –export /12/buydb1 //使用备份文件导出表信息
mysql> alter table buydb.b discard tablespace; //删除创建表的表空间文件
cp /12/buydb1/buydb/b.{cfg,exp,ibd} /var/lib/mysql/buydb/ //把导出的表信息文件,拷贝到对应的数据库目录下
chown mysql:mysql /var/lib/mysql/buydb/b.* //修改权限
mysql> alter table b import tablespace; //导入表空间
mysql> select * from studb.a; //验证
rm -rf /var/lib/mysql/buydb/b.{cfg,exp} //删除不必要的表
未经允许不得转载:天府数据港官方信息博客 » mysql备份-innobackupex
客官点个赞呗! (0)