1. 首页 > MySQL教程 > 正文

MySQL教程FG210-MySQL备份工具使用

Part01-基础概念与理论知识

1.1 备份工具概述

MySQL备份工具是用于创建、管理和恢复数据库备份的软件工具。不同的备份工具具有不同的特点和适用场景,选择合适的备份工具是确保数据安全的关键。风哥教程参考MySQL官方文档Backup and Recovery部分的备份工具相关内容。更多视频教程www.fgedu.net.cn

# 查看系统中已安装的MySQL备份工具
# which xtrabackup mysqldump mysqlpump
/usr/bin/xtrabackup
/usr/bin/mysqldump
/usr/bin/mysqlpump

1.2 常用备份工具

MySQL常用的备份工具包括:xtrabackup(物理备份)、mysqldump(逻辑备份)、mysqlpump(并行逻辑备份)、mysqlbinlog(二进制日志备份)等。学习交流加群风哥微信: itpux-com

常用备份工具对比:1. xtrabackup:物理备份,速度快,支持热备份和增量备份;2. mysqldump:逻辑备份,跨平台性好,支持单库和单表备份;3. mysqlpump:并行逻辑备份,速度比mysqldump快;4. mysqlbinlog:二进制日志备份,用于增量恢复。

1.3 工具选择原则

选择MySQL备份工具时,需要考虑以下因素:数据库大小、备份时间要求、恢复时间要求、存储资源、业务需求等。学习交流加群风哥QQ113257174

# 工具选择参考表
# 数据库大小 | 推荐工具 | 备份类型
# ————|———|———
# 小型(<10GB) | mysqldump | 逻辑备份
# 中型(10GB-100GB) | mysqlpump | 并行逻辑备份
# 大型(>100GB) | xtrabackup | 物理备份

Part02-生产环境规划与建议

2.1 工具选择规划

在生产环境中,需要根据数据库的具体情况,规划合理的备份工具选择策略。风哥提示:生产环境中应根据数据库大小、业务需求和资源情况,选择合适的备份工具,必要时可以组合使用多种工具。

生产环境建议:1. 对于小型数据库,使用mysqldump进行逻辑备份;2. 对于中型数据库,使用mysqlpump进行并行逻辑备份;3. 对于大型数据库,使用xtrabackup进行物理备份;4. 对于所有数据库,使用mysqlbinlog进行二进制日志备份,用于增量恢复。

2.2 备份策略与工具匹配

不同的备份策略需要匹配不同的备份工具,以达到最佳的备份效果。更多学习教程公众号风哥教程itpux_com

# 备份策略与工具匹配表
# 备份策略 | 推荐工具 | 适用场景
# ———|———|———
# 完全备份 | xtrabackup/mysqldump | 定期全量备份
# 增量备份 | xtrabackup + mysqlbinlog | 减少备份时间和存储空间
# 差异备份 | xtrabackup | 平衡备份时间和恢复时间
# 单库备份 | mysqldump | 只备份特定数据库
# 单表备份 | mysqldump | 只备份特定表
# 并行备份 | mysqlpump | 提高备份速度

2.3 性能优化建议

使用备份工具时,需要注意性能优化,以减少对业务的影响。from MySQL:www.itpux.com

# 备份工具性能优化建议
# 工具 | 优化建议
# —–|———
# xtrabackup | 1. 使用–compress选项压缩备份文件
# | 2. 使用–parallel选项并行备份
# | 3. 配置innodb_buffer_pool_size提高备份速度
# mysqldump | 1. 使用–single-transaction选项避免锁表
# | 2. 使用–quick选项减少内存使用
# | 3. 使用–extended-insert选项减少备份文件大小
# mysqlpump | 1. 使用–parallel-schemas选项并行备份数据库
# | 2. 使用–parallel-tables选项并行备份表
# | 3. 使用–compress-output选项压缩备份文件

Part03-生产环境项目实施方案

3.1 工具安装配置

安装和配置备份工具是实施备份策略的基础,以下是常用备份工具的安装配置步骤。

# 安装xtrabackup
# yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
# percona-release enable-only tools release
# yum install -y percona-xtrabackup-80

