linux服务器数据库怎么备份,备份命令有哪些?

备份Linux服务器上的数据库,最稳妥的答案是:根据数据量和业务容忍度,组合使用逻辑备份(如mysqldump)与物理备份(如XtraBackup),并通过定时任务和异地存储形成闭环。单靠一条命令解决不了所有问题,真正可靠的备份方案,需要把备份、校验、恢复演练三个环节串起来。

先搞清楚你的数据库属于哪种类型

不同数据库的备份工具和策略差异很大,动手之前先确认自己用的是哪一类,Linux服务器上最常见的是MySQL/MariaDB和PostgreSQL,其次是MongoDB、Redis这类NoSQL,普通企业场景中,MySQL系占了相当大的比例,所以下文以MySQL为主展开,同时给出PostgreSQL的关键命令。

21.Linux任务计划实现mysqldump自动备份数据库
加载中
21.Linux任务计划实现mysqldump自动备份数据库

MySQL的备份方式可以粗分为两类:

  • 逻辑备份:用mysqldump导出SQL语句,生成可读的文本文件,优点是简单、跨版本兼容性好,缺点是数据量大时备份和恢复都慢。
  • 物理备份:直接复制数据文件目录,配合工具保证一致性,备份速度快,恢复也快,但要求数据库版本和操作系统基本一致。

行业共识认为,生产环境应该物理备份与逻辑备份搭配使用,逻辑备份用于小规模数据或误删单表后的快速恢复,物理备份用于大规模数据的完整恢复场景。

选择备份策略:没有万能方案,只有合适组合

备份策略的核心指标是RPO(恢复点目标)和RTO(恢复时间目标),RPO决定你最多能丢多少数据,RTO决定你多久能恢复业务,下面这个对比可以帮你快速定位需求:

备份方式 恢复粒度 备份耗时 恢复耗时 适合场景
mysqldump全量 单库/单表 中等 较慢 数据量小于50GB,业务可接受小时级恢复窗口
XtraBackup全量 整个实例 大实例,要求分钟级恢复
binlog增量 精确到秒 频繁 需重放日志 核心交易数据,RPO要求接近零
云平台快照 整机 极快 配合云盘使用,应急恢复

小数据量场景(50GB以下)

直接用mysqldump做每日全量备份,保留最近7天或15天的备份文件,命令如下:

mysqldump -u备份账号 -p --single-transaction --quick --routines --triggers --events mydatabase > /backup/mydatabase_$(date +%Y%m%d).sql

linux服务器数据库怎么备份,备份命令有哪些?

--single-transaction参数很关键,它利用InnoDB的事务特性,在不锁表的情况下获得一致性快照,备份完成后记得用gzip压缩,SQL文件压缩后体积能缩小到原来的五分之一左右,节省磁盘空间。

大数据量场景(100GB以上)

mysqldump在这种规模下表现很差,导出耗时数小时,恢复更慢,业内专家指出,百GB以上规模的MySQL实例,优选使用Percona XtraBackup做物理备份。

xtrabackup --backup --target-dir=/backup/full_$(date +%Y%m%d) --user=备份账号 --password=

这个命令直接复制InnoDB数据文件,备份速度比mysqldump快一个数量级,恢复时先应用日志,再还原目录,步骤为:

xtrabackup --prepare --target-dir=/backup/full_20260101
xtrabackup --copy-back --target-dir=/backup/full_20260101

对数据丢失零容忍的场景

物理备份加上binlog增量日志,binlog记录了所有写操作,配合全量备份,可以将数据库恢复到任意时间点,恢复流程是:先恢复最近一次全量备份,再重放全量备份之后的binlog,直到故障发生前的那一刻,这个方案RPO理论上是零,代价是需要额外开启log_bin并妥善管理binlog文件。

linux服务器mysql数据库备份命令怎么写才规范

很多教程直接让你用root账号执行备份,这是典型的错误示范,用root做备份存在两个隐患:一是密码暴露风险大,二是误操作概率高,正确做法是创建专用备份账号,只授予备份所需的最小权限:

CREATE USER 'backup_user'@'localhost' IDENTIFIED BY '强密码';
GRANT SELECT, SHOW VIEW, RELOAD, REPLICATION CLIENT, EVENT, TRIGGER ON . TO 'backup_user'@'localhost';

权限说明:SELECTSHOW VIEW用于读取数据,RELOAD用于--single-transaction的全局锁,REPLICATION CLIENT用于读取binlog位置,EVENTTRIGGER确保导出存储过程和触发器。

核心安全配置清单

备份账号建好后,还应在MySQL配置文件中调整两个参数:

  • max_allowed_packet:调整为64M或更大,防止大字段导致备份失败
  • innodb_strict_mode:保持默认开启即可

linux数据库自动备份脚本怎么写的完整过程

手动执行备份只是起点,生产环境必须做自动化,写一个健壮的备份脚本,无非是以下几个步骤,但不建议直接复制网上的脚本,你需要理解每段逻辑。

linux服务器数据库怎么备份,备份命令有哪些?

第一步:定义变量和目录结构

