热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PerconaXtrabackup备份mysql(完整备份与增量备份)

PerconaXtrabackup备份mysql(完整备份与增量备份)Xtrabackup简介PerconaXtraBackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB

Percona Xtrabackup备份mysql (完整备份与增量备份)


Xtrabackup简介


Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM


的备份同样需要加表锁)。XtraBackup支持所有的Percona Server、MySQL、MariaDB和Drizzle。


XtraBackup优势 :


1、无需停止数据库进行InnoDB热备


2、增量备份MySQL


3、流压缩到传输到其它服务器


4、能比较容易地创建主从同步


5、备份MySQL时不会增大服务器负载


Xtrabackup的特性是针对大数据进行备份恢复使用,数据库大小一般在G以上或10G以上,对于数据量小的Mysql库完全可以使用


mysqldump来解决,备份和恢复速度快而且操作简便快捷,这里对mysqldump命令就不做介绍了。


Xtrabackup安装


这里只介绍Ubuntu-12.04下的安装方法,其它系统的安装方法请参考 http://www.percona.com/doc/percona-


xtrabackup/2.1/installation.html


apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A

在/etc/apt/sources.list加入:



deb http://repo.percona.com/apt precise main

deb-src http://repo.percona.com/apt precise main

执行update及安装操作


apt-get update

apt-get install percona-xtrabackup

注:precise是Ubuntu-12.04的版本代号,如果是其它系统版本,需要更换。


Xtrabackup工具介绍


安装XtraBackup后,其实会有几个工具:


innobackupex:这个是其实是下面三个工具的一个perl脚本封装,可以备份MyISAM, InnoDB, XtraDB表。但在处理Myisam时需要


加一个读锁。


xtrabackup:一个由C编译而来的二进制文件,只能备份InnoDB和XtraDB数据。


xbcrypt:用来加密或解密备份的数据。


xbstream:用来解压或压缩xbstream格式的压缩文件。


建议使用perl封装的innobackupex来作数据库备份,因为比较容易使用。所以下面只介绍innobackupex的使用。其它的使用参考: 


http://www.percona.com/doc/percona-xtrabackup/2.1/manual.html


innobackupex使用方法


完整的选项使用请执行innobackupex –help,这里只介绍使用常用的选项进行完整备份及增量备份和还原。


innobackupex Options 这里只对常用参数进行描述


–defaults-file 数据库的配置文件路径,感觉本地备份不写也可以,远程没测试过。


–apply-log 准备在一个备份上启动mysql服务。


–copy-back 从备份目录拷贝数据,索引,日志到my.cnf文件里规定的初始位置。


–no-timestamp 创建备份时不自动生成时间目录,可以自定义备份目录名例如: /backups/mysql/base


–databases 用于指定要备份的数据库, 多个库文件使用方法: “database1 database2″


–incremental 在全备份的基础上进行增量备份,后跟增量备份存贮目录路径


–incremental-basedir=DIRECTORY 增量备份所需要的全备份路径目录或上次做增量备份的目录路径


–incremental-dir=DIRECTORY 增量备份存贮的目录路径


–redo-only 用于准备增量备份内容把数据合并到全备份目录,配合–incremental-dir 增量备份目录使用。


–force-non-empty-directories 如果是特定库备份还原,不需要删掉整个mysql目录,只是特定库的及相关文件就可以,还原时


加上此参数就不会报错。


其他具体参数可以参考:http://www.percona.com/doc/percona-


xtrabackup/2.1/innobackupex/innobackupex_option_reference.html


完整备份及还原


一、全部数据库


备份:


innobackupex --user=root --password=root --defaults-file=/etc/mysql/my.cnf /data/mysql_backup/full_backup

还原:


service mysql stop

 

rm -rf /var/lib/mysql

 

mkdir /var/lib/mysql

 

innobackupex --apply-log /data/mysql_backup/full_backup --use-memory=1G --user=root --password=root

 

innobackupex --copy-back /data/mysql_backup/full_backup

 

chown mysql:mysql -R /var/lib/mysql

 

service mysql start

查看恢复的数据库


二、指定数据库


备份:


假如我们要备份centos和aabb数据库。


innobackupex --user=root --password=root --defaults-file=/etc/mysql/my.cnf --databases="centos aabb" 


/data/mysql_backup/

这样就会在/data/mysql_backup生成一个带时间的目录,如果不需要带时间,可以使用选项–no-timestamp。


如果想备份成压缩文件,可以使用如下语句:


innobackupex --user=root --password=root --defaults-file=/etc/mysql/my.cnf --databases="centos aabb" --no-


timestamp --stream=tar ./ | gzip - > centos-aabb.bz.tar.gz

还原:


假如完整备份的路径为/data/mysql_backup/full_backup,如果完整备份是压缩文件,需要先解压再还原。

service mysql stop

 

rm -rf /var/lib/mysql/ibdata*

 

rm -rf /var/lib/mysql/ib_logfile*

 

rm -rf /var/lib/mysql/centos

 

rm -rf /var/lib/mysql/aabb

 

