unraid system 篇二:定时备份Mysql数据库
unraid定时备份Mysql数据库,再也不怕数据丢失
参考这位大佬的:docker中mysql数据备份
完整的脚本
#!/bin/bash
# 设置mysql的登录用户名和密码(根据实际情况填写)
mysql_docker="mariadb"
mysql_user="root"
mysql_password="root"
mysql_host="192.168.31.43"
mysql_port="3306"
# 备份文件存放地址(根据实际情况填写)
backup_location=/mnt/user/2T_download/mysql
#备份数据库文件名称格式
backup_name=backup-$(date +"%Y%m%d%H%M").sql
# 备份指定数据库中数据(--all-databases表示备份所有数据库,如果需要备份单独某个换成--databases xxx,xxx是具体数据库名称)
docker exec -i $mysql_docker mysqldump -h $mysql_host -P$mysql_port -u$mysql_user -p$mysql_password --all-databases > $backup_location/$backup_name
# 是否删除过期数据
expire_backup_delete="YES"
expire_days=30
# 删除过期数据(根据修改时间删除的,并不是名称)
if [ "$expire_backup_delete" == "YES" -a "$backup_location" != "" ];then
find $backup_location/ -type f -mtime +$expire_days | xargs rm -rf
echo "backup data delete complete!"
fi
第一部分是填写数据库
# 设置mysql的登录用户名和密码(根据实际情况填写)
mysql_docker="mariadb"
mysql_user="root"
mysql_password="root"
mysql_host="192.168.31.43"
mysql_port="3306"
参考自己的数据库填写
第二部分是备份文件的路径,注意该路径下不要放其他东西
# 备份文件存放地址(根据实际情况填写)
backup_location=/mnt/user/2T_download/mysql
第三部分是备份数据库文件名称格式,现在是“backup-202211041404.sql”
#备份数据库文件名称格式
backup_name=backup-$(date +"%Y%m%d%H%M").sql
第四部分是数据备份
# 备份指定数据库中数据(--all-databases表示备份所有数据库,如果需要备份单独某个换成--databases xxx,xxx是具体数据库名称)
docker exec -i $mysql_docker mysqldump -h $mysql_host -P$mysql_port -u$mysql_user -p$mysql_password --all-databases > $backup_location/$backup_name
第五部分是删除过期数据库,这里设置了只保留30内的备份数据,30天外的删除
# 是否删除过期数据
expire_backup_delete="YES"
expire_days=30
# 删除过期数据(根据修改时间删除的,并不是名称)
if [ "$expire_backup_delete" == "YES" -a "$backup_location" != "" ];then
find $backup_location/ -type f -mtime +$expire_days | xargs rm -rf
echo "backup data delete complete!"
fi
怎么运行?建议安装『 User Scripts脚本 』