#!/bin/bash
BACKUP_BASE="/data/db_backup"
BACKUP_DAY=$(date +%Y%m%d)
BACKUP_DIR="${BACKUP_BASE}/${BACKUP_DAY}"
MYSQL_USER="backup_user"
MYSQL_PASSWORD="你的密码"
DATABASES="demo_db,order_db"

备份目录按日期划分,方便后面的清理策略按天切分。

第二步:创建目录并执行备份

mkdir -p "${BACKUP_DIR}"
for db in $(echo ${DATABASES} | tr ',' ' '); do
    mysqldump -u${MYSQL_USER} -p${MYSQL_PASSWORD} --single-transaction --quick "${db}" | gzip > "${BACKUP_DIR}/${db}_$(date +%H%M).sql.gz"
done

注意mysqldump管道直接输出到gzip,避免中间产生未压缩的临时文件,这样写入磁盘的同时完成压缩,减少IO开销。

第三步:校验备份文件的完整性

这一步大多数人会忽略,但恰恰最该重视,用gunzip -t检查压缩包是否损坏:

find "${BACKUP_DIR}" -name ".gz" -exec gunzip -t {} ;

也可以查看压缩包中最后一条SQL语句是否为-- Dump completed,来判断导出是正常结束的。

第四步:自动清理过期备份

磁盘被备份文件打满,是运维事故高发原因,保留7天本地备份,多余删除:

find "${BACKUP_BASE}" -type d -name "2026" -mtime +7 -exec rm -rf {} ;

这段逻辑确保备份文件不会无限增长,把磁盘空间耗尽的风险提前消化。

第五步:配置crontab定时任务

crontab -e
# 每天凌晨2点执行备份脚本
0 2    /usr/local/bin/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1

凌晨2点通常是业务低峰期,备份对线上性能的影响最小,日志重定向到独立文件,方便事后排查。

一个更稳妥的送异地方案

本地备份只是第一道防线,服务器硬盘故障、机房断电、勒索病毒都会让本地备份和原数据一起灰飞烟灭,Linux自带的rsync结合免密认证,可以把备份文件推送到另一台服务器或对象存储。

rsync -avz --delete /data/db_backup/ backup@192.168.1.100:/data/backup_repo/

在目标服务器上配置SSH密钥认证,就能实现无人工干预的异地同步,近年来的实践显示,异地备份是应对勒索病毒最有效的手段之一攻击者拿不到远端那份历史备份,你就掌握了恢复的底牌。

linux服务器数据库怎么备份,备份命令有哪些?

Linux服务器数据库备份方案落地还要补两个坑

备份做好只是完成了上半场,下半场要证明备份真的可用。

恢复演练的实操步骤

定期做恢复演练,在测试环境搭一个数据库实例,从最近的备份文件完整恢复一次,重点是验证两个问题:备份文件是否完整、恢复出来的数据是否一致,恢复后抽查几张核心表的数据,对比源库的记录数,如果记录数对不上,备份流程中存在逻辑漏洞,需要排查。

流程用文字表达就是:

  1. 准备一台与生产环境同版本的测试服务器
  2. 同步最新的备份文件到测试机
  3. 解压备份文件,执行恢复导入
  4. 检查恢复后的数据库可访问性
  5. 对比核心业务表的记录数和关键日期字段

数据库和备份文件都加密的意识

MySQL的数据文件默认不加密,备份出基本等同于数据裸奔,建议用GPG对备份文件加密再传输,或者至少使用openssl enc做对称加密:

openssl enc -aes-256-cbc -salt -in demo_db_20260101.sql.gz -out demo_db_20260101.sql.gz.enc -k 加密口令

解密恢复时用同样的口令反向操作,成本很低,但能让备份数据在泄露场景下依然安全。

Q&A:linux服务器数据库怎么备份数据库常见疑问

问:数据库每天都会更新,增量备份和全量备份怎么配合?

配合策略是:每周日做一次全量备份,周一至周六做每天的增量备份,增量备份通过binlog实现,备份内容是从上次全量备份以来的所有binlog文件,恢复时先还原全量备份,再按顺序重放binlog,即可恢复到增量时间点,这样既控制了备份文件体积,又能把数据丢失窗口压缩到很小。

问:没有专门备份工具的情况下,直接tar打包数据库文件目录行不行?

如果数据是MyISAM引擎且业务处于停写状态,tar打包文件目录可以工作,但对于InnoDB引擎,直接打包数据目录得出的备份文件大概率是不一致的,因为InnoDB的缓冲池中可能还有未落盘的数据,文件系统层面的文件快照无法保证事务一致性,除非你的表都是MyISAM、且能接受停机备份,否则不建议这样做,云服务器厂商提供的磁盘快照功能倒是可以绕过这个问题,但快照一致性依赖于底层存储机制,下单前要和厂商确认是否支持崩溃一致性。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/606199.html

(0)
云南PDU服务器专用电源多少钱,哪里买更靠谱?
上一篇 2026年8月28日 23:37
为什么5e老是匹配到香港服务器,怎么解决?
下一篇 2026年8月28日 23:45

