Mastodon数据库备份方法

如果你采用的是本地数据库备份,那么我强烈建议你使用异地数据库备份,本地备份的危险性不需要多说,前期搭建的minio拿来备份是一个不错的选择,除了minio以外,你依旧可以把备份文件上传到任意第三方存储平台,具体方法如下。

备份工具

备份工具我选择的是rclone,此工具异常强大和稳定,而且免费,大佬们都在用。Linux安装方法如下。

在服务器中安装rclone和zip:

curl https://rclone.org/install.sh | sudo bash
apt install zip -y

创建rclone配置文件夹

mkdir -p  ~/.config/rclone/

新建配置文件:

nano ~/.config/rclone/rclone.conf

rclone配置文件

这个配置文件里面填写的内容就是存储平台,可以是aws的s3存储,也可以是Scaleway,更可以是minio,他支持的存储平台有这些,我就不一一列举了。我就以minio和Scaleway作为存储例子,其他的自己变换就好了。

Scaleway填入下列内容:

[scaleway]
type = s3
provider = Scaleway
access_key_id = 你的ACCESS KEY
secret_access_key = 你的SECRET KEY
region = nl-ams(根据你bucket选择的地区,法国fr-par,荷兰nl-ams,波兰pl-waw)
endpoint = s3.nl-ams.scw.cloud  (同上)
acl = private

minio填入下列内容:

[minio]
type = s3
provider = Minio
env_auth = false
access_key_id = USWUXHGYZQYFYFFIT3RE
secret_access_key = MOJRH0mkL1IPauahWITSVvyDrQbEEIwljvmxdq03
region = us-east-1
endpoint = http://192.168.1.106:9000
location_constraint =
server_side_encryption =

保存。

备份脚本

然后创建脚本

nano /backup.sh

输入

#!/bin/bash
source /etc/profile
now=$(date "+%Y%m%d-%H%M%S")
origin="/home/mastodon/mastodon"
target="scaleway:你的bucket名字"
echo `date +"%Y-%m-%d %H:%M:%S"` " now starting export"
/usr/bin/docker exec pg容器名 pg_dump -U postgres -Fc mastodon_production > ${origin}/backup.dump &&
echo `date +"%Y-%m-%d %H:%M:%S"` " succeed and upload to s3 now"
/usr/bin/zip -P 密码 ${origin}/backup_${now}.zip ${origin}/backup.dump &&
/usr/bin/rclone copy ${origin}/backup_${now}.zip ${target} &&
echo `date +"%Y-%m-%d %H:%M:%S"` " ok all done"
rm -f ${origin}/backup.dump ${origin}/backup_${now}.zip
/usr/bin/rclone --min-age 7d  delete ${target}

pg容器名一般为mastodon_db_1(通过docker ps查看),密码为你设立的解压密码。mastodon_production为你的数据库名,可至.env.production查看。

保存。

赋权:

chmod 751 /backup.sh

然后,

/backup.sh

试运行一下,看看Scaleway中有没有zip文件生成。如果出现zip文件且大小以mb计算,则成功。

自动备份计划

随后,设置定时任务:

crontab -e

选择nano编辑器,

3 22    * * *   /backup.sh >> /backup.log

具体时间自己设置,建议设置在半夜,注意服务器时区(通过date查看服务器时间)。

crontab格式说明

分 时 日 月 星期 要运行的命令

  • 第1列分钟0~59
  • 第2列小时0~23(0表示子夜)
  • 第3列日1~31
  • 第4列月1~12
  • 第5列星期0~7(0和7表示星期天)
  • 第6列要运行的命令

上述命令解释为晚上22点03分运行/backup.sh脚本并输出备份日志


阅读量:0