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

XtraDB 存储引擎是由Percona开发的一款MySQL数据库的高性能存储引擎,其目的是用来代替InnoDB存储引擎,可用于需要更高性能的环境。

XtraDB 可以看作是InnoDB存储引擎的增强版本,它在InnoDB上进行了大量的修改和patched,它完全兼容InnoDB,且提供了很多InnoDB不具备的有用的功能。

对于高负载的MySQL应用来说,如果不需要MySQL官方技术支持的话,完全可以使用XtraDB来代替InnoDB存储引擎。

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

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

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

这里由于线上环境是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

备份脚本

# 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

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

# /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

最新文章

  1. UVALive 7139 Rotation(矩阵前缀和)(2014 Asia Shanghai Regional Contest)
  2. oracle win7下 卸载
  3. Notes on 'Selective Search For Object Recognition'
  4. RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件Web业务平台
  5. 努力学习 HTML5 (4)—— 浏览器对语义元素的支持情况
  6. MySQL、PostgreSQL、Ingres r3、MaxDB等开源数据库的详细比较
  7. Windows2008 R2下,DCOM配置里的属性灰色不可用的解决方法
  8. GO语言中间的derfer
  9. Unreal Engine 虚幻引擎宣布对开发者免费
  10. [MongoDB] Query, update, index and group
  11. AspxGridView ComboBoxComlum列数据联动
  12. org.hibernate.LazyInitializationException
  13. java关键字 (jdk6),各自的含义是什么?
  14. Java IO和NIO文章目录
  15. github pages部署静态网页
  16. java一个大接口拆用多线程方式拆分成多个小接口
  17. 洛谷P1066 2^k进制数(题解)(递推版)
  18. [Swift]LeetCode539. 最小时间差 | Minimum Time Difference
  19. 神州数码OSPF基于端口认证(简单认证、MD5认证)
  20. mybatis pagehelper分页插件使用

热门文章

  1. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 78,050,512 milliseconds ago.
  2. oozie捕获标准输出&异常capture-output
  3. 持续更新 | 想不到的key
  4. Tomcat java zabbix 监控
  5. 设计与实现分离——面向接口编程(OO博客第三弹)
  6. iOS开发学习-NSUserDefaults的介绍和用法
  7. 软工1816 · Beta冲刺(5/7)
  8. beat冲刺(3/7)
  9. tomcat启动问题排查
  10. 08_Java基础语法_第8天(Eclipse)_讲义