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 root@192.168.4.51:/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.cfg和use2.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; //查看表记录
结束.
原文:https://www.cnblogs.com/liusingbon/p/11028783.html