Percona备份工具-innobackupex

使用mysql提供的mysqldump备份,binlog日志备份的效率比较低。在数据备份的过程中会锁表。
Percona是mysql的一个分支,可以对mysql做热备份。备份时不锁表。
使用Percona可以做完全备份,增量备份。

Percona提供了两个备份命令:
1、xtrabackup:可以做完全备份,仅能对InnoDB、XtarDB存储引擎对增量备份。
2、innobackupex:在xtarbackup的基础上增加了对MYISAM存储引擎的增量备份。

安装percona:
	rpm -ivh libev-4.03-3.el6.x86_64.rpm	#安装percona依赖
	yum -y install percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm	#安装percona

完全备份:

完全备份:(192.168.4.50)
	innobackupex --user root --password 123456 /fullbak --no-timestamp
	# /fullbak表示了备份数据存放的位置
	# --no-timestamp表名不在/fullbak下创建一备份时间为名字的目录


完全恢复:(192.168.4.51,目的主机也要安装percona)
	1、把备份文件拷贝到目的主机
	scp /fullbak root@192.168.4.51:/
	
	2、清空数据库文件
	rm -fr /var/lib/mysql/*	
	
	3、准备恢复数据
	innobackupex--apply-log  --redo-only /fullback
	
	4、使用percona命令把数据拷贝到 /var/lib/mysql下
	innobackupex --copy-back /fullback	
	
	5、拷贝完毕之后/var/lib/mysql下的所有文件的所有者都是root,因此要修改文件所有者
	chown -R mysql:mysql /var/lib/mysql
	systemctl restart mysqld	#重启服务

恢复单张表的数据:(192.168.4.50)

备份test数据库:
innobackupex --user root --password 123456 /table_bak --databases="test" --no-timestamp
# /table_bak表示了备份数据存放的位置
# --databases="test"指明了需要备份的数据库为test
# 可以是多个表:db1 db2 db3
# 可以是某个数据库下的表:db1.table1
# 如果没有这个字段则表示备份所有数据库

删除test数据库下的user表的数据:
mysql> delete from user;

恢复user表的数据:
	1、删除表空间:
	mysql> alter table test.user discard  tablespace;
	# 在/var/lib/mysql/test中有.ibd .rfm文件
	# .ibd代表的是表空间文件,存放的是表的数据
	# .rfm存放的是表的结构
	
	2、在备份目录下导出表信息:
	innobackupex --apply-log --export  /table_bak
	
	3、把导出的表信息拷贝到数据库目录下:
	cp /allbak/test/user.{cfg,exp,ibd} /var/lib/mysql/test/
	# .cfg .exp是备份相关文件
	
	4、修改文件所有者:
	chown mysql:mysql /var/lib/mysql/test/user*  
	
	5、导入表空间:
	mysql> alter  table test.user   import  tablespace;

	6、删除无关文件
	rm -rf /var/lib/mysql/test/user.cfg
	rm -rf /var/lib/mysql/test/user.exp
	# 不删除在之后会影响数据库工作
	systemctl restart mysqld	#重启服务

增量备份:第一次一定是完全备份,之后才可以增量备份

完全备份:(192.168.4.50)
innobackupex --user root --password 123456  /fullbak --no-timestamp

第一次增量备份:
nnobackupex --user root --password 123456 --incremental /inc_bak1 \
--incremental-basedir=/fullbak  --no-timestamp
# --incremental /inc_bak1代表增量备份的目录是 /inc_bak1
# --incremental-basedir=/fullbak代表上一次备份的目录是/fullbak

第二次增量备份:
nnobackupex --user root --password 123456 --incremental /inc_bak2 \
--incremental-basedir=/inc_bak1  --no-timestamp
# --incremental /inc_bak2代表增量备份的目录是 /inc_bak2
# --incremental-basedir=/inc_bak1代表上一次备份的目录是/inc_bak1


增量恢复:(192.168.4.51,根据日志进行合并)
1、把相关备份文件拷贝到51主机上:
	scp /fullbak root@192.168.4.51:/
	scp /inc_bak1 root@192.168.4.51:/
	scp /inc_bak2 root@192.168.4.51:/

2、清空数据库目录:
	rm -fr /var/lib/mysql

3、准备恢复数据:
	innobackupex --apply-log --redo-only /fullbak #准备恢复数据

4、合并日志:(由于做了两次增量备份,所以需要合并两次)
	innobackupex --apply-log --redo-only /fullbak --incremental-dir=/inc_bak1	#合并日志
	innobackupex --apply-log --redo-only /fullbak --incremental-dir=/inc_bak2	#合并日志
	# 由于日志已经合并,所以删除增量备份,释放资源
	rm-fr /inc_back1
	rm -fr /inc_back2

5、使用percona命令把数据拷贝到 /var/lib/mysql下
	innobackupex --copy-back /fullbak

6、修改/var/lib/mysql/*的所有者
	chown  -R mysql:mysql /var/lib/mysql
	systemctl restart mysqld	#重启服务

写总结的第三十六天!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值