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 忽略归档中的零字节块(即文件结尾)