服务器自动备份MariaDB数据库 + 自动同步到本地 Debian备份服务器
流程是:
mysqldump(导出数据库)cron(定时任务)rsync或scp(同步到本地)
这样每天自动备份,不用人工操作。⚙️
一、服务器自动备份数据库
先在服务器创建备份目录:
mkdir -p /backup/mysql
创建备份脚本
创建脚本:
nano /usr/local/bin/mysql_backup.sh
写入: 按数据库名称分别备份
#!/bin/bash
DATE=$(date +%F_%H-%M)
BACKUP_DIR="/backup/mysql"
DB_USER="root"
DB_PASS="xxxx"
mkdir -p $BACKUP_DIR
# 获取所有数据库
DATABASES=$(mysql -u$DB_USER -p$DB_PASS -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql|sys)")
for DB in $DATABASES
do
mysqldump -u$DB_USER -p$DB_PASS $DB | gzip > $BACKUP_DIR/${DB}_$DATE.sql.gz
done
# 删除7天前备份
find $BACKUP_DIR -type f -mtime +7 -name "*.gz" -delete
保存。
给执行权限
chmod +x /usr/local/bin/mysql_backup.sh
测试运行:
/usr/local/bin/mysql_backup.sh
查看:
ls /backup/mysql
应该看到类似:
mariadb_2026-03-10_10-30.sql.gz
二、定时自动备份
crontab -e
加入:
0 3 * * * /usr/local/bin/mysql_backup.sh
意思:
每天凌晨3点备份
三、本地设置 SSH 免密码
在本地 Debian:
生成密钥:
ssh-keygen
发送到服务器:
ssh-copy-id root@服务器IP
测试:
ssh root@xxxx
如果不需要密码说明成功。
四、本地自动同步任务
本地 Debian:
crontab -e
添加:
10 2 * * * rsync -az root@45.205.26.171:/backup/mysql/ /data/mysql_backup/
意思:
服务器 03:00 备份 本地 03:10 拉取