innobackupex --apply-log /data/mysql_backup/centos_aabb_full_backup

 

innobackupex --copy-back --defaults-file=/etc/mysql/my.cnf /data/mysql_backup/centos_aabb_full_backup

 

chown -R mysql:mysql /var/lib/mysql

 

service mysql start

增量备份及还原


在这里全库的增量备份方法就不多讲了,只是针对特定数据库进行讲解,其实是同理的就是把下面参数中的–databases 选项去


掉就可以,感兴趣的可以自己试下。


增量备份是建立在完整备份的基础上的,所以首先确保已经完整备份了一次。


完整备份:


innobackupex --user=root --password=root --databases="centos" --no-timestamp 


/data/mysql_backup/centos_full_backup

现在完整备份的目录为/data/mysql_backup/centos_full_backup。


增量备份:


第一次增量备份:


innobackupex --incremental /data/mysql_backup/inc1 --no-timestamp --incremental-


basedir=/data/mysql_backup/centos_full_backup --user=root --password=root --defaults-file=/etc/mysql/my.cnf

第二次增量备份:需要把–incremental-basedir指定到上次做增量备份的目录,这里应该知道/data/mysql_backup/inc1


innobackupex --incremental /data/mysql_backup/inc2 --no-timestamp --incremental-basedir=/data/mysql_backup/inc1 


--user=root --password=root --defaults-file=/etc/mysql/my.cnf

选项–incremental是指定作增量备份 –incremental-basedir选项是指定上一次增量备份的目录(如果是第一次作增量备份,则


为完整备份的目录)。


还原:


增量备份的还原操作跟完整的还原有点不一样,首先必须使用–apply-log –redo-only对完整备份的目录及所有增量备份目录进


行操作,然后就可以像还原完整备份时的操作了。


对每个备份目录作apply-log redo-only操作(包括完整备份)


innobackupex --apply-log --redo-only /data/mysql_backup/centos_full_backup --user=root --password=root

 

innobackupex --apply-log --redo-only /data/mysql_backup/centos_full_backup --incremental-


dir=/data/mysql_backup/inc1 --user=root --password=root

 

innobackupex --apply-log --redo-only /data/mysql_backup/centos_full_backup --incremental-


dir=/data/mysql_backup/inc2 --user=root --password=root

看到有文章在恢复增量备份的时候提到在做最后一个读取增量记录的时候不使用–redo-only 参数, 经过测试,使用了此参数后


恢复的数据库也都运行正确,我使用的是2.17版本xtrabackup, 至于以前版本就没测试过。有知道的可以在这里分享下。


下面就跟还原完整备份时一样了:



service mysql stop

 

rm -rf /var/lib/mysql/ibdata*

 

rm -rf /var/lib/mysql/ib_logfile*

 

rm -rf /var/lib/mysql/centos

 

innobackupex --apply-log /data/mysql_backup/centos_full_backup --use-memory=1G --user=root --password=root

 

##--use-memory 能够定义读取备份时的内存大小,以便快速的完成还原准备工作。

 

innobackupex --copy-back --defaults-file=/etc/mysql/my.cnf /data/mysql_backup/centos_full_backup

 

chown mysql:mysql -R /var/lib/mysql

 

service mysql start

现在全部增量恢复就完成了,可以登录数据库查看下恢复的数据了



推荐阅读
  • 阿里云主机实战应用之centos7上的防火墙设置
    最近公司又上了一台服务器,以前都是用centos6系统,这次选择使用了centos7系统的安装镜像,因为现在程序版本在centos7上一般php默认就是5.4以上的,mysql也 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • Centos7安装MySql5.6
    如何在CentO ... [详细]
  • 1.ATP方式安装在ubuntu系统的apt软件仓库中,默认存在MySQL数据库,所以直接使用apt命令就可以安装。使用命令:aptapt-getin ... [详细]
  • MYsql_linux mysql
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了linuxmysql相关的知识,希望对你有一定的参考价值。一数据库安装查看:[[email pr ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文是搭建的mariadb-10.0.17版本的下载地址:https:downloads.mariadb.orginterstitialmariadb-10.0.17sourcemariadb-10.0.17.tar.gzfromhtt ... [详细]
  • MySQL之left join表查询中发生字符集转换导致表索引失效
    mysql,之,left,join,表,查询,中,发生,字符,集,转换, ... [详细]
  • centos7如何利用yum安装mysql 8.0.12
    这篇文章将为大家详细讲解有关centos7如何利用yum安装mysql8.0.12,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有 ... [详细]
  • 如何部署Zabbix监控实现监测和报警机制
    这篇文章的知识点包括:Zabbix的安装部署、Zabbix监控的实现以及Zabbix报警机制的实现,阅读完整文相信大家对Zabbix监控的使用有了一定的认识。Zabb ... [详细]
  • mysql数据库生成表插件_screw 数据库文档生成工具
    简洁好用的数据库表结构文档工具在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有、要么有、但都是手写 ... [详细]
author-avatar
mobiledu2502912637
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有