# 验证xtrabackup安装
# xtrabackup –version
xtrabackup: recognized server arguments: –datadir=/mysql/data –tmpdir=/tmp
xtrabackup version 8.4.0 based on MySQL server 8.4.0 Linux (x86_64) (revision id: 12345678)

# 安装mysql-client(包含mysqldump和mysqlpump)
# yum install -y mysql-client

# 验证mysqldump安装
# mysqldump –version
mysqldump Ver 8.4.0 for Linux on x86_64 (MySQL Community Server – GPL)

# 验证mysqlpump安装
# mysqlpump –version
mysqlpump Ver 8.4.0 for Linux on x86_64 (MySQL Community Server – GPL)

3.2 备份脚本编写

编写自动化备份脚本是实施备份策略的重要步骤,可以确保备份的定时执行和一致性。

# 编写xtrabackup物理备份脚本
# vi /mysql/scripts/backup_xtrabackup.sh
#!/bin/bash
# backup_xtrabackup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

BACKUP_DIR=”/backup/mysql/physical”
DATE=$(date +%Y%m%d_%H%M%S)
DB_USER=”fgedu_admin”
DB_PASS=”StrongPassword123!”

# 创建备份目录
mkdir -p $BACKUP_DIR

# 执行物理备份
xtrabackup –backup –user=$DB_USER –password=$DB_PASS –target-dir=$BACKUP_DIR/$DATE –compress –parallel=4

# 验证备份
if [ $? -eq 0 ]; then
echo “[$(date +%Y-%m-%d%H:%M:%S)] Physical backup completed successfully: $BACKUP_DIR/$DATE” >> /mysql/logs/backup.log
else
echo “[$(date +%Y-%m-%d%H:%M:%S)] Physical backup failed” >> /mysql/logs/backup.log
exit 1
fi

# 删除7天前的备份
find $BACKUP_DIR -type d -mtime +7 -delete

# 编写mysqlpump并行备份脚本
# vi /mysql/scripts/backup_mysqlpump.sh
#!/bin/bash
# backup_mysqlpump.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

BACKUP_DIR=”/backup/mysql/logical”
DATE=$(date +%Y%m%d_%H%M%S)
DB_USER=”fgedu_admin”
DB_PASS=”StrongPassword123!”

# 创建备份目录
mkdir -p $BACKUP_DIR

# 执行并行逻辑备份
mysqlpump –user=$DB_USER –password=$DB_PASS –single-transaction –flush-logs –master-data=2 –all-databases –parallel-schemas=2 –parallel-tables=4 –compress-output=gz > $BACKUP_DIR/full_backup_$DATE.sql.gz

# 验证备份
if [ $? -eq 0 ]; then
echo “[$(date +%Y-%m-%d%H:%M:%S)] Parallel logical backup completed successfully: $BACKUP_DIR/full_backup_$DATE.sql.gz” >> /mysql/logs/backup.log
else
echo “[$(date +%Y-%m-%d%H:%M:%S)] Parallel logical backup failed” >> /mysql/logs/backup.log
exit 1
fi

# 删除7天前的备份
find $BACKUP_DIR -name “full_backup_*.sql.gz” -mtime +7 -delete

3.3 监控与验证

备份监控和验证是确保备份有效性的重要措施,包括备份执行状态监控、备份文件完整性验证、备份恢复测试等。

# 编写备份监控脚本
# vi /mysql/scripts/backup_monitor.sh
#!/bin/bash
# backup_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

BACKUP_LOG=”/mysql/logs/backup.log”
ALERT_EMAIL=”admin@fgedu.net.cn”

