xtrbackup更换数据库_xtrabackup对MySQL数据库的备份及恢复

SQL的衍生版 Percona Server

Percona 为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为。

Percona Server 只包含 MySQL 的服务器版,并没有提供相应对 MySQL 的 Connector 和 GUI 工具进行改进。

Percona Server 使用了一些 google-mysql-tools, Proven Scaling, Open Query 对 MySQL 进行改造。

官站:http://www.percona.com/ 这个站点有详细的文档介绍,不过是E文,

下面就来看一下Xtrbackup这个工具的使用吧。

首先安装这个xtrbackup工具,安装方法官网上有yum和rpm包安装两种方式的详细的介绍就不再写了,朋友们自己看。在这里我使用的yum的安装方式比较便捷。

yum源设置方法:

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

1vim /etc/yum.repos.d/Percona.repo

2添加以下内容:

3[percona]

4name = CentOS $releasever - Percona

5baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/

6enabled = 1

7gpgkey =file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona

8gpgcheck = 1

下载key文件写到

style=\"\\\\"\\\\\\\\"font-family:consolas,\\\\"\">yum install

percona-xtrabackup-2.0.1-446.rhel6.x86_64 -y

当然也可以下载源码包编译安装

下载地址: http://www.percona.com/downloads/XtraBackup/XtraBackup-2.1.5/binary/Linux 主要来说一下xtrbackup对MySqL数据库的备份和恢复。

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

下面来使用这个工具:

一定要确定mysql配置文件my.cnf中必须有datadir=/data/mysql/这项。下面有说明。

先来一次全量备份:

1innobackupex-1.5.1 --defaults-file=/etc/my.cnf --no-timestamp --host=localhost --port=3306 --user=root --password=redhat /data/bak_data/full_bak 这个目录里面就是备份的内容了,可以看一下都有什么东西:

数据库的主配置文件:backup-my.cnf

Innodb日志文件:ibdata1

数据库中的所有数据库目录:innobackup、mysql、performance_schema、phpmyadmin、test、wordpress

最后就是innobackupex备份的二进制日志和日志信息,备份的标志点:

xtrabackup_binary

xtrabackup_binlog_info

xtrabackup_checkpoints

xtrabackup_logfile

下面来使用innobackupex增量备份:

1第一次增量备份:

2innobackupex-1.5.1 --defaults-file=/etc/my.cnf

--no-timestamp --host=localhost --port=3306 --user=root

--password=redhat --incremental

--incremental-basedir=/data/bak_data/full_bak /data/bak_data/one_backup

3第二次增量备份:

4innobackupex-1.5.1 --defaults-file=/etc/my.cnf

--no-timestamp --host=localhost --port=3306 --user=root

--password=redhat --incremental

--incremental-basedir=/data/bak_data/one_backup

/data/bak_data/two_backup

5第三次增量备份:

6innobackupex-1.5.1 --defaults-file=/etc/my.cnf

--no-timestamp --host=localhost --port=3306 --user=root

--password=redhat --incremental

--incremental-basedir=/data/bak_data/two_backup

/data/bak_data/three_backup

以上是把每次增量备份为一个目录,也可以备份为一个压缩包

压缩备份的方式:

1innobackupex-1.5.1 --defaults-file=/etc/my.cnf --no-timestamp --host=localhost --port=3306 --user=root --password=redhat --stream=tar /data/bak_data/ 2>/data/back_data/2.log |gzip - > /data/bak_data/full_bak.tar.gz (测试了不下10次,压缩包里只一个backup-my.cnf文件,非常郁闷!)

还是用普通的吧,比较稳当!

下面来看一下如何恢复数据,这里有两方式来恢复。要恢复数据要先停mysql数据库服务,要不停下也是可以的,个人感觉停下比较好一点。

两种方式共同的部分:

1、进行一次基础恢复也就是:

1innobackupex-1.5.1 /data/bak_data/full_bak --apply-log 2、进行增量恢复:

1innobackupex-1.5.1 /data/bak_data/full_bak --incremental --incremental-dir=/data/bak_data/one_backup --apply-log#恢复的是第一次增量备份的,

2innobackupex-1.5.1 /data/bak_data/full_bak --incremental --incremental-dir=/data/bak_data/two_backup --apply-log#恢复的是第二次增量备份的,

3innobackupex-1.5.1 /data/bak_data/full_bak --incremental --incremental-dir=/data/bak_data/three_backup --apply-log#恢复的是第三次增量备份的, 以次类推,有多少增量就恢复多少,最后数据库全部数据会在/data/bak_data/full_bak这个目录下,

下面就分两方式来恢复数据到正式的数据库中

第一种比较简单的方式,直接把/data/bak_data/full_bak这个目录下的文件全部复制到数据库的存放数据的目录中:

1cp -r /data/bak_data/full_bak/* /data/mysql/data/ 为了能正常启动服务,修改数据目录的用户权限,

1chown mysql:mysq -R /data/mysql 如不出意外,重启之后数据库服务就是正常。通常情况下能正常启动。

这种方式会使数据库的数据目录有其他的文件,cp之后会有xtrabackup_binary、xtrabackup_binlog_info、

xtrabackup_checkpoints、xtrabackup_logfile、backup-my.cnf、ibdata1、

ib_logfile0、ib_logfile1

文件,如果innodb日志文件:ibdata1、ib_logfile0、ib_logfile1之前就是放在这个目录中可以不用清理掉,建议其他除数

据库目录之外的文件要清理一下。或者复制到相应的目录中去。

第二方式,使用innobackupex-1.5.1

--copy-back这个选项来把数据得到数据库存储的目录中去,在这之前要清空数据库数据存放目录/data/mysql/data目录的文件和

innodb日志目录/data/mysql/mysql_innodb目录的文件,然后执行下面的命令即可。如果不清空,下面命令在执行过程会报错,提

示你要清空那些目录。

1innobackupex-1.5.1 --copy-back /data/bak_data/full_bak 执行完后,上面来个目录中的文件属主和属组都发生了变化,不是mysql用户了,如果直接重启mysql服务会报错,修改为mysql用户就可以了

执行:

1chown mysql:mysql /data/mysql -R

关于Xtrbackup工具的使用先就写到这里,在这里还有一个问题没得到解决,希望看到的朋友们如果也遇到相同的问题可以一起讨论下。

问题文章前面也提到过,就是使用压缩备份里总是不成功。即:

压缩备份:

innobackupex-1.5.1 --defaults-file=/etc/my.cnf --no-timestamp

--host=localhost --port=3306 --user=root --password=redhat --stream=tar

/data/bak_data/  2>/data/back_data/2.log | gzip - >

/data/bak_data/full_bak.tar.gz

(测试了不下10次,压缩包里只一个backup-my.cnf文件,非常郁闷!)

希望看到的朋友们能指点下,谢谢。

上面的那个问题已经解决了,多谢跛腿的狐狸的指点

原因如下,我备份完之后解压时少用了一个参数。我用的是:tar zxvf full_bak.tar.gz 所以解压出来后就一个backup-my.cnf文件,多谢跛腿的狐狸的指点,使用-i这个参数,即:tar -izxvf full_bak.tar.gz解压出来后就是全是备份的文件和目录了。这个参数的解释如下:-i, --ignore-zeros  忽略归档中的零字节块(即文件结尾)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值