数据库应用_innobackupex备份与恢复

1.Percona软件介绍; 2.innobackupex的备份与恢复

一, Percona软件

在学习percona软件之前,我们看一下物理备份和mysqldump备份有哪些缺陷.

物理备份的缺点: 跨平台性能差,备份时间长,冗余备份,浪费存储空间;

mysqldump备份的缺点: 效率低,备份和还原速度慢,而且还要锁表;备份过程中,不能实现插入或更新数据.

因此,percona应运而生.

1.percona软件的优势

  能实现在线热备份,备份过程中不锁库,不锁表,比较适合我们的实际生产环境.

2.Percona软件的两个组件

  Xtrabackup: C程序,支持InnoDB/XtraDB 

  Innobackupex: Perl脚本封装xtrabackup,还支持MyISAM.

3.常用选项

二, innobackupex备份与恢复

内容概要: 1.完全备份与恢复; 2.增量备份与恢复; 3.单张表格的恢复.

1.数据的完全备份与恢复

   备份格式: innobackupex --user 用户名 --password 密码 备份目录名 --no-timestamp

   恢复格式: innobackupex --apply-log 目录名 //准备恢复数据

                  innobackupex --copy-bak 目录名  //恢复数据

                  innobackupex --copy-bak 目录名 //恢复数据

:

192.168.4.50上备份数据,192.168.4.51上恢复数据.

拓扑图:

主机192.168.4.50上备份数据:

50]# innobackupex -uroot -p123qqq...A /root/allbak --no-timestamp    //备份

50]# scp -r /root/allbak [email protected]:/root/    //上传备份数据到主机4.51

主机192.168.4.51上恢复数据:

51]#rpm -ivh libev-4.15       //安装percona依赖包

51]#yum -y install percona    //安装percona

51]#systemctl stop mysqld

51]#ls /var/lib/mysql     //查看文档内容

51]#rm -rf /var/lib/mysql/*     //清空文档内容

51]#Innobackupex --apply-log /root/allbak    //准备恢复数据

51]#Innobackupex --copy-back /root/allbak     //恢复数据

51]#ls /var/lib/mysql     //查看数据是否恢复

51]#ls /var/lib/mysql -l     //查看文件目录的所属权限root

51]#chown -R mysql:mysql /var/lib/mysql    //修改目录的所属权限为mysql

51]#systemctl restart mysqld   

mysql -uroot -p123qqq...A     //进入mysql

mysql> show databases; select * from db3.user    //查看数据恢复状况

2.数据的增量备份与恢复

备份格式: innobackupex --user 用户名 --password 密码 --incremental 增量目录 --incremental-basedir=目录名 --no-timestamp

恢复格式: innobackupex --apply-log --redo-only 目录名 --incremental-dir=目录名

:

在主机192.168.4.50上备份在主机192.168.4.51上恢复.

拓扑图:

主机192.168.4.50上备份:

50]#innobackupex --user root --password 123qqq...A /fullbak --no-timestamp     //完全备份数据

50]#ls /fullbak/    //查看备份状况

mysql>insert into db3.user2 values(“tom”);   //增加数据

mysql>insert into db3.user2 values(“jack”);   //增加数据

50]#innobackupex --user root --password 123qqq...A --incremental /new1dir --incremental-basedir=/fullbak --no-timestamp //增量备份1,存储到目录/new1dir

50]#ls /new1dir   //查看备份文件夹

50]#innobackupex --user root --password 123qqq...A --incremental /new2dir --incremental-basedir=/fullbak --no-timestamp //增量备份2,存储到目录/new2dir

50]#ls /new2dir  //查看备份文件夹

主机192.168.4.51上恢复数据:

51]#systemctl stop mysqld

51]#rm -rf /var/lib/mysql/*     //清空目录下的内容

51]# innobackupex --apply-log --redo-only /root/fullbak/     //恢复完全备份的数据

51]#innobackupex --apply-log --redo-only /root/fullbak/ --incremental-dir=/root/new1dir   //恢复第1次增量备份的数据

51]#rm -rf /root/new1dir/    //恢复完成后,清除数据,以免影响其它

51]#innobackupex --apply-log --redo-only /root/fullbak/ --incremental-dir=/root/new2dir  //恢复第2次增量备份的数据

51]#rm -rf /root/new2dir/   //恢复完成后,清除数据,以免影响其它

51]#innobackupex --copy-back /root/fullbak/    //拷贝文件到数据库,完成数据恢复

51]#chown -R mysql:mysql /var/lib/mysql    //修改所属权限为mysql

51]#systemctl restart mysqld

51]# mysql -uroot -p123qqq...A    

        mysql>show databases;  select * from db3.user2;   //进入数据库查看数据恢复状况

3.单张表格的恢复

db3库下的user2表为例:

mysql> alter table db3.user2 discard tablespace;   //删除表空间

#innobackupex --apply-log --export  /allbak; (导出后/allbak/db3/目录下会多出两个文件user2.cfguse2.exp)     //导出表信息

# cp -r /allbak/db3/user2.{cfg.exp,ibd}  /var/lib/mysql/db3/;     //拷贝表信息文件到数据库目录下

#chown mysql:mysql /var/lib/mysql/db3/user2.*     //修改表信息文件的归属权限为mysql

mysql>alter table db3.user2 import tablespace;     //导入表空间

#rm -rf /var/lib/mysql/db3/user2.cfg     //删除数据库下的表信息文件.cfg

#rm -rf /var/lib/mysql/db3/user2.exp     //删除数据库下的表信息文件.exp

Mysql>select * from db3.user2;     //查看表记录

结束.

猜你喜欢

转载自www.cnblogs.com/liusingbon/p/11028783.html