1. 首页 > 国产数据库教程 > GreatSQL教程 > 正文

greatsql教程FG010-GreatSQL备份与恢复策略实战

内容简介

本教程详细介绍GreatSQL数据库的备份和恢复策略,包括物理备份、逻辑备份、增量备份等方法,以及完整的恢复流程。风哥教程参考GreatSQL官方文档备份与恢复指南,帮助读者掌握数据库备份和恢复的最佳实践。

备份和恢复是数据库管理的核心任务,合理的备份策略可以确保数据安全,快速的恢复流程可以减少故障时间。本教程将从基础概念入手,逐步深入到实战案例和最佳实践。

目录大纲

Part01-基础概念与理论知识

1.1 备份概述

备份是指将数据库数据复制到安全位置的过程,主要目的是:

  • 防止数据丢失
  • 支持灾难恢复
  • 用于数据迁移
  • 用于测试环境搭建

1.2 备份类型

GreatSQL支持的备份类型:

  • 物理备份:直接复制数据库文件,如使用xtrabackup
  • 逻辑备份:使用SQL语句导出数据,如使用mysqldump
  • 全量备份:备份所有数据
  • 增量备份:只备份变更的数据
  • 差异备份:备份自上次全量备份以来的变更

1.3 恢复概述

恢复是指将备份数据还原到数据库的过程,主要包括:

  • 完全恢复:恢复到备份时的状态
  • 时间点恢复:恢复到指定时间点
  • 表级恢复:只恢复特定表
  • 单库恢复:只恢复特定数据库

Part02-生产环境规划与建议

2.1 备份策略规划

风哥提示:备份策略应根据数据重要性、业务需求和RTO/RPO要求进行规划。

备份策略规划建议:

  • 全量备份:每周1次
  • 增量备份:每天1次
  • 日志备份:每小时1次
  • 备份验证:每月1次
  • 恢复演练:每季度1次

2.2 备份存储规划

备份存储规划建议:

  • 使用独立的存储设备
  • 实施3-2-1备份策略(3份备份,2种介质,1份异地)
  • 定期清理过期备份
  • 监控备份存储使用情况
  • 使用压缩减少存储空间

2.3 恢复演练计划

恢复演练计划:

  1. 制定恢复演练计划
  2. 选择非生产环境进行演练
  3. 记录恢复时间和过程
  4. 分析演练结果
  5. 优化恢复流程

更多视频教程www.fgedu.net.cn

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

3.1 备份实施方案

备份实施方案:

  1. 安装备份工具(如xtrabackup)
  2. 配置备份脚本
  3. 设置备份计划
  4. 监控备份执行情况
  5. 验证备份完整性

3.2 恢复实施方案

恢复实施方案:

  1. 准备恢复环境
  2. 选择合适的备份集
  3. 执行恢复操作
  4. 验证恢复结果
  5. 应用增量备份和日志

3.3 监控与告警方案

监控与告警方案:

  • 监控备份执行状态
  • 监控备份存储使用情况
  • 设置备份失败告警
  • 定期检查备份完整性
  • 监控恢复演练结果

Part04-生产案例与实战讲解

4.1 物理备份实战

# 安装xtrabackup yum install -y percona-xtrabackup-80

# 创建备份目录
mkdir -p /greatsql/backup/full mkdir -p /greatsql/backup/incremental

# 执行全量备份
xtrabackup –backup –target-dir=/greatsql/backup/full/$(date +%Y%m%d) –user=root –password=GreatSQL123!

