xtrabackup备份还原MySQL数据库

mysqldump 备份鉴于其自身的某些特性(锁表,本质上备份出来insert脚本或者文本,不支持差异备份),不太适合对实时性要求比较高的情况
Xtrabackup可以解决mysqldump存在的上述的一些问题,生产环境应用的也会更多一些。
本文简单测试一下Xtrabackup对MySQL数据库的备份还原操作。

本着先把功能先撸起来再深入细节的原则,粗略地实现了一个备份还原,并未深入细节。

网上有不少xtrabackup的文章,因为环境不一样,有些需要配置xtrabackup的配置文件,
但是我在xtrabackup 2.4.7版本下测试就需要需求任何配置文件。可能是每个版本都的细节上都不一样,因此参考资料的时候要注意版本和环境。

innobackupex 备份

xtrabackup和MySQL的版本如下

完整备份

代码如下:

innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --socket=/var/lib/mysql/mysql.sock /data/backup

说明:

1.--defaults-file=/etc/my.cnf文件必须在最前面
2.--user=root --password=root,--use=***与 --password=*** 中间一定要有空格,

如截图,完整备份完成

如截图,完整备份会创建一个日期(年月日时分秒,yyyy-MM-dd_hh-mm-ss)命名的文件
完整备份出来的内存,实际上是对所备份的数据库的数据文件的copy加上备份时候产生的一些信息,比如xtrabackup_checkpoints就是当前完整备份的一些个信息,这个信息对差异备份非常重要。

  差异备份

  差异备份之所以能够做到差异,就是依赖于完整备份的,在完整备份的基础上进行完整备份之后的差异的备份。
  而如何确定完整的备份之后备份到哪里,就依赖于完整备份之后的xtrabackup_checkpoints这个文件的。
  innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --socket=/var/lib/mysql/mysql.sock --incremental /data/backup --incremental-basedir=/data/backup/2017-06-22_13-40-29

如截图,差异备份完成

如果在进行差异备份的时候,指定的完整备份的文件错误或者是未指定完整备份文件,会发现xtrabackup提示找不到xtrabackup_checkpoints这个文件。

innobackupex 还原

  准备阶段

  1、恢复完整备份,也即完整备份应用(--apply-log)日志
    innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only --socket=/var/lib/mysql/mysql.sock /data/backup/2017-06-22_13-40-29

  2、分别将增量备份应用到完整备份
    innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only --socket=/var/lib/mysql/mysql.sock --incremental /data/backup/2017-06-22_13-40-29 --incremental-basedir=/data/backup/2017-06-22_13-41-48

  如果有多个差异备份,分别应用差异备份到完整备份。

  恢复阶段

  1、完成差异备份的全部应用到完整备份之后,将恢复后的差异备份copy到原数据目录
    默认情况下,如果数据路径下存在文件,则copy失败,需要清空数据文件路径下的文件。
    innobackupex --copy-back /data/backup/2017-06-22_13-40-29
    如截图,完成copy-back

  2、启动MySQL服务

  启动mysql服务,发现启动失败

看一下错误日志(启动错误信息),mysql5.7yum安装默认的errorlog位于/var/log/mysqld.log中,且默认不会滚动,意味着所有的错误信息都记录在这个文件中。

  数据文件还原之后,需要读数据文件路径授予可读写的权限
  这里直接授权数据文件路径777,chmod -R 777 /var/lib/mysql
  然后启动mysql服务,可以正常启动。

