定时备份mysql/mariadb数据库并上传至tgbot
前情提要:
前文利用koyeb免费自建bitwarden服务端可知博主之前已经将bitwarden自建的vaultwarden服务端部署在koyeb,并利用db4free提供的免费数据库实现了数据的永久存储。虽说这样基本不会有什么问题了,但db4free毕竟是别人提供的在线数据库,为了以防万一其跑路或者删数据库,今天特地花时间构思了数据库备份的方法。
本文分为两节:
- 基本构思
- 定时推送
基本构思
备份数据库
想要备份mysql/mariadb的数据库,最方便的莫过于mariadb或mysql自带的mysqldump命令了,只需简单一行就可以将数据库备份到指定的文件。
1 |
|
依次填入对应内容后即可备份你的数据库,为了方便记录和存档,这里在生成的备份文件的文件名处添加了date +%F
来生成带日期的文件名。
上传至tgbot
其实这里上传到什么地方都可以,你可以选择部署一个rclone将文件上传到你的onedrive、google drive、webdav等任何网盘去,也可以直接扔到github的releases去,但这里为了图方便(只需要一行就能解决它不香吗?),博主就直接选择了通过curl命令将文件上传给tgbot发送给自己。
1 |
|
使用上述命令就可以简单的将你的数据库备份文件上传到你的tgbot处,从而实现云端存储。
定时推送
方案一:vps、机顶盒等
如果你有一台24小时在线的设备,那么你可以选择直接给上面两条命令写一个sh文件并通过crontab实现定时推送,如果你的设备在国内,可能还需要给https://api.telegram.org地址前面加一行反代如https://r.zzy-ac.top/
从而实现在大陆网络环境下的上传。
方案二:github actions
那么如果你就是纯粹的白嫖狗(比如我),连bitwarden服务端都扔PaaS了,怎么可能还定时服务扔到自己VPS去?给我白嫖!
- 创建一个github仓库,权限设为私人(Private)
- 点击actions创建workflows文件
- 在yml文件中填入如下内容
1 |
|
保存之后你就可以白嫖github actions的定时服务自动备份数据库文件了。为了减少服务器压力,建议- cron: '0 0 * * *'
此处的时间自主设定一个时间,避免大量排队带来的不好体验。
actions运行成功后将会把备份到的数据库文件发送到你的tgbot如下图:
至此,自动定时备份数据库的功能就实现完毕了,在需要还原数据库时可以使用db4free自带的phpMyAdmin将数据库备份文件导入,或通过命令导入。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!