单次备份直接跑:
1 | docker exec -it mysql容器名/id mysqldump --all-databases -u用户 -p > ./mysql-backup/backup_$(date +%Y%m%d_%H%M).sql |
命令行提示输入密码
注意使用--all-databases
会连 mysql 本身内部数据库也导出。
批量定时让 AI 写了个脚本,改了几个版本,测试过没啥太大问题。
不过这个版本会把密码留在命令行里,我这里是单独建了个 localhost 能用的密码,不放心可以写临时文件/放环境变量等方法。
会创建当前时间的文件夹,里面按照每个数据库存放对应名字的 sql,设置了过期时间。
这个只能针对比较小的数据库备份,几 G 的无所谓,几十 G 上百 G 的就很慢了(这种业务量还是买云上的数据库吧)。
定时部分直接用 crontab 调这个脚本就可以了。
1 |
|