xTraBackup介绍
MySQL冷备、mysqldump、MySQL热拷贝都无法实现对数据库进行增量备份。在实际生产环境中增量备份是非常实用的,如果数据大于50G或100G,存储空间足够的情况下,可以每天进行完整备份,如果每天产生的数据量较大,需要定制数据备份策略。例如每周实用完整备份,周一到周六实用增量备份。而Percona-Xtrabackup就是为了实现增量备份而出现的一款主流备份工具,xtrabakackup有2个工具,分别是xtrabakup、innobakupe,本方案采用innobackup进行数据库备份。
xTraBackup部署
前提条件
- 确保数据库开启了binlog日志,如没开启需开启下,注意开启此参数需重启数据库。
检查命令:
show variables like ‘%log_bin%’;
- 额外的备份存储空间。
部署安装
# 下载安装包
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.21/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.21-1.el7.x86_64.rpm
# 部署安装包
yum install -y percona-xtrabackup-24-2.4.21-1.el7.x86_64.rpm
# 检查安装状态
innobackupex -v
备份路径配置
mkdir -p /data/backup/mysql_backup/
mkdir /data/backup/logs/
备份脚本配置
vi /data/backup/mysql_backup.sh
#!/bin/bash
. /etc/profile
. ~/.bash_profile
bakdir="/data/backup/mysql_backup/"
logfile="/data/backup/logs/full_mysql_`date '+%Y%m%d'`.log"
echo "=============================== "`date +"%Y-%m-%d %H:%M:%S"`" begin to backup ===============================" >> $logfile
innobackupex \
--defaults-file=/etc/my.cnf \
--user=root \
--password="" \
--socket=/home/mysql/mysql.sock \
--port=3306 \
--safe-slave-backup \
--safe-slave-backup-timeout=7200 \
--slave-info \
--backup $bakdir \
2>> $logfile
echo "=============================== "`date +"%Y-%m-%d %H:%M:%S"`" finished backup ===============================" >> $logfile
find $bakdir -mtime +30 -exec rm -rf {} \;
计划任务配置
0 2 * * * /data/backup/mysql_backup.sh
建议备份时间选择业务尽可能影响最小的时间点,避免由于备份锁表引起业务缓慢异常。
备份数据检查
文件检查
备份文件包括数据库文件、配置文件和一致性所需的xtrabackup_checkpoints文件。