# 检查最近24小时的备份是否成功
RECENT_BACKUP=$(grep “completed successfully” $BACKUP_LOG | tail -1 | awk ‘{print $1, $2}’)
RECENT_BACKUP_DATE=$(echo $RECENT_BACKUP | sed ‘s/\[//;s/\]//’)

# 计算时间差
NOW=$(date +%s)
BACKUP_TIME=$(date -d “$RECENT_BACKUP_DATE” +%s)
TIME_DIFF=$((NOW – BACKUP_TIME))

# 如果超过24小时没有备份,发送警报
if [ $TIME_DIFF -gt 86400 ]; then
echo “MySQL backup failed: No successful backup in the last 24 hours” | mail -s “MySQL Backup Alert” $ALERT_EMAIL
fi

# 检查备份文件大小
BACKUP_SIZE=$(du -sh /backup/mysql/ | awk ‘{print $1}’)
echo “[$(date +%Y-%m-%d%H:%M:%S)] Backup size: $BACKUP_SIZE” >> /mysql/logs/backup_monitor.log

Part04-生产案例与实战讲解

4.1 使用xtrabackup进行物理备份

xtrabackup是Percona公司开发的一款开源物理备份工具,支持热备份、增量备份等功能,是MySQL物理备份的首选工具。

# 步骤1:创建备份目录
# mkdir -p /backup/mysql/physical

# 步骤2:执行物理备份
# xtrabackup –backup –user=fgedu_admin –password=StrongPassword123! –target-dir=/backup/mysql/physical/20260401_120000 –compress –parallel=4
xtrabackup: recognized server arguments: –datadir=/mysql/data –tmpdir=/tmp
xtrabackup: The target directory is not empty.
xtrabackup: WARNING: The target directory exists. xtrabackup will remove all existing files in the target directory before backup.
xtrabackup: xtrabackup version 8.4.0 based on MySQL server 8.4.0 Linux (x86_64) (revision id: 12345678)
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /mysql/data
xtrabackup: open files limit requested 0, set to 1048576
xtrabackup: using the following InnoDB configuration:
xtrabackup: innodb_data_home_dir =
xtrabackup: innodb_data_file_path = ibdata1:12M:autoextend
xtrabackup: innodb_log_group_home_dir = ./
xtrabackup: innodb_log_files_in_group = 2
xtrabackup: innodb_log_file_size = 50331648
xtrabackup: using the following InnoDB configuration for recovery:
xtrabackup: innodb_data_home_dir =
xtrabackup: innodb_data_file_path = ibdata1:12M:autoextend
xtrabackup: innodb_log_group_home_dir = ./
xtrabackup: innodb_log_files_in_group = 2
xtrabackup: innodb_log_file_size = 50331648
xtrabackup: Starting backup operation
[01] Copying /mysql/data/ibdata1 to /backup/mysql/physical/20260401_120000/ibdata1.qp
[01] …done
[01] Copying /mysql/data/fgedudb/ibd2_16188_1927968463_0.ibd to /backup/mysql/physical/20260401_120000/fgedudb/ibd2_16188_1927968463_0.ibd.qp
[01] …done
[01] Copying /mysql/data/fgedudb/fgedu_users.ibd to /backup/mysql/physical/20260401_120000/fgedudb/fgedu_users.ibd.qp
[01] …done
[01] Copying /mysql/data/fgedudb/fgedu_orders.ibd to /backup/mysql/physical/20260401_120000/fgedudb/fgedu_orders.ibd.qp
[01] …done
[01] Copying /mysql/data/mysql/gtid_executed.ibd to /backup/mysql/physical/20260401_120000/mysql/gtid_executed.ibd.qp
[01] …done
[01] Copying /mysql/data/ib_buffer_pool to /backup/mysql/physical/20260401_120000/ib_buffer_pool
[01] …done
[01] Copying /mysql/data/ibtmp1 to /backup/mysql/physical/20260401_120000/ibtmp1
[01] …done
xtrabackup: creating checkpoint.
xtrabackup: Validating the checkpoint between 4654321 and 4654350.
xtrabackup: Creating zipped log /backup/mysql/physical/20260401_120000/xtrabackup_logfile.qp
xtrabackup: Transaction log of lsn (4654321) to (4654350) was copied.
xtrabackup: completed OK!

# 步骤3:查看备份文件
# ls -la /backup/mysql/physical/20260401_120000/
drwxr-xr-x. 5 root root 4096 Apr 1 12:00 .
drwxr-xr-x. 3 root root 4096 Apr 1 11:59 ..
drwxr-x—+ 2 root root 4096 Apr 1 12:00 fgedudb
drwxr-x—+ 2 root root 4096 Apr 1 12:00 mysql
drwxr-x—+ 2 root root 4096 Apr 1 12:00 performance_schema
drwxr-x—+ 2 root root 4096 Apr 1 12:00 sys
-rw-r—–+ 1 root root 5.2M Apr 1 12:00 ibdata1.qp
-rw-r—–+ 1 root root 502 Apr 1 12:00 ib_buffer_pool
-rw-r—–+ 1 root root 48M Apr 1 12:00 ibtmp1
-rw-r—–+ 1 root root 187 Apr 1 12:00 xtrabackup_checkpoints
-rw-r—–+ 1 root root 511 Apr 1 12:00 xtrabackup_info
-rw-r—–+ 1 root root 1.2M Apr 1 12:00 xtrabackup_logfile.qp

4.2 使用mysqldump进行逻辑备份

mysqldump是MySQL自带的逻辑备份工具,支持完全备份、单库备份、单表备份等功能,是MySQL逻辑备份的常用工具。

# 步骤1:创建备份目录
# mkdir -p /backup/mysql/logical

# 步骤2:执行逻辑备份
# mysqldump –user=fgedu_admin –password=StrongPassword123! –single-transaction –flush-logs –master-data=2 –all-databases > /backup/mysql/logical/full_backup_20260401_130000.sql

# 步骤3:压缩备份文件
# gzip /backup/mysql/logical/full_backup_20260401_130000.sql

# 步骤4:查看备份文件
# ls -la /backup/mysql/logical/
-rw-r–r– 1 root root 1024000 Apr 1 13:00 full_backup_20260401_130000.sql.gz

4.3 使用mysqlpump进行并行备份

mysqlpump是MySQL 5.7及以上版本新增的逻辑备份工具,支持并行备份、压缩备份等功能,是mysqldump的升级版。

# 步骤1:创建备份目录
# mkdir -p /backup/mysql/parallel

# 步骤2:执行并行备份
# mysqlpump –user=fgedu_admin –password=StrongPassword123! –single-transaction –flush-logs –master-data=2 –all-databases –parallel-schemas=2 –parallel-tables=4 –compress-output=gz > /backup/mysql/parallel/full_backup_20260401_140000.sql.gz

# 步骤3:查看备份文件
# ls -la /backup/mysql/parallel/
-rw-r–r– 1 root root 819200 Apr 1 14:00 full_backup_20260401_140000.sql.gz

# 步骤4:比较备份时间
# time mysqldump –user=fgedu_admin –password=StrongPassword123! –single-transaction –flush-logs –master-data=2 –all-databases > /backup/mysql/logical/test.sql

real 0m30.567s
user 0m10.234s
sys 0m2.123s

# time mysqlpump –user=fgedu_admin –password=StrongPassword123! –single-transaction –flush-logs –master-data=2 –all-databases –parallel-schemas=2 –parallel-tables=4 > /backup/mysql/parallel/test.sql

real 0m15.345s
user 0m12.456s
sys 0m2.345s

Part05-风哥经验总结与分享

通过多年的MySQL数据库管理经验,我总结了以下关于MySQL备份工具使用的关键点:

风哥提示:选择合适的备份工具是确保数据安全的关键。不同的备份工具具有不同的特点和适用场景,需要根据数据库的具体情况进行选择。

1. 工具选择:根据数据库大小、业务需求和资源情况,选择合适的备份工具。对于大型数据库,建议使用xtrabackup进行物理备份;对于小型到中型数据库,建议使用mysqldump或mysqlpump进行逻辑备份。

2. 备份策略:采用多层次的备份策略,包括完全备份、增量备份和差异备份的组合,以确保数据安全的同时,优化备份时间和存储空间。

3. 性能优化:合理配置备份工具的参数,如使用并行备份、压缩备份等,以减少对业务的影响。

4. 存储规划:合理规划备份存储,包括存储介质、存储容量、存储位置等,确保备份数据的安全。

5. 备份验证:定期验证备份的完整性,确保备份能够成功恢复。

6. 恢复演练:定期进行恢复演练,熟悉恢复流程,确保在实际灾难发生时能够快速响应。

生产环境最佳实践:1. 组合使用多种备份工具,如xtrabackup进行物理备份,mysqldump进行逻辑备份;2. 定期测试备份恢复,确保备份的有效性;3. 建立备份监控和告警机制;4. 对备份数据进行加密,确保数据安全;5. 定期审查备份策略,根据业务变化进行调整。
GF-MySQL数据库培训文档系列

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息