服务器上的运维操作,还是用 Python 实现比较方便,因为可以随意在服务器上修改 Python 脚本,方便调试。
真实需求
定期将多个网站后台的数据库中的文章表和产品表导出。每个数据库一个文件。
导出到一个临时目录,然后将每个文件生成一个独立的 zip 压缩包。然后移动到指定的目录下。这个目录是 linode bucket 挂载在 linux 系统中的目录。因为导出的数据库文件很大,所以需要生成 zip 压缩包,才移动过来。
请使用 Python 脚本实现(Python 3.12.3),尽量不要依赖三方库。方便我部署在 ubuntu server 服务器上,并且以系统 crontab 计划任务执行,每日凌晨 3 点执行。
是否需要导出,通过判断目标目录下的 export_time.txt 文件,里面列出了每个数据库的最后一次导出时间,如果不存在,则代表需要导出一次。然后把导出时间写入。
判断当前数据库昨日是否有新增的产品或者文章,如果有,则导出全部产品和文章;如果没有,则不需要导出。
结果说明
在导出之后,在 linode bucket 中,更新文件 export_time.txt 把最近一次的数据库导出时间写进去。每个数据库一个时间。
导出方法
因为 mysql 是安装在 docker 中,需要使用 docker compose 命令进行导出。示例:
cd /var/docker_compose_xxx
docker compose exec mysql /usr/bin/mysqldump -u root --password=my_password database_name > database_name.sql
数据表名
- article: 文章表
- product: 产品表
列出需求之后,基本 AI 一次性就能把 Python 脚本写好。
zip 压缩效果
一个 3G 的 SQL 数据库文件,zip 压缩后也就 300M,真的厉害,节省了 90% 的数据传输时间。