相关推荐

  • AIoT软件产品经理转正难吗?产品经理转正述职报告怎么写

    AIoT软件产品经理成功转正的核心在于证明自身具备“技术理解力”与“商业变现力”的双重闭环能力,即在深刻理解物联网底层技术逻辑的基础上,能够通过产品迭代实现业务数据的正向增长,转正并非仅仅是时间的自然过渡,而是一个从“执行者”向“操盘手”蜕变的关键考核期,核心评判标准在于产品经理是否建立了可复制的方法论,以及是……

    2026年3月19日
    11600
  • Excel2007工具选项在哪?如何打开Excel2007工具选项

    在Excel 2007中,通过点击左上角的圆形Office按钮,选择底部的“Excel选项”即可进入工具选项设置界面,这是自定义工作区、调整公式计算方式及管理加载项的核心入口,很多用户在使用Excel 2007时,常常觉得界面不够顺手,或者找不到某些高级功能,Excel 2007的“工具选项”(即“Excel选……

    2026年7月4日
    3200
  • ajax请求怎么存cookies?ajax跨域请求携带cookie

    Ajax请求本身无法直接操作Cookie,必须通过后端服务器在HTTP响应头中设置Set-Cookie,或者前端使用document.cookie API配合Ajax完成数据交互后手动写入,在现代Web开发中,前后端分离架构已成为绝对主流,开发者经常面临一个困惑:为什么我在前端用Ajax发送了登录请求,后端也返……

    2026年5月31日
    4900
  • ajax怎么与数据库交互,ajax连接数据库完整步骤

    AJAX与数据库交互并非直接连接,而是通过后端服务器作为中介,利用JSON格式传输数据,实现页面无刷新更新,很多初学者常误以为前端JavaScript能直接操作MySQL或Oracle,这其实是一个巨大的认知误区,浏览器出于安全考虑,严禁前端代码直接访问本地或远程数据库,真正的交互链路是:前端发起请求 -&gt……

    2026年6月4日
    4600
  • ai与密码学有什么关系?ai密码学应用前景如何

    人工智能技术的爆发式增长,正在重塑信息安全的底层逻辑,AI与密码学的深度融合已不再是单纯的技术迭代,而是决定未来数字世界信任体系的关键基石,传统密码学面临算力飞跃带来的生存危机,而人工智能不仅充当了破译者的角色,更成为了新一代加密技术的构建者,这种攻防转换的动态博弈,构成了当前网络安全领域的核心图景, 算力危机……

    2026年3月9日
    15900
  • AIoT是用什么语言开发?AIoT开发主流编程语言有哪些

    AIoT(人工智能物联网)的开发并非依赖单一编程语言,而是基于多语言协同、分层架构的技术体系,核心结论是:C/C++主宰底层硬件与嵌入式开发,Python统领上层AI算法与数据处理,Java与JavaScript则广泛应用于应用层与云端交互,这种组合既保证了物联网设备对实时性和低功耗的苛刻要求,又满足了人工智能……

    2026年3月19日
    8800
  • Excel中$G$1是什么?绝对引用$G$1怎么用

    在Excel中使用$G$1是为了将单元格G1的引用固定,确保在复制公式时,该单元格地址不会随位置变化而改变,这是处理“绝对引用”最基础且高效的操作,为什么你的公式一拉就错?揭秘$G$1的核心逻辑很多用户在处理Excel数据时,经常遇到一个令人抓狂的现象:明明第一个单元格的公式是对的,往下拖动填充柄后,结果却全部……

    2026年7月12日
    5500
  • ASP.NET输出图片代码究竟有多简单?30秒学会高效处理图片输出!

    在ASP.NET中输出图片的核心方法是使用Response.BinaryWrite()结合图片的字节流数据,并通过设置ContentType指定MIME类型,以下是可直接使用的代码示例:// 从文件系统读取图片并输出string imagePath = Server.MapPath("~/images……

    2026年2月4日
    11800
  • CloudCone美国SC2云服务器月付$4.98值得买吗,云主机性价比排行

    CloudCone美国SC2云服务器凭借$4.98/月的极致性价比,成为预算有限且追求稳定性的个人开发者与小型企业的首选方案,其2核2G配置足以支撑轻量级Web服务与数据库应用,在云计算市场日益内卷的当下,寻找一款既便宜又稳定的VPS并非易事,许多用户在大厂高昂的账单面前望而却步,又在廉价但频繁的宕机服务中深受……

    2026年7月1日
    1200
  • 合肥机柜租用一个月费用怎么谈,多少钱一个月

    合肥机柜租用一个月费用谈判的核心在于精准匹配自身需求与运营商资源,通过对比2-3家报价并锁定带宽、电力等可变因素,完全可以将月费控制在本地市场的主流区间内,合肥机柜租用一个月费用怎么谈?先看清本地行情谈判前先把当地市场摸透,合肥作为中部地区数据中心聚集地,机房资源集中在高新区、经开区以及蜀山产业园,主要由电信……

    2026年8月11日
    1300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注