安装Xtrabackup,设置定时备份msyql数据库

Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上唯一一款开源的可以对innodb和xtradb数据库进行热备的工具。mysql

XtraDB 存储引擎是由Percona开发的一款MySQL数据库的高性能存储引擎,其目的是用来代替InnoDB存储引擎,可用于须要更高性能的环境。
XtraDB 能够看做是InnoDB存储引擎的加强版本,它在InnoDB上进行了大量的修改和patched,它彻底兼容InnoDB,且提供了不少InnoDB不具有的有用的功能。
对于高负载的MySQL应用来讲,若是不须要MySQL官方技术支持的话,彻底能够使用XtraDB来代替InnoDB存储引擎。sql

InnoDB 有个商业的InnoDB Hotbackup,能够对InnoDB引擎的表实如今线热备。而percona出品的Xtrabackup,是InnoDB Hotbackup的一个开源替代品,能够在线对InnoDB/XtraDB引擎的表进行物理备份。mysqldump支持在线备份,不过是逻辑备份,效率较差。xtrabackup是开源的MySQL备份工具,物理备份,效率较好。数据库

Xtrabackup有两个主要的工具:xtrabackup、innobackupex,其中xtrabackup只能备份InnoDB和XtraDB两种数据表,innobackupex则封装了xtrabackup,同时能够备份MyISAM数据表。bash

Xtrabackup属于物理备份,EPEL源中有安装包,能够安装epel-release后直接安装。socket

这里因为线上环境是CentOS5.4,因此就单独从官网下载rpm包安装了。另外,因为使用yum安装会依赖libev,这里直接使用rpm安装。工具

# wget https://www.percona.com/downloads/XtraBackup/XtraBackup-2.0.0/RPM/rhel5/x86_64/percona-xtrabackup-2.0.0-417.rhel5.x86_64.rpm
# rpm -ivh percona-xtrabackup-2.0.0-417.rhel5.x86_64.rpm

设置定时任务性能

# crontab -e
10 0 * * * /root/bin/innobackup.sh

备份脚本code

# cat /root/bin/innobackup.sh
#!/bin/bash

backup_root='/data/backup'
today=$(date +%F)
confs=($(ls /etc/my*))
for conf in ${confs[@]}
do
    port=$(basename $conf |sed -e 's/.cnf//' -e 's/my//' -e 's/-//')
    [[ -z $port ]] && port=3306
    [[ $port == 3306 ]] && continue
    backup_path=$backup_root/$port
    mkdir -p $backup_path
    list=($(find $backup_path/ -mindepth 1 -maxdepth 1 -type d))
    if [[ $(date +%w) -eq 0 || -z ${list[*]} ]];then
        echo /usr/bin/innobackupex --defaults-file=$conf --user=root --password='dellXdell' $backup_path/ >> $backup_path/backup.$today.log 2>&1
        /usr/bin/innobackupex --defaults-file=$conf --user=root --password='dellXdell' $backup_path/ >> $backup_path/backup.$today.log 2>&1
        if [[ $? -eq 0 ]];then
            rm -rf ${list[@]}
        fi
    else
        last_backup=$(echo ${list[@]} | tr ' ' '\n' |sort |tail -1)
        echo /usr/bin/innobackupex --defaults-file=$conf --user=root --password='dellXdell' --incremental $backup_path --incremental-basedir=$last_backup/ >> $backup_path/backup.$today.log 2>&1
        /usr/bin/innobackupex --defaults-file=$conf --user=root --password='dellXdell' --incremental $backup_path --incremental-basedir=$last_backup/ >> $backup_path/backup.$today.log 2>&1
    fi
done

这里设置的是周日全备,其它天增备,事先须要手动作一次全备。crontab

# /usr/bin/innobackupex --defaults-file=/etc/my-3307.cnf --user=root --password='dellXdell' --socket=/nh/mysql3307/mysql-3307.sock --compress /data/backup/3307 >> /data/backup/3307/backup.$(date +%F).log 2>&1
相关文章
相关标签/搜索