700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 3分钟快速实现mysql全量增量备份

3分钟快速实现mysql全量增量备份

时间:2019-07-10 11:38:23

相关推荐

3分钟快速实现mysql全量增量备份

需求说明:

mysql数据库ip地址为192.168.1.100,端口3306,root密码111111,

服务器cantos7中ip地址192.168.1.101

利用xtrabackup每周六进行全量备份,每天进行增量备份,保留2个礼拜的备份,并且保存到192.168.1.101的/data分区

为了在CentOS 7服务器上使用XtraBackup执行MySQL数据库的备份,您需要完成以下步骤:

步骤 1:在CentOS 7服务器(192.168.1.101)上安装Percona XtraBackup

首先,添加Percona软件包仓库:

sudo yum install /yum/percona-release-latest.noarch.rpm

安装Percona XtraBackup:

sudo yum install percona-xtrabackup-24

步骤 2:创建备份脚本

创建一个脚本目录:

sudo mkdir -p /opt/backup_scripts

创建全量备份脚本/opt/backup_scripts/full_backup.sh,并粘贴以下内容:

#!/bin/bashTIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")BACKUP_DIR="/data/backups/full/$TIMESTAMP"USER="root"PASSWORD="111111"HOST="192.168.1.100"PORT="3306"mkdir -p $BACKUP_DIRxtrabackup --backup --user=$USER --password=$PASSWORD --host=$HOST --port=$PORT --target-dir=$BACKUP_DIRxtrabackup --prepare --target-dir=$BACKUP_DIRfind /data/backups/full -type d -ctime +14 -exec rm -rf {} \;

创建增量备份脚本/opt/backup_scripts/incremental_backup.sh,并粘贴以下内容:

#!/bin/bashTIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")FULL_DIR=$(ls -td /data/backups/full/*/ | head -1)INCR_DIR="/data/backups/incremental/$TIMESTAMP"USER="root"PASSWORD="111111"HOST="192.168.1.100"PORT="3306"mkdir -p $INCR_DIRxtrabackup --backup --incremental-basedir=$FULL_DIR --user=$USER --password=$PASSWORD --host=$HOST --port=$PORT --target-dir=$INCR_DIRxtrabackup --prepare --apply-log-only --target-dir=$FULL_DIRxtrabackup --prepare --apply-log-only --incremental-dir=$INCR_DIR --target-dir=$FULL_DIRfind /data/backups/incremental -type d -ctime +14 -exec rm -rf {} \;

使这两个脚本可执行:

sudo chmod +x /opt/backup_scripts/full_backup.shsudo chmod +x /opt/backup_scripts/incremental_backup.sh

步骤 3:配置定时任务

打开cron表:

crontab -e

添加以下条目以安排每周六进行全量备份,每天进行增量备份(您可以根据需要修改具体时间):

#每周六凌晨1点进行全量备份0 1 * * 6 /opt/backup_scripts/full_backup.sh > /var/log/full_backup.log 2>&1#每天凌晨2点进行增量备份0 2 * * * /opt/backup_scripts/incremental_backup.sh > /var/log/incremental_backup.log 2>&1

保存并退出编辑器。

这样一来,您的 CentOS 7 服务器上就配置好了 XtraBackup,并且已经安排了定期的全量和增量备份。请确保检查/data/backups目录中的备份文件,以确保备份任务正常运行。如果需要,您可以根据实际需求调整定时任务的时间。

步骤 4:定期清理日志

您可以创建一个日志轮换脚本,用于定期清理和压缩日志文件。以下是一个简单的日志轮换脚本/opt/backup_scripts/rotate_logs.sh

#!/bin/bashLOG_DIR="/var/log"FULL_LOG_DIR="/var/log/full"INCR_LOG_DIR="/var/log/incremental"FULL_LOG="full_backup.log"INCR_LOG="incremental_backup.log"MAX_AGE=10# Rotate full_backup.logif [ -e "$LOG_DIR/$FULL_LOG" ]; thenmv "$LOG_DIR/$FULL_LOG" "$FULL_LOG_DIR/$FULL_LOG.$(date +%Y%m%d)"gzip -9 "$FULL_LOG_DIR/$FULL_LOG.$(date +%Y%m%d)"fi# Rotate incremental_backup.logif [ -e "$LOG_DIR/$INCR_LOG" ]; thenmv "$LOG_DIR/$INCR_LOG" "$INCR_LOG_DIR/$INCR_LOG.$(date +%Y%m%d)"gzip -9 "$INCR_LOG_DIR/$INCR_LOG.$(date +%Y%m%d)"fi# Remove logs older than MAX_AGE daysfind "$FULL_LOG_DIR" -type f -name "$FULL_LOG.*.gz" -mtime +$MAX_AGE -exec rm -f {} \;find "$INCR_LOG_DIR" -type f -name "$INCR_LOG.*.gz" -mtime +$MAX_AGE -exec rm -f {} \;

