数据库备份全解析,包含大部分流行数据库国产数据库操作全解析!
数据库备份全解析包含大部分流行数据库国产数据库操作全解析一、备份核心概念速览开始之前快速对齐几个术语确保后面阅读无障碍概念大白话解释逻辑备份把表结构和数据转成SQL语句或专用文件可读可编辑慢但灵活物理备份直接拷贝数据库的数据文件速度快适合大库全量备份某一时刻的完整副本增量备份只备份自上一次备份以来变化过的数据块差异备份只备份自上一次全量备份以来变化的数据归档日志数据库会把每次修改记录写进这些日志物理热备和增量恢复的基石RPO/RTO能容忍丢失多少数据/能接受多长时间恢复业务生产铁律只要用物理热备或增量备份必须先打开数据库的“归档模式”否则备份必定失败。二、主流及国产数据库备份实战下面我们逐库展开每个数据库独立一节让你随时查阅。1. MySQLMySQL的备份工具分社区版和企业版这里只讲最通用、生产验证过的两种mysqldump(逻辑) 和Percona XtraBackup(物理)。1.1 逻辑备份 – mysqldump全量导出单个数据库mysqldump-uroot -p密码--databasesmydb --single-transaction--routines--triggers--events/backup/mydb_full_$(date%Y%m%d).sql参数说明--databases指定导出一个或多个库--single-transaction对于InnoDB导出过程中不锁表保证数据一致性--routines导出存储过程和函数--triggers导出触发器--events导出事件调度器导出全部数据库mysqldump-uroot -p密码--all-databases --single-transaction--routines--triggers--events/backup/all_db_$(date%Y%m%d).sql仅导出表结构mysqldump-uroot -p密码--no-data mydb/backup/mydb_schema.sql1.2 物理全量备份 – XtraBackup前提已安装percona-xtrabackup。xtrabackup--backup--userroot--password密码--target-dir/backup/base_$(date%Y%m%d)--parallel4参数--target-dir备份存放目录--parallel4并行线程数按CPU核数调整准备应用日志备份完必须执行这一步才能用于恢复xtrabackup--prepare--target-dir/backup/base_202506251.3 增量备份 – XtraBackup先做一次全量xtrabackup--backup--userroot--password密码--target-dir/backup/base--parallel4第一次增量基于全量xtrabackup--backup--userroot--password密码--target-dir/backup/inc1\--incremental-basedir/backup/base--parallel4第二次增量基于上一次增量xtrabackup--backup--userroot--password密码--target-dir/backup/inc2\--incremental-basedir/backup/inc1--parallel4恢复时按顺序准备# 先准备全量xtrabackup--prepare--apply-log-only --target-dir/backup/base# 合并增量1xtrabackup--prepare--apply-log-only --target-dir/backup/base --incremental-dir/backup/inc1# 合并增量2最后一次不加 --apply-log-onlyxtrabackup--prepare--target-dir/backup/base --incremental-dir/backup/inc2最后将/backup/base目录拷回数据目录启动MySQL即可。1.4 恢复验证逻辑备份验证在测试库导入mysql-uroot -p密码testdb/backup/mydb_full_20250625.sql检查表数量、抽样数据。物理备份验证恢复到一个空闲MySQL实例启动后执行CHECKSUM TABLE或跑业务SQL验证。2. PostgreSQLPostgreSQL生态的标准工具组合pg_dump(逻辑) pg_basebackup(物理全量) pg_probackup(全量增量)。2.1 逻辑备份 – pg_dump单库导出pg_dump-Upostgres-dmydb-Fc-f/backup/mydb_$(date%Y%m%d).dump-F c自定义格式支持并行恢复比纯SQL体积小如果希望导出为SQL文本换成-F p仅导出结构pg_dump-Upostgres-dmydb-s-f/backup/mydb_schema.sql全部数据库用pg_dumpallpg_dumpall-Upostgres-f/backup/all_db.sql2.2 物理全量备份 – pg_basebackup要求wal_level replica且已配置归档或至少允许流复制连接。pg_basebackup-Upostgres-D/backup/base_$(date%Y%m%d)-Ft-z-P-Xs-D目标目录-Fttar打包-z压缩-P显示进度-Xs使用流复制方式获取WAL确保备份一致性2.3 全量增量备份 – pg_probackup初始化备份目录pg_probackup init-B/backup/probackup pg_probackup add-instance-B/backup/probackup--instanceprod-D/var/lib/postgresql/data全量备份pg_probackup backup-B/backup/probackup--instanceprod-bFULL\-Upostgres-dpostgres--stream--temp-slot--progress-b FULL全量--stream流式传输WAL--temp-slot创建临时复制槽防止所需WAL被清除增量备份基于页级追踪pg_probackup backup-B/backup/probackup--instanceprod-bPAGE\-Upostgres-dpostgres--stream--temp-slot--progress2.4 恢复与验证恢复全量# 解压后直接拷贝至数据目录或使用 pg_probackup restorepg_probackup restore-B/backup/probackup--instanceprod-D/var/lib/postgresql/data_new\--recovery-target-actionpromote验证备份有效性pg_probackup validate-B/backup/probackup--instanceprod-i备份ID还可以通过--recovery-target进行时间点恢复测试。3. OracleOracle主推RMAN做物理备份Data Pump(expdp/impdp) 做逻辑备份。3.1 逻辑备份 – expdpexpdp system/密码PDB1DIRECTORYDPUMP_DIRDUMPFILEmydb_%U.dmpLOGFILEexp_mydb.log\FULLYPARALLEL4DIRECTORYOracle目录对象需提前创建FULLY全库导出PARALLEL44个并行通道按用户导出expdp system/密码PDB1DIRECTORYDPUMP_DIRSCHEMASscottDUMPFILEscott.dmp3.2 物理全量备份 – RMANRMANBACKUPDATABASEPLUS ARCHIVELOGDELETEINPUT;PLUS ARCHIVELOG同时备份归档日志DELETE INPUT备份成功后删除已备份的归档释放空间3.3 增量备份 – RMAN0级全量相当于增量基线RMANBACKUPINCREMENTALLEVEL0DATABASE;1级增量RMANBACKUPINCREMENTALLEVEL1DATABASE;差异增量默认只备份自上次任意级别备份以来变化的块。累积增量加CUMULATIVE则备份自上次0级以来所有变化。3.4 备份验证与恢复测试验证备份集完整性RMANVALIDATE BACKUPSET 备份集号;RMANRESTOREDATABASEVALIDATE;-- 完全模拟恢复过程但不实际写数据恢复演练到新位置RMANSETNEWNAMEFORDATABASETO/newpath/%b;RMANRESTOREDATABASE;RMANSWITCH DATAFILEALL;RMANRECOVERDATABASE;RMANALTERDATABASEOPENRESETLOGS;下面进入国产数据库操作方法很多和以上三大主流库一脉相承。4. 达梦数据库 DM8达梦的逻辑备份用dexp物理备份用DMRMAN命令行工具或 SQL 中的BACKUP语句。生产环境推荐 DMRMAN。4.1 逻辑备份 – dexp./dexpUSERIDSYSDBA/SYSDBA123localhost:5236FILE/backup/dm_full_$(date%Y%m%d).dmpLOGexp.logFULLYUSERID用户名/密码主机:端口FILE输出文件FULLY全库导出可按用户导出OWNER用户名按表TABLES表名4.2 物理全量备份 – DMRMAN前置条件数据库已开启归档模式ARCH_MODE1否则只能做冷备。进入 DMRMAN 工具./dmrman全量备份RMANBACKUPDATABASE/dm8/data/DAMENG/dm.iniFULLBACKUPSET/dm8/backup/full_250625;4.3 增量备份 – DMRMAN增量备份RMANBACKUPDATABASE/dm8/data/DAMENG/dm.iniINCREMENT BACKUPSET/dm8/backup/inc1_250625;增量备份自动基于上次全量或增量产生差异备份达梦称之为累计增量只备份自上次全量后变化的页。如果需要纯粹的差异增量基于上次备份可配合BASE ON语法。4.4 恢复与验证检查备份集RMANCHECKBACKUPSET/dm8/backup/full_250625;恢复数据库以全量增量为例RMANRESTOREDATABASE/dm8/data/DAMENG/dm.iniFROMBACKUPSET/dm8/backup/full_250625;RMANRECOVERDATABASE/dm8/data/DAMENG/dm.iniWITHBACKUPSET/dm8/backup/inc1_250625;RMANRECOVERDATABASE/dm8/data/DAMENG/dm.iniUPDATEDB_MAGIC;完成后重启数据库即可。5. 人大金仓 KingbaseES金仓高度兼容 PostgreSQL工具命名为sys_dump、sys_basebackup、sys_rman。5.1 逻辑备份 – sys_dumpsys_dump-Usystem-dmydb-Fc-f/backup/kingbase_mydb_$(date%Y%m%d).dump参数含义与pg_dump完全一致。5.2 物理全量备份 – sys_basebackup前提打开 WAL 归档kingbase.conf中wal_levelreplica配置archive_command。sys_basebackup-Usystem-D/backup/base_$(date%Y%m%d)-Ft-z-P-Xs5.3 全量增量备份 – sys_rman初始化sys_rman init-B/backup/sysrman sys_rman add-instance-B/backup/sysrman-D/opt/kingbase/data全量备份sys_rman backup-B/backup/sysrman-D/opt/kingbase/data-bfull-Usystem--progress增量备份基于上次备份sys_rman backup-B/backup/sysrman-D/opt/kingbase/data-binc-Usystem--progress5.4 恢复与验证列出备份sys_rman show-B/backup/sysrman验证备份sys_rman validate-B/backup/sysrman-i备份ID恢复到新目录sys_rman restore-B/backup/sysrman-D/data/kingbase_restore-i备份ID6. 华为 GaussDB (openGauss)GaussDB 的命令行工具也带着PG的影子gs_dump、gs_basebackup、gs_probackup。6.1 逻辑备份 – gs_dumpgs_dump-Ugaussdba-W密码-dmydb-Fc-f/backup/gaussdb_mydb_$(date%Y%m%d).dump-F c自定义格式-F p纯SQL。6.2 物理全量备份 – gs_basebackup要求wal_level archive并设置归档路径。gs_basebackup-D/backup/base_$(date%Y%m%d)-Ugaussdba-W-P-Ft-z-Xstream-X stream使用流复制方式获取WAL6.3 全量增量备份 – gs_probackup初始化gs_probackup init-B/backup/probackup gs_probackup add-instance-B/backup/probackup--instancegaussdb-D/opt/gaussdb/data全量gs_probackup backup-B/backup/probackup--instancegaussdb-bFULL-Ugaussdba-W--progress增量PTRACK页追踪gs_probackup backup-B/backup/probackup--instancegaussdb-bPTRACK-Ugaussdba-W--progress6.4 恢复与验证恢复gs_probackup restore-B/backup/probackup--instancegaussdb-D/opt/gaussdb_restore-i备份ID验证gs_probackup validate-B/backup/probackup--instancegaussdb-i备份ID7. 南大通用 GBase 8a MPPGBase 8a 底层兼容MySQL协议逻辑备份可直接用mysqldump物理备份则使用集群自带的gcrcman工具。7.1 逻辑备份同MySQLmysqldump-h集群VIP-ugbase -p密码mydb --single-transaction/backup/gbase_mydb.sql7.2 物理全量备份 – gcrcmangcrcman-ugbase -p密码--host管理节点IP--port5050进入交互式命令行后backuplevel0;或直接一条命令gcrcman-ugbase -p密码--host管理节点IP-ebackup level 07.3 增量备份backuplevel1;GBase 8a 的 level 0 为全量level 1 为增量自动基于上次 level 0 或 level 1。7.4 恢复与验证查看备份信息showbackup;恢复整个集群在 gcrcman 中recover 备份ID;恢复过程会自动从全量和增量叠加。验证恢复后建议跑CHECKSUM TABLE或自定义数据校验。8. OceanBase 社区版OceanBase 的备份依赖日志归档备份命令通过 obclient 执行 SQL物理备份和增量自动调度。8.1 逻辑备份使用 ob-dumperOceanBase 官方导出工具obdumperobdumper--host11.22.33.44--port2883-uroot-p密码\--databasemydb--output/backup/ob_mydb参数与 mysqldump 类似但支持分布式导出。8.2 物理备份设置备份目的端ALTERSYSTEMSETbackup_destfile:///backup/oceanbase;启动备份任务ALTERSYSTEMBACKUPDATABASE;OceanBase 会自动进行全量增量合并不需要手动区分。查看备份进度SELECT*FROMoceanbase.CDB_OB_BACKUP_JOBS;8.3 恢复与验证恢复前需要停止集群并启动恢复obclientALTER SYSTEM RESTORE DATABASE TOfile:///backup/oceanbaseUNTILTIME2025-06-25 02:00:00;OceanBase 支持时间点恢复。验证一般通过恢复到一个新的集群进行业务验证。9. TiDBTiDB 使用Dumpling做逻辑导出BR做物理全量/增量备份。9.1 逻辑备份 – Dumplingdumpling-uroot-P4000-h127.0.0.1-o/backup/tidb_dump_$(date%Y%m%d)\--filetypesql-t8--no-schemafalse-t 88个并发线程--no-schema false同时导出表结构9.2 物理全量备份 – BRbr backup full--pd127.0.0.1:2379\--storagelocal:///backup/tidb_full\--ratelimit128--log-file /var/log/br_backup.log--storage备份存储路径支持本地或S3--ratelimit限速(MB/s)防止影响业务9.3 增量备份 – BRbr backup full--pd127.0.0.1:2379\--storagelocal:///backup/tidb_inc\--lastbackupts$(cat/backup/last_backup_ts)--lastbackupts指定上次备份的时间戳BR自动找出变化数据。生产上常用脚本记录上次备份的gc_safepointbr backup full--pd127.0.0.1:2379\--storagelocal:///backup/tidb_$(date%Y%m%d%H%M)\--send-credentials-to-tikvtrue9.4 恢复与验证全量恢复br restore full--pd127.0.0.1:2379\--storagelocal:///backup/tidb_full\--ratelimit128验证备份文件br validate--storagelocal:///backup/tidb_fullBR 会快速检查备份集的完整性和校验和。三、通用备份策略与自动化无论什么数据库生产环境都建议遵循以下框架3-2-1 原则3份数据拷贝生产 两份备份2种不同介质本地磁盘 云对象存储/NAS1份异地存放防机房级灾难策略组合模板场景备份方式频次核心交易库物理全量 物理增量每周日全量每日增量分析查询库逻辑全量每日凌晨归档库全量逻辑每月1次所有库二进制日志/归档日志自动备份持续自动化示例以达梦为例的crontab# 每周日凌晨2点全量备份02* *0/dm8/bin/dmrmanCTLSTMTBACKUP DATABASE /dm8/data/DAMENG/dm.ini FULL BACKUPSET /backup/dm_full_$(date\%Y\%m\%d)# 周一至周六凌晨2点增量备份02* *1-6 /dm8/bin/dmrmanCTLSTMTBACKUP DATABASE /dm8/data/DAMENG/dm.ini INCREMENT BACKUPSET /backup/dm_inc_$(date\%Y\%m\%d)恢复演练不可少每月至少一次在隔离环境完整跑通恢复流程记录恢复耗时RTO并核实数据最新时间戳RPO。四、十大避坑要点归档没开物理热备和增量备份直接报错务必检查。备份用户权限不足逻辑导出需 SELECT、LOCK TABLES 等权限。磁盘空间爆满配置自动清理策略如find /backup -mtime 7 -delete。字符集不匹配导出导入务必加--default-character-setutf8mb4或相应设置。大表锁定InnoDB 用--single-transactionOracle 注意 undo 压力。并行度乱调并行数不要超过CPU核心数避免拖垮生产库。未校验备份集备份完立即运行 validate 或 checksum。跨大版本恢复优先使用逻辑备份物理备份很可能不兼容。忘记备份恢复脚本本身自动化脚本也要入仓库。只有本地备份务必再复制一份到异地防火灾、勒索。以上就是目前主流及国产数据库备份操作的完全手册。你只需找到对应数据库的章节复制命令、修改路径和密码就能迅速搭起生产级备份体系。备份是业务的保险绳现在就去跑通第一条命令吧。