xtrabackup: recognized server arguments: –datadir=/greatsql/fgdata
xtrabackup: recognized client arguments: –backup –target-dir=/greatsql/backup/full/20260409 –user=root –password=*
xtrabackup version 8.0.31-24 based on MySQL server 8.0.31 Linux (x86_64) (revision id: 6f7a29b)
1702785600 20:00:00 version_check Connecting to MySQL server with DSN ‘dbi:mysql:;mysql_read_default_group=xtrabackup;port=3306;mysql_socket=/greatsql/fgdata/mysql.sock’ as ‘root’ (using password: YES)
1702785600 20:00:00 version_check Connected to MySQL server
1702785600 20:00:00 version_check Executing a version check against the server…
1702785600 20:00:00 version_check Done.
1702785600 20:00:00 xtrabackup: Connecting to MySQL server host: fgedu.localhost, user: root, password: set, port: 3306, socket: /greatsql/fgdata/mysql.sock
1702785600 20:00:00 xtrabackup: uses posix_fadvise().
1702785600 20:00:00 xtrabackup: cd to /greatsql/fgdata
1702785600 20:00:00 xtrabackup: open files limit requested 0, set to 10240
1702785600 20:00:00 xtrabackup: using the following InnoDB configuration:
1702785600 20:00:00 xtrabackup: innodb_data_home_dir =
1702785600 20:00:00 xtrabackup: innodb_data_file_path = ibdata1:12M:autoextend
1702785600 20:00:00 xtrabackup: innodb_log_group_home_dir = ./
1702785600 20:00:00 xtrabackup: innodb_log_files_in_group = 2
1702785600 20:00:00 xtrabackup: innodb_log_file_size = 536870912
1702785600 20:00:00 xtrabackup: using O_DIRECT
1702785600 20:00:00 xtrabackup: preparing打起:
1702785600 20:00:00 xtrabackup: xtrabackup_logfile detected: size=8388608, start_lsn=(123456789)
1702785600 20:00:00 xtrabackup: using the following InnoDB configuration for recovery:
1702785600 20:00:00 xtrabackup: innodb_data_home_dir =
1702785600 20:00:00 xtrabackup: innodb_data_file_path = ibdata1:12M:autoextend
1702785600 20:00:00 xtrabackup: innodb_log_group_home_dir = ./
1702785600 20:00:00 xtrabackup: innodb_log_files_in_group = 2
1702785600 20:00:00 xtrabackup: innodb_log_file_size = 536870912
1702785600 20:00:01 xtrabackup: Recovered lsn (123456789) from ./xtrabackup_logfile
1702785600 20:00:01 xtrabackup: Database was not shut down normally!
1702785600 20:00:01 xtrabackup: Starting crash recovery…
1702785600 20:00:01 xtrabackup: Crash recovery finished.
1702785600 20:00:01 xtrabackup: Number of pools: 1
1702785600 20:00:01 xtrabackup: completed OK!

学习交流加群风哥微信: itpux-com

4.2 逻辑备份实战

# 全库备份
mysqldump -u root -pFGedu123456! –all-databases –single-transaction –master-data=2 –flush-logs > /greatsql/backup/logical/full_$(date +%Y%m%d).sql

# 单库备份
mysqldump -u root -pFGedu123456! –databases fgedudb –single-transaction > /greatsql/backup/logical/fgedudb_$(date +%Y%m%d).sql

# 压缩备份
mysqldump -u root -pFGedu123456! –databases fgedudb –single-transaction | gzip > /greatsql/backup/logical/fgedudb_$(date +%Y%m%d).sql.gz

# 备份表结构
mysqldump -u root -pFGedu123456! –databases fgedudb –no-data > /greatsql/backup/logical/fgedudb_schema_$(date +%Y%m%d).sql

学习交流加群风哥QQ113257174

4.3 恢复实战

# 停止GreatSQL服务
systemctl stop greatsql

