Debian系统MySQL数据库备份及自动传输到本地电脑的详细步骤

Debian系统MySQL数据库备份及自动传输到本地电脑的详细步骤

发布时间:2024-10-04 18:39:41

1. 在debian服务器上设置mysql备份

1.1 安装必要的工具

bash

sudo apt update
sudo apt install mysql-client gzip sshpass

1.2 创建备份脚本

创建一个新文件,例如 mysql_backup.sh

bash
nano mysql_backup.sh

将以下内容粘贴到文件中:

bash

#!/bin/bash

# mysql 连接信息
db_user="your_mysql_user"
db_pass="your_mysql_password"
db_name="your_database_name"

# 备份设置
backup_path="/path/to/backup/directory"
date=$(date +"%y-%m-%d")
backup_file="$backup_path/$db_name-$date.sql.gz"

# 创建备份
mysqldump -u $db_user -p$db_pass $db_name | gzip > $backup_file

# 检查备份是否成功
if [ $? -eq 0 ]; then
echo "database backup created successfully: $backup_file"
else
echo "error creating database backup"
exit 1
fi

保存并关闭文件。

1.3 设置脚本权限

bash
chmod +x mysql_backup.sh

2. 设置自动备份

2.1 编辑crontab

bash
crontab -e

2.2 添加定时任务

添加以下行以每天凌晨2点运行备份脚本:

 
0 2 * * * /path/to/mysql_backup.sh

3. 设置自动传输到本地电脑

3.1 在本地电脑上生成ssh密钥(如果还没有)

在您的本地电脑上运行:

bash
ssh-keygen -t rsa

3.2 将公钥复制到debian服务器

bash
ssh-copy-id user@your_server_ip

3.3 在debian服务器上创建传输脚本

创建一个新文件,例如 transfer_backup.sh

bash
nano transfer_backup.sh

将以下内容粘贴到文件中:

bash

#!/bin/bash

# 设置变量
local_user="your_local_username"
local_ip="your_local_computer_ip"
local_path="/path/on/local/computer/for/backups"
backup_path="/path/to/backup/directory"
date=$(date +"%y-%m-%d")
db_name="your_database_name"

# 传输最新的备份文件
scp $backup_path/$db_name-$date.sql.gz $local_user@$local_ip:$local_path

# 检查传输是否成功
if [ $? -eq 0 ]; then
echo "backup transferred successfully"
else
echo "error transferring backup"
exit 1
fi

保存并关闭文件。

3.4 设置传输脚本权限

bash
chmod +x transfer_backup.sh

3.5 将传输脚本添加到crontab

编辑crontab:

bash
crontab -e

添加以下行以在备份完成30分钟后运行传输脚本:

 
30 2 * * * /path/to/transfer_backup.sh

4. 故障排查

4.1 检查mysql备份

  • 检查备份文件是否创建:
    bash
    ls -l /path/to/backup/directory
  • 检查备份文件大小是否合理
  • 尝试解压缩并查看备份内容:
    bash
    gunzip -c /path/to/backup/file.sql.gz | less

4.2 检查自动化脚本日志

  • 添加日志输出到脚本:
    bash

    echo "backup started at $(date)" >> /var/log/mysql_backup.log
    # 在脚本末尾
    echo "backup completed at $(date)" >> /var/log/mysql_backup.log

  • 检查日志文件:
    bash
    tail -f /var/log/mysql_backup.log

4.3 检查 cron 日志

  • debian系统的cron日志通常在 /var/log/syslog
    bash
    grep cron /var/log/syslog

4.4 网络传输问题

  • 确保本地电脑ip地址正确且可访问
  • 检查ssh密钥是否正确设置
  • 尝试手动运行scp命令测试连接
  • 检查本地电脑的防火墙设置

4.5 权限问题

  • 确保脚本有执行权限
  • 检查备份目录的写入权限
  • 确保mysql用户有足够的权限执行备份

4.6 磁盘空间

  • 检查服务器和本地电脑的可用磁盘空间:
    bash
    df -h

5. 优化建议

  • 考虑压缩旧备份或设置轮换策略以节省空间
  • 使用 mysqldump--single-transaction 选项对大型数据库进行热备份
  • 考虑使用增量备份工具(如 percona xtrabackup)以减少备份时间和大小
  • 实施备份验证程序,定期测试恢复过程
  • 考虑加密备份文件以增加安全性,特别是在网络传输时

记得根据您的实际环境替换脚本中的占位符(如用户名、密码、ip地址等)。

感谢提供:05互联