MySQL / PostgreSQL 单表及表数据备份恢复实施方案

MySQL / PostgreSQL 单表及表数据备份恢复实施方案

一、方案概述

本方案针对数据库单张数据表,提供标准化备份、恢复操作,包含:整表(结构+数据)备份、仅表结构备份、仅表数据备份、条件增量备份,同时适配 MySQL、PostgreSQL 两大主流数据库,均提供生产安全执行命令,支持无锁在线备份、压缩备份,适用于日常运维、数据迁移、误删回滚场景。

核心适用场景:无需整库备份,仅需对业务核心单表做快照备份与恢复。

二、MySQL 单表备份与恢复方案(mysqldump)

工具:系统自带 mysqldump,无需额外安装,生产通用、稳定可靠。

1、核心参数说明(生产必备)

  • --single-transaction:InnoDB 引擎无锁热备,不阻塞业务读写(生产强制推荐)
  • -d:仅备份表结构,不包含数据
  • -t:仅备份表数据,不包含建表语句
  • --where:条件筛选,备份部分数据

2、备份命令(可直接落地)

2.1 整表备份(结构+全部数据,生产推荐)

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Plain Text # 格式:mysqldump -u用户名 -p 数据库名 表名 --single-transaction > 备份文件路径 mysqldump -uroot -p test_db user --single-transaction > /backup/mysql/user_full_$(date +%Y%m%d).sql |

执行后回车输入密码,避免明文密码泄露,安全合规。

2.2 仅备份表结构(无数据)

|---------------------------------------------------------------------------------|
| Plain Text mysqldump -uroot -p test_db user -d > /backup/mysql/user_struct.sql |

2.3 仅备份表数据(无建表语句)

|----------------------------------------------------------------------------------------------------|
| Plain Text mysqldump -uroot -p test_db user -t --single-transaction > /backup/mysql/user_data.sql |

2.4 条件备份(部分数据)

|------------------------------------------------------------------------------------------------------------------------------------------|
| Plain Text # 示例:仅备份id小于1000的数据 mysqldump -uroot -p test_db user --single-transaction --where="id < 1000" > /backup/mysql/user_part.sql |

2.5 压缩备份(节省磁盘,大表必备)

|-----------------------------------------------------------------------------------------------------------------------|
| Plain Text mysqldump -uroot -p test_db user --single-transaction | gzip > /backup/mysql/user_$(date +%Y%m%d).sql.gz |

3、恢复命令

3.1 普通sql文件恢复

|----------------------------------------------------------------------------|
| Plain Text mysql -uroot -p test_db < /backup/mysql/user_full_20260825.sql |

3.2 压缩文件恢复

|-------------------------------------------------------------------------------------|
| Plain Text gzip -d -c /backup/mysql/user_20260825.sql.gz | mysql -uroot -p test_db |

4、库内快速临时备份(无文件)

适用于临时快照,不生成磁盘文件,仅库内复制表:

|----------------------------------------------------------------------------------------------------------|
| Plain Text -- 复制表结构 CREATE TABLE user_bak LIKE user; -- 复制全部数据 INSERT INTO user_bak SELECT * FROM user; |

5、MySQL注意事项

  • InnoDB 引擎必须加 --single-transaction 实现无锁备份
  • MyISAM 引擎不支持事务,备份会锁表,建议低峰期操作
  • 备份文件默认包含 DROP TABLE 语句,恢复会覆盖原表,需提前确认

三、PostgreSQL 单表备份与恢复方案(pg_dump)

工具:pg_dump(PostgreSQL 自带备份工具),支持单表精细备份、无锁热备,适配生产环境。

1、核心参数说明

  • -t 表名:指定备份单张表
  • -s:仅备份表结构,不包含数据
  • -a:仅备份表数据,不包含表结构
  • --where:条件筛选备份部分数据
  • -F c:自定义压缩格式,备份效率更高

2、备份命令(可直接落地)

默认切换 postgres 系统用户执行:su - postgres

2.1 整表备份(结构+全部数据,生产推荐)

