安装组件

yum -y install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL


访问http://www.percona.com/software/percona-toolkit/下载最新版本的Percona Toolkit

wget https://www.percona.com/downloads/percona-toolkit/2.2.15/RPM/percona-toolkit-2.2.15-1.noarch.rpm

从http://pkgs.repoforge.org/perl-TermReadKey/下载最新的TermReadKey包

wget http://pkgs.repoforge.org/perl-TermReadKey/perl-TermReadKey-2.30-3.el6.rfx.x86_64.rpm


先安装这个

rpm -ivh perl-TermReadKey-2.30-3.el6.rfx.x86_64.rpm

再安装这个

rpm -ivh percona-toolkit-2.2.15-1.noarch.rpm


安装XtraBackup

安装组件

yum -y  install perl-Time-HiRes libaio* openssl*

yum clean all

安装xtrabackup

tar zxvf percona-xtrabackup-2.2.9-5067-Linux-x86_64.tar.gz -C /usr/src/

mv /usr/src/percona-xtrabackup-2.2.9-Linux-x86_64 /usr/local/xtrabackup


添加文件链接

ln -s /usr/local/xtrabackup/bin/innobackupex /usr/bin/innobackupex

ln -s /usr/local/xtrabackup/bin/xtrabackup /usr/bin/xtrabackup

ln -s /usr/local/xtrabackup/bin/xbcrypt /usr/bin/xbcrypt

ln -s /usr/local/xtrabackup/bin/xbstream /usr/bin/xbstream


查看版本

xtrabackup -v


使用yum安装方法:

yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

yum install -y percona-toolkit


测试备份指定库test

innobackupex --user=root --socket=/data/3306/mysqld.sock --defaults-file=/usr/local/mysql/my.cnf --databases=test --stream=tar /backup/mysql 2>/backup/mysql_innobackup.log | gzip > /backup/mysql/`date +%Y%m%d`.tar.gz


常用参数如下:

--user=root                       备份操作用户名,一般都是root用户  

--password=root123                   密码,因为默认密码是空的,所以我没有加这个参数

--socket=/data/3306/mysqld.sock          指定sock文件

--defaults-file=/usr/local/mysql/my.cnf    指定配置文件

--port=3306              指定端口

--host=172.17.210.112       主机ip,本地可以不加

--databases=test         指定备份的数据库,如果没有这个参数,就是所有数据库

--parallel=4 --throttle=400   并行个数,根据主机配置选择合适的,默认是1个,多个可以加快备份速度。

--stream=tar             压缩类型,这里选择tar格式,可以加,可不加。加上文件就小一点,在备份的时候就已经打包好了。

/backup/mysql/1           备份存放的目录

2>/backup/mysql/innoback.log  备份日志,将备份过程中的输出信息重定向到bak.log

1>/backup/mysql/1/`date +%Y%m%d`.tar.gz   备份文件压缩后的名字


编写脚本,这个是做完整备份,默认root密码为空

#!/bin/bash


echo "###############################" >> /backup/mysql.log

statime=`date +%Y-%m-%d" "%H:%M:%S`

echo "$statime mysql开始备份" >> /backup/mysql.log


time=`date +%Y%m%d`

/usr/local/xtrabackup/bin/innobackupex --user=root --socket=/data/3306/mysqld.sock --defaults-file=/usr/local/mysql/my.cnf /backup/mysql --stream=tar 2>/backup/mysql_innobackup.log | gzip > /backup/mysql/$time.tar.gz


statime=`date +%Y-%m-%d" "%H:%M:%S`

echo "$statime mysql备份完成" >> /backup/mysql.log


#删除3天前的备份文件

find /backup/mysql -mtime +2 -type f -name "*.tar.gz" -exec rm {} \;


增加任务计划调用

#mysql备份

30 22 * * * /opt/mysql_backup.sh


如果需要恢复,步骤如下:

请保证在mysql正常运行的情况下操作

  1. 解压备份

创建一个空目录

mkdir /backup/3306

解压备份文件到指定目录

tar izxvf /backup/mysql/20151217.tar.gz -C /backup/3306

开始恢复,注意路径是解压的路径

/usr/local/xtrabackup/bin/innobackupex --defaults-file=/backup/3306/backup-my.cnf --apply-log /backup/3306/

如果提示 innobackupex: completed OK! 那说明恢复成功。

停止mysql

/etc/init.d/mysqld stop

清空mysql的数据目录,我的my.cnf里面定义的是datadir = /data/3306/data

rm -rf /data/3306/data/*

复制文件

\cp -rp /backup/3306/* /data/3306/data/

设置权限

chown mysql:mysql -R /data/3306/data

启动数据库

/etc/init.d/mysqld start


测试数据库连接是否正常