下面是详细的Linux下mysql异地自动备份的方法攻略:
步骤一:安装并配置mysqldump
- 首先,需要在Linux系统中安装mysqldump工具。在命令行中输入以下命令:
sudo apt-get update
sudo apt-get install mysql-client
- 安装完成后,需要设置mysqldump的用户名和密码。在命令行中输入以下命令:
export MYSQL_PWD=your_password
- 为了防止备份文件过多,需要设置最大备份文件数量和最大备份时间。在命令行中输入以下命令:
max_file_num=7
max_file_time=604800 #表示7天,单位为秒
步骤二:创建备份脚本
- 创建备份脚本,该脚本用来备份MySQL数据库并上传到远程服务器。在命令行中输入以下命令:
vi backup.sh
- 粘贴以下代码到backup.sh文件中:
#!/bin/bash
# MySQL备份脚本,支持自动上传到远程服务器
USER=root #MySQL用户
PASSWORD=your_password #MySQL密码
HOST=localhost #MySQL主机名
DUMP=/usr/bin/mysqldump #mysqldump命令的路径
ZIP=/usr/bin/zip #zip命令的路径
DATABASE=your_database #需要备份的MySQL数据库名
DIRECTORY=/var/backups/mysql/ #备份文件的保存目录
MAX_FILE_NUM=7 #最大备份文件数量
MAX_FILE_TIME=604800 #最大备份时间,单位为秒
SSH_USER=your_ssh_username #SSH连接用户名
SSH_HOST=your_ssh_host #SSH服务器地址
SSH_PATH=/backup/remote/ #远程服务器上保存备份的路径
# 如果备份文件夹不存在,则创建目录
if [ ! -d $DIRECTORY ]; then
mkdir -p $DIRECTORY
fi
# 获取当前时间戳
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
# 备份MySQL数据库到文件中
$DUMP -u $USER -h $HOST -p${PASSWORD} $DATABASE > $DIRECTORY/$TIMESTAMP.sql
# 压缩文件
$ZIP -qj $DIRECTORY/$TIMESTAMP.zip $DIRECTORY/$TIMESTAMP.sql
# 删除原始文件
rm $DIRECTORY/$TIMESTAMP.sql
#删除过期文件
find $DIRECTORY -type f -name "*.zip" -mtime +$MAX_FILE_NUM -exec rm {} \;
#上传备份文件到远程服务器
scp $DIRECTORY/*.zip $SSH_USER@$SSH_HOST:$SSH_PATH
# 删除过期文件
ssh $SSH_USER@$SSH_HOST "find $SSH_PATH -type f -name "*.zip" -mtime +$MAX_FILE_TIME -exec rm {} \;"
exit 0
步骤三:使用cron定时运行备份脚本
- 运行以下命令,打开cron的配置文件:
sudo crontab -e
- 在文件末尾添加以下命令,用于定时运行备份脚本。此处假设需要每天备份一次:
0 1 * * * /bin/bash /your_path_to_backup.sh
示例一:使用远程服务器备份MySQL数据库并自动上传备份文件到本地
使用一个名为backup01的远程服务器来备份MySQL数据库,并自动上传备份文件到本地
- 远程服务器IP地址:192.168.1.10
- 远程服务器用户名:myuser
- 远程服务器备份文件存储路径:/home/myuser/mysqlbackup/
- MySQL数据库名:mydatabase
- MySQL游标:root
- MySQL密码:my_password
在backup.sh文件中的SSH_USER、SSH_HOST和SSH_PATH变量需要进行如下的调整:
SSH_USER=myuser
SSH_HOST=192.168.1.10
SSH_PATH=/home/myuser/mysqlbackup/
示例二:在Google云盘备份MySQL数据库,并定期删除过期备份
假设已经将Google云盘映射到本地的~/gdrive目录中。
在backup.sh文件中,将SSH_USER、SSH_HOST和SSH_PATH变量配置成文件夹~/gdrive中保存MySQL备份文件的路径。
删除过期文件时,需要按照Google云盘的定义来计算时间。Google云盘会认为1个月为30天。
在backup.sh文件中,设置MAX_FILE_TIME变量的值为2592000,即30 * 24 * 3600。
SSH_USER=
SSH_HOST=
SSH_PATH=~/gdrive
MAX_FILE_TIME=2592000
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux下mysql异地自动备份的方法 - Python技术站