Percona备份工具-innobackupex

本文详细介绍使用Percona工具进行MySQL数据库的完全备份、增量备份及恢复过程,包括备份命令的使用、数据恢复步骤及注意事项。

使用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	#重启服务

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

做基本完整的备份策略,按备份策略使用percona-xtrabackup做全量和增量备份并模拟数据损坏恢复数据为完整一致。 1)下载 xtrabackup wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/tarball/percona-xtrabackup-2.4.4-Linux-x86_64.tar.gz 2)解压 # tar zxf percona-xtrabackup-2.4.4-Linux-x86_64.tar.gz 3)进入解压目录 # cd percona-xtrabackup-2.4.4-Linux-x86_64/ 4)复制 bin 下的所有程序到/usr/bin [root@localhost percona-xtrabackup-2.4.4-Linux-x86_64]# cp bin/* /usr/bin/ 5)安装相关插件 #yum install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-TermReadKey.x86_64 perl-Digest-MD5 –y 6)下载 percona-toolkit 并安装 #wget https://www.percona.com/downloads/percona-toolkit/2.2.19/RPM/percona-toolkit-2.2.19-1.noarch.rpm # rpm -vih percona-toolkit-2.2.19-1.noarch.rpm 完全备份: 语法:# innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/ # innobackupex --user=root --password=123456 /opt/mysqlbackup/full 增量备份二进制文件: #mysqlbinlog --start-position=2378 /usr/local/mysql/data/mysql-bin.000023 > /opt/mysqlbackup/inc/`date +%F`.sql 模拟数据库损坏: 例 : # rm -fr /home/mysql/data/* 还原完全备份: # innobackupex --apply-log /opt/mysqlbackup/full/2016-09-12_11-29-55/ --apply-log 指明是将日志应用到数据文件上,完成之后将备份文件中的数据恢复到数据库中。 注:/opt/mysqlbackup/full/2016-09-12_11-29-55/备份文件所在目录名称 还原数据库: # innobackupex --copy-back /opt/mysqlbackup/full/2016-09-12_11-29-55/ 这里的--copy-back 指明是进行数据恢复。数据恢复完成之后,需要修改相关文件的权限 mysql 数据库才能正常启动。 # chown -R mysql:mysql /usr/local/mysql/data/ 必须重启 MySQL: # systemctl restart mysqld 验证还原后的数据:
最新发布
06-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值