xtrabackupex才刚刚开始,留下一大堆问题,有时间再一个一个验证。

  1、怎么实现单个库(表)的备份与还原,毕竟实际环境中,因为每个库备份的频率和方式(备份方案)是不一样的?

  2、怎么用全备+差异备份然后结合二进制日志做基于时间点的方式还原?

  3、如何验证备份文件的有效性?

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • MySQL使用xtrabackup进行备份还原操作

    本文实例为大家分享了xtrabackup备份还原的具体代码,供大家参考,具体内容如下 使用rpm包安装xtrabackup ## 安装依赖包 yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL rsync ## 安装libev4包 rpm -ivh libev4-4.15-7.1.x86_64.rpm ## 安装percona-xtrabackup rpm -ivh percona-x

  • 使用xtrabackup实现mysql备份

    下载地址:https://www.percona.com/downloads/XtraBackup/ 安装xtrabackup [root@node1 ~]# yum install percona-xtrabackup 完全备份 节点一 修改配置文件,设置为每张表单独一个表空间,此项必须在安装数据库的时候就设置 [root@node1 ~]# vim /etc/my.cnf [mysqld] innodb_file_per_table=ON 创建备份目录 [root@node1 ~]# mkd

  • 安装使用Percona XtraBackup来备份恢复MySQL的教程

    1.安装XtraBackup yum的安装方法: 自动 $ rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm 然后会看到: Retrieving http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm Preparing... ################

  • 利用Xtrabackup工具备份及恢复(MySQL DBA的必备工具)

    Xtrabackup------MySQL DBA的必备工具 注意: 1)文档参照http://www.percona.com/docs/wiki/percona-xtrabackup:start 2)mysql要使用5.1.50版本或以上. 一.Xtrabackup简介及安装 1.Xtrabackup  是percona的一个开源项目,可以热备份innodb ,XtraDB,和MyISAM(会锁表),可以看做是InnoDB Hotbackup的免费替代品. Percona Support fo

  • MySQL中使用innobackupex、xtrabackup进行大数据的备份和还原教程

    大数据量备份与还原,始终是个难点.当MYSQL超10G,用mysqldump来导出就比较慢了.在这里推荐xtrabackup,这个工具比mysqldump要快很多. 一.Xtrabackup介绍 1.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtrabackup有两个主要的工具:xtrabackup.innobackupex 1.xtraback

  • 编写脚本令Xtrabackup对MySQL数据进行备份的教程

    Xtrabackup备份恢复原理 备份innodb表时,xtrabackup若干个线程拷贝独立表空间的.ibd文件,并不停监视此过程中redo log的变化,添加到自己的事务日志文件(xtrabackup_logfile)中.在此过程中,发生的物理写操作越多,xtrabackup_logfile越大.在拷贝完成后的第一个prepare阶段,xtrabackup采用类似于innodb崩溃恢复的方法,把数据文件恢复到与日志文件一致的状态,并把未提交的事务回滚.如果同时需要备份myisam表以及inn

  • linux Xtrabackup安装及使用方法

    Xtrabackup有两个主要的工具:xtrabackup.innobackupex (1)xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表 (2)innobackupex-1.5.1则封装了xtrabackup,是一个脚本封装,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁 (3)使用帮助:http://www.percona.com/docs/wiki/percona-xtrabackup:start 环境:C

  • Xtrabackup使用指南 InnoDB数据备份工具

    一.Xtrabackup介绍 A.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtrabackup有两个主要的工具:xtrabackup.innobackupex 1.xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表 2.innobackupex是参考了InnoDB Hotbackup的innoback

  • mysql xtrabackup 备份恢复实现分享

    简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份过程快速.可靠: (2)备份过程不会打断正在执行的事务: (3)能够基于压缩等功能节约磁盘空间和流量: (4)自动实现备份检验: (5)还原速度快: Xtrabackup中包含两个工具: * xtrabackup - 用于热备份innodb, xtradb表的工具,不能备份其他表. * innobackupex

  • xtrabackup备份还原MySQL数据库

    mysqldump 备份鉴于其自身的某些特性(锁表,本质上备份出来insert脚本或者文本,不支持差异备份),不太适合对实时性要求比较高的情况 Xtrabackup可以解决mysqldump存在的上述的一些问题,生产环境应用的也会更多一些. 本文简单测试一下Xtrabackup对MySQL数据库的备份还原操作. 本着先把功能先撸起来再深入细节的原则,粗略地实现了一个备份还原,并未深入细节. 网上有不少xtrabackup的文章,因为环境不一样,有些需要配置xtrabackup的配置文件, 但是我

  • PHP备份/还原MySQL数据库的代码

    以下是代码: 一.备份数据库并下载到本地[db_backup.php] 复制代码 代码如下: <?php // 设置SQL文件保存文件名 $filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql"; // 所保存的文件名 header("Content-disposition:filename=".$filename); header("Content-type:a

  • 命令行模式下备份、还原 MySQL 数据库的语句小结

    为了安全起见,需要经常对数据库作备份,或者还原.对于 MySQL 而言,最方便的方法可能就是用 phpMyAdmin 的导出.导入功能了,但如果你的数据库体积比较大,作为 Web 应用的 phpMyAdmin 可能会遭遇"超时"而操作失败.所以,学会在命令行模式下备份.还原数据库,还是很有必要的. 1.备份数据库 在 Linux 命令行模式下备份 MySQL 数据库,用的是 mysqldump 命令: 复制代码 代码如下: mysqldump -u mysqluser -p test_

  • 教你如何恢复使用MEB备份的MySQL数据库

    恢复使用MEB备份的MySQL数据库,执行一个普通备份 [root@test bin]# ./mysqlbackup --defaults-file=/service/mysql5.5/my.cnf --socket=/data/mysql5.5/mysql.sock --user=root --backup-dir=/backup/5.5/normal --password backup MySQL Enterprise Backup version 3.8.2 [2013/06/18] Co

  • PHP程序员玩转Linux系列 备份还原MySQL

    PHP程序员玩转Linux系列文章: 1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 前几天有个新闻,说是gitlab的工程师把数据文件给误删了,搞了个大事件,很多人都去围观了.备份工作应该在最开始的时候就要做,否则就会失去最佳时机,为了保证我的数据是安全的,因此我要搞备份了.备份分为逻辑备份和物理备份,逻辑备份是导sql,物理备份是基于文件的,这两种我都搞一下. 开

  • 通过java备份恢复mysql数据库的实现代码

    复制代码 代码如下: import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java

  • 非常好用的asp备份,还原SQL数据库的代码

    <form method="post" name="myform" action="?action=backupdatabase">   选择操作:   <input type="radio" name="act" id="act_backup"value="backup">   <label for=act_backup>备份&l

  • MySQL数据库备份和还原的常用命令小结

    备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库为带删除表的格式备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库. mysqldump ---add-drop-table -uusername -ppassword databasename > backupfile.sql 直接将MySQL数据库压缩备份 m

  • mysql数据库备份及恢复命令 mysqldump,source的用法

    还原一个数据库:mysql -h localhost -u root -p123456 www<c:\www.sql 备份一个数据库:mysqldump -h localhost -u root -p123456 www > d:\www2008-2-26.sql //以下是在程序中进行测试 //$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile&qu

  • mysql数据库备份命令分享(mysql压缩数据库备份)

    备份MySQL数据库的命令 复制代码 代码如下: mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库为带删除表的格式 备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库. 复制代码 代码如下: mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile

随机推荐