安装组件
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正常运行的情况下操作
解压备份
创建一个空目录
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
测试数据库连接是否正常