文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

xtrabackup备份msyql数据库

2024-04-02 19:55

关注

 

简介:

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 <binlog.sql

 

xtrabackup备份msyql数据库

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

 

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

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