如何通过服务器本地脚本自动下载并导入最新备份_跳过界面实现持续数据集成

冬杰小哥_9402

冬杰小哥_9402

2026-06-13

825人浏览

原创

优先用 wget --tries=5 --retry-connrefused --timeout=60 --continue 或 curl -fL --retry 3 --retry-delay 2 -o;下载后校验 gzip -t 和 sha256sum;用 mktemp -d 创建临时目录;导入分 zcat 解压与 mysql 执行两步;crontab 中用绝对路径、显式环境、--defaults-file 存密、日志重定向。

curlwget 下载备份文件时,如何确保下载完整不中断

直接用 curl -owget 下载大备份文件,常遇到连接断开、http 302 跳转失败、或服务端限速导致文件截断。这不是脚本写得不对,而是没处理网络不稳定和重试逻辑。

  • 优先用 wget --tries=5 --retry-connrefused --timeout=60 --continue:自动重试、跳过临时拒绝、续传断点
  • 避免 curl -O,改用 curl -fL --retry 3 --retry-delay 2 -o backup.sql.gz-f 确保 HTTP 错误码直接失败,不静默吞掉 4xx/5xx
  • 下载后必须校验:gzip -t backup.sql.gz(检查 gzip 完整性),再 sha256sum -c checksums.sha256(如果服务端提供)
  • 别把下载路径写死在 /tmp——它可能被清理;用 mktemp -d 创建专属目录,脚本退出前 rm -rf

导入 .sql.gz 到 MySQL 时,为什么 zcat file.sql.gz | mysql 常失败

看似一行命令很干净,但实际会丢错误、卡住、忽略字符集或权限问题,尤其当 SQL 文件含 CREATE DATABASE 或跨 schema 操作时。

  • 不要管道直连:zcat backup.sql.gz | mysql -u root -p... 无法捕获 mysql 进程自身的报错(比如认证失败、socket 拒绝),stderr 全被吞掉
  • 改用显式解压 + 导入两步:zcat backup.sql.gz > /tmp/backup.sql && mysql -u root --default-character-set=utf8mb4 ,方便加 <code>set -e 和日志定位
  • 注意 mysql 默认不读取 ~/.my.cnf 的密码配置(安全限制),要么用 --defaults-extra-file= 指定,要么用 MYSQL_PWD 环境变量(仅限本地)
  • 大文件导入前先关 autocommit:mysql -e "SET autocommit=0; SOURCE /tmp/backup.sql;",否则每条 INSERT 都刷盘,慢十倍以上

如何让脚本判断“最新备份”而不是硬编码文件名

备份文件名带时间戳是常见做法,但靠 ls -t | head -1 极不可靠:文件系统修改时间可能被 touch 伪造,NFS 挂载下 ls -t 顺序不一致,且没考虑文件是否正在写入中(如 backup.sql.gz.part)。

Test Curl 2
Test Curl 2

父母的功课——育儿心理学对话支持技能(心虫增强版)。提供结构化对话、情绪识别、场景匹配与安全检测;可选Python脚本(scripts/)在SKILL_DIR/data/本地存储评估历史、洞察与会话状态,不对外传输。核心路径:觉察(看见防御)→接纳(慈悲是……

下载
  • 服务端应提供元数据接口,例如 curl -s https://backup.example.com/latest.json 返回 {"filename":"20240520-020001.sql.gz","size":123456789,"finished":true}
  • 若只能列目录,用 find /path/to/backups -name "*.sql.gz" -mmin -180(近 3 小时内修改)比 ls -t 更稳;再配合 stat -c "%Y" file 取纳秒时间戳排序
  • 关键防护:检查文件大小是否 > 1MB(排除空文件)、是否 lsof +D /path/to/backups 中无占用进程、用 inotifywait -t 5 -e moved_to /path/to/backups 等上传完成信号

定时任务里执行导入,为什么经常“找不到命令”或“权限被拒”

crontab 环境极简:PATH 很短、没加载 shell profile、HOME 是 root 或 daemon 用户家目录,mysqlgzip 路径找不到,~/.my.cnf 也读不到。

  • 所有命令写绝对路径:/usr/bin/wget/usr/bin/mysql/bin/gzip;用 which wget 确认
  • 在 crontab 条目开头显式声明环境:PATH=/usr/local/bin:/usr/bin:/bin SHELL=/bin/bash HOME=/root
  • 数据库密码别放命令行(会被 ps aux 看到),也不依赖 ~/.my.cnf;改用 mysql --defaults-file=/etc/mysql/backup.cnf,该文件权限设为 600,属主为运行脚本的用户
  • 加日志重定向:2>&1 | logger -t db-restore,不然 cron 失败你根本不知道

最麻烦的不是下载或导入本身,而是备份生成过程和服务端状态不可控——比如备份脚本中途崩溃但文件已写入,或者 S3 的 eventual consistency 导致 list objects 返回旧列表。这类问题没法靠客户端脚本彻底规避,得和服务端约定明确的就绪标记(如上传完成后 PUT 一个 backup.sql.gz.done 空文件)。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

mysql curl 数据集成平台

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

417

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

820

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2412

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

816

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

709

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

374

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2156

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

3972

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

647

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 170人学习

使用phpenv集成环境安装极致CMS
使用phpenv集成环境安装极致CMS

共2课时 | 274人学习