设置脚本可执行权限:

sudo chmod +x /opt/backup_scripts/rotate_logs.sh

添加定时任务,每天凌晨3点执行日志轮换:

crontab -e

添加以下条目:

# 每天凌晨5点执行日志轮换0 5 * * * /opt/backup_scripts/rotate_logs.sh

这个脚本将每天早上5点运行,它将分别备份并压缩full_backup.logincremental_backup.log文件。同时,它还将删除超过MAX_AGE(默认为10天)的日志文件。您可以根据需要调整这个值。

日志说明:

XtraBackup 在日志中显示已成功执行并备份数据库。在日志中,它显示了一系列的操作,包括 InnoDB 的恢复过程,创建和重写 redo log 文件以及其他一些初始化操作。最后,XtraBackup 完成了备份过程,并显示 “completed OK!”,表明备份已成功完成。

请注意,定期备份数据库是非常重要的,以确保数据的安全性和完整性。使用 XtraBackup 可以帮助您实现这一目标。记得要定期检查日志文件,以确保备份过程始终正常运行。

备份完以后可以用du -lh --max-depth=1查看备份文件大小

该如何恢复:

使用Percona XtraBackup恢复MySQL数据库时,需要遵循以下步骤:

步骤 1:停止MySQL服务

在恢复数据库之前,需要停止正在运行的MySQL服务。在CentOS 7服务器上执行以下命令:

sudo systemctl stop mysqld

步骤 2:恢复全量备份

首先,导航到最新全量备份的目录:

cd /data/backups/full/<latest_full_backup_directory>

请将<latest_full_backup_directory>替换为最新全量备份的目录名。

使用xtrabackup恢复全量备份:

sudo xtrabackup --copy-back --target-dir=<latest_full_backup_directory> --datadir=/var/lib/mysql

请将<latest_full_backup_directory>替换为最新全量备份的目录名。

步骤 3:恢复增量备份(如有)

如果有增量备份,需要按照创建顺序依次恢复它们:

导航到第一个增量备份的目录:

cd /data/backups/incremental/<first_incremental_backup_directory>

请将<first_incremental_backup_directory>替换为第一个增量备份的目录名。

使用xtrabackup恢复增量备份:

sudo xtrabackup --copy-back --target-dir=<first_incremental_backup_directory> --datadir=/var/lib/mysql

请将<first_incremental_backup_directory>替换为第一个增量备份的目录名。

对于其他增量备份,重复上述步骤。

步骤 4:设置正确的权限

为确保MySQL服务能够正常访问数据文件,请将数据目录的所有权更改为mysql:mysql

sudo chown -R mysql:mysql /var/lib/mysql

步骤 5:重新启动MySQL服务

最后,重新启动MySQL服务:

sudo systemctl start mysqld

现在,您已经使用Percona XtraBackup成功地恢复了MySQL数据库。请确保检查数据库中的数据,以验证恢复过程是否成功。

验证备份是否成功

要验证MySQL数据库的备份是否成功,可以采取以下措施:

检查日志文件:检查在/var/log/full_backup.log/var/log/incremental_backup.log中的日志文件。查看日志中是否有错误信息,确保备份过程已成功完成。通常,成功的备份会在日志末尾显示“completed OK!”。

查看备份文件:在/data/backups/full/data/backups/incremental目录下检查备份文件。检查这些目录下是否有最近的备份,以及是否有期望的备份文件。

检查备份文件大小:使用du -sh /data/backups/fulldu -sh /data/backups/incremental命令查看全量和增量备份的总大小。确保备份大小与预期相符,并与原始数据库数据的大小相近。

恢复测试:在一个测试环境中尝试恢复备份。这将帮助您检查备份的完整性,并确保在需要时能够成功恢复数据库。

通过以上措施,可以有信心地确认MySQL数据库备份是否成功。定期进行这些检查以确保备份始终有效且可用。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。