xtrabackup备份msyql数据库
admin
2023-06-09 03:21:23
0

 

简介:

Xtrabackup是由percona提供的mysql数据库备份工具,可以对Innodb数据库做热备

特点:

(1)备份过程快速、可靠

(2)备份过程不会打断正在执行的事务

(3)能够基于压缩等功能节约磁盘空间和流量

(4)自动实现备份检验

(5)还原速度快

准备工作:

1.安装xtrabackup(在percona官网下载rpm包)

# yum install percona-xtrabackup-2.2.3-4982.el6.x86_64.rpm

 

2.创建最小权限用户

 MariaDB [(none)]>grant reload,lock tables,replication client on *.* to 'backupuser'@'localhost' identified by 'backuppassword';

 

MariaDB [(none)]> flush privileges;

Query OK, 0 rows affected (0.04 sec)

 

开始备份:(模拟线上环境)

1.完全备份(生成的备份目录为2015-04-09_02-35-22)

# innobackupex --user=backupuser --password=backuppassword /backup/

若显示以下内容即为备份成功:

150409 02:35:25  innobackupex: Connection to database server closed

150409 02:35:25  innobackupex: completed OK!

 

若显示以下错误信息:在my.cnf文件[mysqld] 中添加innodb_log_file_size = 5M 

InnoDB: Error: log file ./ib_logfile0 is of different size 5242880 bytes

InnoDB: than specified in the .cnf file 50331648 bytes!

innobackupex: Error: The xtrabackup child process has died at /usr/bin/innobackupex line 2672.

 

 

2.在数据库插入数据,模拟msyqld正常线上运行第一天

MariaDB [(none)]> create database xx;

Query OK, 1 row affected (0.00 sec)

 

3.执行增量备份(生成2015-04-09_02-59-13,此时--incremental-basedir则应该指为完全备份的目录2015-04-09_02-35-22)

注意:增量备份仅能应用于InnoDB或XtraDB表,对于MyISAM表而言,执行增量备份时其实进行的是完全备份

 

# innobackupex --incremental /backup/ --incremental-basedir=/backup/2015-04-09_02-35-22/

显示以下信息即为增量备份成功:

innobackupex: MySQL binlog position: filename 'mysql-bin.000001', position 324

150409 02:59:18  innobackupex: Connection to database server closed

150409 02:59:18  innobackupex: completed OK!

 

4.再次在数据库插入数据,模拟mysqld正常线上运行第二天

MariaDB [(none)]> create database yy;

Query OK, 1 row affected (0.00 sec)

 

5.再次执行增量备份(生成2015-04-09_03-00-38,此时--incremental-basedi则应该指为上一次增量备份的目录2015-04-09_02-59-13)

# innobackupex --incremental /backup/ --incremental-basedir=/backup/2015-04-09_02-59-13/

 

6.再次在数据库插入数据,模拟mysqld正常线上运行第三天

MariaDB [(none)]> create database zz;

Query OK, 1 row affected (0.00 sec)

 

7.模拟事故,停掉mysqld,删除/data目录下的数据

注意:线上环境应该将二进制日志文件(binlog)和数据文件分开存放;

# service mysqld stop

说明:因为此处实验我并没有将二进制日志文件和数据分开存放,所以我先将二进制日志复制到其他目录再删除数据

# cp mysql-bin.000001  /backup/

# rm /data/* -rf

 

8.查看上一次增量备份,二进制日志最后记录position的位置

# cat /backup/2015-04-09_03-00-38/xtrabackup_binlog_info

mysql-bin.000001        479        

 

9.导出二进制日志,从最后备份的position开始

# mysqlbinlog mysql-bin.000001 --start-position="479">/backup/binlog.sql

 

恢复数据:

一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态

“准备”(prepare)增量备份与整理完全备份有着一些不同,尤其要注意的是:

(1)需要在每个备份(包括完全和各个增量备份)上,将已经提交的事务进行“重放”。“重放”之后,所有的备份数据将合并到完全备份上。

(2)基于所有的备份将未提交的事务进行“回滚”。

 

此时备份目录下的所有文件:

xtrabackup备份msyql数据库

按排列顺序:完全备份文件  第一次增量备份文件  第二次增量备份文件  导出的部分二进制日志文件  所有的二进制日志文件

 

 

1.整理合并备份文件

# innobackupex --apply-log --redo-only /backup/2015-04-09_02-35-22/

 

将第一个增量备份合并到完全备份中

# innobackupex --apply-log --redo-only /backup/2015-04-09_02-35-22/ --incremental-dir=/backup/2015-04-09_02-59-13/

 

将第二个增量备份合并到完全备份中

# innobackupex --apply-log --redo-only /backup/2015-04-09_02-35-22/ --incremental-dir=/backup/2015-04-09_03-00-38/

注意:假如我们在每周日晚上00:00点做完全备份,在周1-周6晚上00:00点做增量备份,刚好有用户一直在00:00点前一直在操作,并且在00:01分才提交事务,所以为了避免系统自动将备份时候未提交的事务做回滚操作,所以我们需要加上--redo-only参数,让其只提交事务,而不回滚事务。到最后系统会判定哪些是需要回滚的操作执行回滚

 

2.恢复操作

# innobackupex --copy-back /backup/2015-04-09_02-35-22/

 

3.改变恢复后数据目录(/data)下文件的属主属组为msyql

# chown -R mysql.mysql /data/*

 

4.查看数据库有备份的内容有无恢复

# service mysqld start

 

xtrabackup备份msyql数据库

可以看到备份的数据已经恢复

 

5.通过二进制日志恢复未来得及备份的数据

# mysql

 

xtrabackup备份msyql数据库

可以看到未来的及备份的数据也通过二进制日志恢复

 

-------------------------------完成。-------------------------------------

 

相关内容

热门资讯

特朗普:美伊协议“尚未完全谈妥... 新华社华盛顿5月24日电(记者颜亮 徐剑梅)美国总统特朗普24日说,美国和伊朗的协议“尚未完全谈妥”...
大幅升级改造!神舟二十三号飞船... 神舟二十三号飞船出征在即,作为新批次飞船的第二艘飞船,它有哪些改进?承担什么样的任务? 人机界面升...
原创 这... 在自然界,有一些动物通过模仿有毒的、有害的其它动物,来提高生存能力,也有一些动物通过模仿周围的环境来...
Windows竟然藏了一个工具... 快科技5月24日消息,据Neowin报道,Windows系统中有一个鲜为人知的“Windows To...
每天使用手机超过5小时,会发生... 刷手机这事 估计没人能逃得过 上班路上刷几条热搜 吃饭时配一段短视频 睡前躺在床上翻朋友圈、看抖音 ...
硅谷正在流行“氛围办公”:不敲... 这个春天开始,硅谷的办公室里,敲打键盘的哒哒声正在被嘀嘀咕咕的人声取代。 有风险投资人调侃,现在去硅...
抵达!神舟二十三号载人飞船与空... 据中国载人航天工程办公室消息,神舟二十三号载人飞船入轨后,于北京时间2026年5月25日2时45分,...
神舟二十三号载人飞船发射取得圆... 5月24日,搭载神舟二十三号载人飞船的长征二号F遥二十三运载火箭在酒泉卫星发射中心点火发射。神舟二十...
伊朗总统准备向世界保证不寻求核... 伊朗总统佩泽希齐扬5月24日在接受采访时表示,“伊朗准备向全世界保证,正如已故伊朗最高领袖阿里·哈梅...
火星上出现一摞整齐叠放的石头,... 那是谁干的? 毅力号火星车在火星上发现了一摞整齐叠放的石头。NASA / JPL-Caltech ...