新闻中心
新闻中心与新手教程
新闻中心与新手教程
发布时间:2024-10-04 18:39:41
sudo apt update
sudo apt install mysql-client gzip sshpass
创建一个新文件,例如 mysql_backup.sh
:
nano mysql_backup.sh
将以下内容粘贴到文件中:
#!/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
保存并关闭文件。
chmod +x mysql_backup.sh
crontab -e
添加以下行以每天凌晨2点运行备份脚本:
0 2 * * * /path/to/mysql_backup.sh
在您的本地电脑上运行:
ssh-keygen -t rsa
ssh-copy-id user@your_server_ip
创建一个新文件,例如 transfer_backup.sh
:
nano transfer_backup.sh
将以下内容粘贴到文件中:
#!/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
保存并关闭文件。
chmod +x transfer_backup.sh
编辑crontab:
crontab -e
添加以下行以在备份完成30分钟后运行传输脚本:
30 2 * * * /path/to/transfer_backup.sh
ls -l /path/to/backup/directory
gunzip -c /path/to/backup/file.sql.gz | less
echo "backup started at $(date)" >> /var/log/mysql_backup.log
# 在脚本末尾
echo "backup completed at $(date)" >> /var/log/mysql_backup.log
tail -f /var/log/mysql_backup.log
/var/log/syslog
:
grep cron /var/log/syslog
df -h
mysqldump
的 --single-transaction
选项对大型数据库进行热备份记得根据您的实际环境替换脚本中的占位符(如用户名、密码、ip地址等)。
感谢提供:05互联