# 清理数据目录
rm -rf /greatsql/fgdata/*

# 准备备份
xtrabackup –prepare –target-dir=/greatsql/backup/full/20260409

xtrabackup: recognized server arguments: –datadir=/greatsql/fgdata
xtrabackup: recognized client arguments: –prepare –target-dir=/greatsql/backup/full/20260409
xtrabackup version 8.0.31-24 based on MySQL server 8.0.31 Linux (x86_64) (revision id: 6f7a29b)
1702785600 20:10:00 xtrabackup: cd to /greatsql/backup/full/20260409
1702785600 20:10:00 xtrabackup: This target seems to be already prepared.
xtrabackup: xtrabackup_logfile detected: size=8388608, start_lsn=(123456789)
1702785600 20:10:00 xtrabackup: using the following InnoDB configuration for recovery:
1702785600 20:10:00 xtrabackup: innodb_data_home_dir =
1702785600 20:10:00 xtrabackup: innodb_data_file_path = ibdata1:12M:autoextend
1702785600 20:10:00 xtrabackup: innodb_log_group_home_dir = ./
1702785600 20:10:00 xtrabackup: innodb_log_files_in_group = 2
1702785600 20:10:00 xtrabackup: innodb_log_file_size = 536870912
1702785600 20:10:00 xtrabackup: using O_DIRECT
1702785600 20:10:00 xtrabackup: starting shutdown with innodb_fast_shutdown = 1
1702785600 20:10:00 xtrabackup: innodb: page_cleaner: 1000ms intended loop took 4887ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)
1702785600 20:10:01 xtrabackup: innodb: Starting shutdown…
1702785600 20:10:01 xtrabackup: innodb: Shutdown completed; log sequence number 123456789
1702785600 20:10:01 xtrabackup: completed OK!

# 恢复备份
xtrabackup –copy-back –target-dir=/greatsql/backup/full/20260409

xtrabackup: recognized server arguments: –datadir=/greatsql/fgdata
xtrabackup: recognized client arguments: –copy-back –target-dir=/greatsql/backup/full/20260409
xtrabackup version 8.0.31-24 based on MySQL server 8.0.31 Linux (x86_64) (revision id: 6f7a29b)
1702785600 20:15:00 xtrabackup: cd to /greatsql/backup/full/20260409
1702785600 20:15:00 xtrabackup: Checking for prepared backup…
1702785600 20:15:00 xtrabackup: copying ibdata1 to /greatsql/fgdata/ibdata1
1702785600 20:15:00 xtrabackup: copying ./fgedudb/fgedu_users.ibd to /greatsql/fgdata/fgedudb/fgedu_users.ibd
1702785600 20:15:00 xtrabackup: copying ./fgedudb/fgedu_orders.ibd to /greatsql/fgdata/fgedudb/fgedu_orders.ibd
1702785600 20:15:00 xtrabackup: copying ./fgedudb/fgedu_products.ibd to /greatsql/fgdata/fgedudb/fgedu_products.ibd
1702785600 20:15:00 xtrabackup: copying ./fgedudb/fgedu_sales.ibd to /greatsql/fgdata/fgedudb/fgedu_sales.ibd
1702785600 20:15:00 xtrabackup: copying ./mysql/gtid_executed.ibd to /greatsql/fgdata/mysql/gtid_executed.ibd
1702785600 20:15:00 xtrabackup: copying ./mysql/innodb_index_stats.ibd to /greatsql/fgdata/mysql/innodb_index_stats.ibd
1702785600 20:15:00 xtrabackup: copying ./mysql/innodb_table_stats.ibd to /greatsql/fgdata/mysql/innodb_table_stats.ibd
1702785600 20:15:00 xtrabackup: copying ./mysql/table_stats.ibd to /greatsql/fgdata/mysql/table_stats.ibd
1702785600 20:15:00 xtrabackup: copying ./mysql/columns_priv.ibd to /greatsql/fgdata/mysql/columns_priv.ibd
1702785600 20:15:00 xtrabackup: copying ./mysql/db.ibd to /greatsql/fgdata/mysql/db.ibd
1702785600 20:15:00 xtrabackup: copying ./mysql/procs_priv.ibd to /greatsql/fgdata/mysql/procs_priv.ibd
1702785600 20:15:00 xtrabackup: copying ./mysql/proxies_priv.ibd to /greatsql/fgdata/mysql/proxies_priv.ibd
1702785600 20:15:00 xtrabackup: copying ./mysql/roles_mapping.ibd to /greatsql/fgdata/mysql/roles_mapping.ibd
1702785600 20:15:00 xtrabackup: copying ./mysql/tables_priv.ibd to /greatsql/fgdata/mysql/tables_priv.ibd
1702785600 20:15:00 xtrabackup: copying ./mysql/user.ibd to /greatsql/fgdata/mysql/user.ibd
1702785600 20:15:00 xtrabackup: creating directory /greatsql/fgdata/performance_schema
1702785600 20:15:00 xtrabackup: creating directory /greatsql/fgdata/sys
1702785600 20:15:00 xtrabackup: creating directory /greatsql/fgdata/fgedudb01
1702785600 20:15:00 xtrabackup: copying ./xtrabackup_info to /greatsql/fgdata/xtrabackup_info
1702785600 20:15:00 xtrabackup: chmod_file() changed permissions for /greatsql/fgdata/xtrabackup_info from 0755 to 0640
1702785600 20:15:00 xtrabackup: chown_file() changed ownership of /greatsql/fgdata/xtrabackup_info
1702785600 20:15:00 xtrabackup: copying ./ibtmp1 to /greatsql/fgdata/ibtmp1
1702785600 20:15:00 xtrabackup: chmod_file() changed permissions for /greatsql/fgdata/ibtmp1 from 0755 to 0600
1702785600 20:15:00 xtrabackup: chown_file() changed ownership of /greatsql/fgdata/ibtmp1
1702785600 20:15:00 xtrabackup: completed OK!

# 修复权限
chown -R greatsql:greatsql /greatsql/fgdata

# 启动GreatSQL服务
systemctl start greatsql

# 验证恢复结果
mysql -u root -pFGedu123456! -e “SHOW DATABASES;”

+——————–+
| Database |
+——————–+
| fgedudb |
| fgedudb01 |
| information_schema |
| mysql |
| performance_schema |
| sys |
+——————–+

Part05-风哥经验总结与分享

5.1 常见备份问题与解决方案

问题 解决方案
备份失败 检查备份工具配置,查看错误日志
备份速度慢 优化备份参数,使用并行备份
备份空间不足 使用压缩,清理过期备份
恢复失败 检查备份完整性,验证恢复环境

5.2 备份恢复最佳实践

  • 制定完善的备份策略
  • 定期测试备份恢复
  • 使用多种备份方法
  • 存储备份到异地
  • 监控备份执行情况
  • 文档化备份恢复流程

更多学习教程公众号风哥教程itpux_com

5.3 性能优化建议

# 优化xtrabackup参数
cat > /greatsql/scripts/backup.sh << 'EOF'
#!/bin/bash # backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 备份目录 BACKUP_DIR=/greatsql/backup DATE=$(date +%Y%m%d)
# 创建备份目录
mkdir -p $BACKUP_DIR/full/$DATE
# 执行全量备份
xtrabackup –backup \ –target-dir=$BACKUP_DIR/full/$DATE \ –user=root \ –password=GreatSQL123! \ –compress \ –compress-threads=4 \ –parallel=4 \ –throttle=100
# 清理7天前的备份
find $BACKUP_DIR/full -type d -mtime +7 -exec rm -rf {} \; echo “Backup completed: $DATE” EOF
# 设置脚本权限
chmod +x /greatsql/scripts/backup.sh

# 执行备份脚本 /greatsql/scripts/backup.sh

Backup completed: 20260409

备份策略检查表

风哥提示:制定备份策略时请检查以下项目:
  • ✅ 选择合适的备份类型
  • ✅ 制定合理的备份频率
  • ✅ 确保备份存储安全
  • ✅ 定期验证备份完整性
  • ✅ 测试恢复流程
  • ✅ 监控备份执行情况

from greatsql视频:www.itpux.com

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

联系我们

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

微信号:itpux-com

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