|--------------------------------------------------------------------------------------------------------------------------------------------------------|
| Plain Text # 格式:pg_dump -h地址 -U用户名 -d数据库名 -t表名 > 备份文件 pg_dump -h 127.0.0.1 -U postgres -d test_db -t user > /backup/pg/user_full_$(date +%Y%m%d).sql |

2.2 仅备份表结构

|-------------------------------------------------------------------------------------------------|
| Plain Text pg_dump -h 127.0.0.1 -U postgres -d test_db -t user -s > /backup/pg/user_struct.sql |

2.3 仅备份表数据

|-----------------------------------------------------------------------------------------------|
| Plain Text pg_dump -h 127.0.0.1 -U postgres -d test_db -t user -a > /backup/pg/user_data.sql |

2.4 条件备份(部分数据)

|-----------------------------------------------------------------------------------------------------------------|
| Plain Text pg_dump -h 127.0.0.1 -U postgres -d test_db -t user --where="id < 1000" > /backup/pg/user_part.sql |

2.5 压缩二进制备份(大表首选,体积小、恢复快)

|-------------------------------------------------------------------------------------------------------------|
| Plain Text pg_dump -h 127.0.0.1 -U postgres -d test_db -t user -F c -f /backup/pg/user_$(date +%Y%m%d).dump |

3、PostgreSQL 恢复命令

3.1 普通SQL文件恢复

|------------------------------------------------------------------------------------------|
| Plain Text psql -h 127.0.0.1 -U postgres -d test_db < /backup/pg/user_full_20260825.sql |

3.2 压缩dump文件恢复(专用pg_restore)

|-----------------------------------------------------------------------------------------|
| Plain Text pg_restore -h 127.0.0.1 -U postgres -d test_db /backup/pg/user_20260825.dump |

4、库内快速临时备份(无文件)

|---------------------------------------------------------------------------------------------------------------------------|
| Plain Text -- PG复制表结构+数据(快速快照) CREATE TABLE user_bak (LIKE user INCLUDING ALL); INSERT INTO user_bak SELECT * FROM user; |

5、PostgreSQL注意事项

  • pg_dump 全程无锁备份,不阻塞业务读写,适配所有生产版本
  • 恢复前建议清空目标表数据,避免主键冲突
  • 二进制 .dump 格式仅支持 pg_restore 恢复,不可用 psql 直接执行
  • 远程备份需开放数据库IP访问权限、防火墙端口

四、方案总结(运维速查)

|-----------|--------------------------------|-----------------|
| 备份类型 | MySQL 核心命令 | PostgreSQL 核心命令 |
| 整表(结构+数据) | mysqldump --single-transaction | pg_dump -t 表名 |
| 仅表结构 | mysqldump -d | pg_dump -s |
| 仅表数据 | mysqldump -t | pg_dump -a |
| 条件数据备份 | --where 参数 | --where 参数 |

相关推荐
Omics Pro11 小时前
微软:多模态生物世界模型
数据库·人工智能·算法·microsoft·机器学习·自然语言处理
字节渡客11 小时前
接口明明返回成功,数据库偶尔就是没写入
数据库
Ivanqhz11 小时前
KV Cache
服务器·数据库·人工智能·深度学习·算法
Omics Pro11 小时前
~30,000+引用!理论2005,R包2008,多组学集成AI增强
开发语言·数据库·人工智能·算法·机器学习·自然语言处理·r语言
呆萌很12 小时前
数据库逻辑结构设计
数据库
howdoyoudo20260612 小时前
当新案例冲击旧框架:分类系统的宿命与修正路径
大数据·网络·数据库·人工智能·安全·ai·分类
自己的九又四分之三站台12 小时前
GeoPackage 到底适合什么场景:从 SQLite 容器到空间数据格式选型
数据库·oracle·sqlite
东方护航数据恢复(深圳)12 小时前
勒索病毒加密数据库怎么办?深圳 0 赎金解密恢复实录【东方护航数据恢复深圳店】
数据库·数据恢复·服务器数据恢复·勒索病毒·数据镜像
倔强的石头_12 小时前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
数据库
溪语流沙12 小时前
【Web全栈进阶】PostgreSQL上手:Docker跑库 + 把早报站从SQLite迁过去
前端·docker·postgresql