GBase 8a
备份恢复
文章

GBase 8a 数据备份与恢复完整指南,生产环境必备技能

发表于2026-03-20 14:46:1644次浏览1个评论

GBase 8a 数据备份与恢复完整指南,生产环境必备技能

数据备份是 DBA 最重要的日常工作之一,备份做得好,出了事才能救得回来。本文整理 GBase 8a 常用的备份与恢复方案。

一、逻辑备份:gcdump 工具

gcdump 是 GBase 8a 自带的逻辑备份工具,导出的是 SQL 文件,可读性强,适合小规模数据备份和跨版本迁移。

# 备份单个数据库
gcdump -u gbase -p密码 -h 127.0.0.1 analytics_db > /backup/analytics_db_20240301.sql

# 备份单张表
gcdump -u gbase -p密码 analytics_db orders > /backup/orders_20240301.sql

# 备份所有数据库
gcdump -u gbase -p密码 --all-databases > /backup/all_db_20240301.sql

# 只备份表结构,不备份数据
gcdump -u gbase -p密码 --no-data analytics_db > /backup/schema_only.sql

# 压缩备份节省空间
gcdump -u gbase -p密码 analytics_db | gzip > /backup/analytics_db_20240301.sql.gz

二、恢复逻辑备份

# 恢复单个数据库
gccli -u gbase -p密码 analytics_db < /backup/analytics_db_20240301.sql

# 恢复压缩备份
gunzip < /backup/analytics_db_20240301.sql.gz | gccli -u gbase -p密码 analytics_db

三、备份验证

备份完成后一定要验证备份文件是否可用,很多团队只备份不验证,等到真正要恢复时发现备份文件损坏。

# 检查备份文件完整性
gzip -t /backup/analytics_db_20240301.sql.gz && echo "文件完整" || echo "文件损坏"

# 在测试环境还原验证
gccli -u gbase -p密码 -e "CREATE DATABASE analytics_db_test;"
gccli -u gbase -p密码 analytics_db_test < /backup/analytics_db_20240301.sql
gccli -u gbase -p密码 -e "SELECT COUNT(*) FROM analytics_db_test.orders;"

四、自动化备份脚本

#!/bin/bash
# 每日自动备份脚本

BACKUP_DIR="/backup/gbase"
DATE=$(date +%Y%m%d)
DB_LIST="analytics_db app_db report_db"
KEEP_DAYS=7  # 保留最近7天

mkdir -p $BACKUP_DIR

for DB in $DB_LIST; do
    gcdump -u gbase -p'密码' $DB | gzip > $BACKUP_DIR/${DB}_${DATE}.sql.gz
    echo "[$(date)] $DB 备份完成"
done

# 清理超过保留期的旧备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +$KEEP_DAYS -delete
echo "[$(date)] 旧备份清理完成"

将脚本加入 crontab 实现每日自动备份:

# 每天凌晨2点执行备份
0 2 * * * /opt/scripts/gbase_backup.sh >> /var/log/gbase_backup.log 2>&1

五、备份注意事项

  1. 备份文件不要和数据库放在同一块磁盘,磁盘故障会导致数据和备份同时丢失
  2. 定期做恢复演练,至少每季度在测试环境完整恢复一次,确认备份有效
  3. 大表备份耗时较长,建议在业务低峰期执行,避免影响查询性能
  4. 记录每次备份的数据量和耗时,异常波动可能预示数据异常或存储问题
  5. gcdump 备份期间不锁表,但可能导致备份数据不是同一时间点的快照,对一致性要求高的场景需要额外处理

评论

登录后才可以发表评论
曾浩轩发表于 2个月前
谢谢分享