Linux每天自动备份MySQL数据库的方法可以通过使用crontab和压缩包命令联合完成。下面是具体步骤:
1.使用crontab定时备份数据库
使用crontab可以指定在特定时间或隔一定时间执行某个命令或脚本。可以将备份脚本作为一个可执行文件,然后在crontab里面设置定时备份的时间。
首先,我们需要进入Linux系统,使用以下命令创建一个备份脚本
vim /home/backup_mysql.sh
在该文件中输入以下内容,说明每个语句的作用:
#!/bin/bash
# 设置备份信息,包括数据库名、用户名、密码等
MYSQL_DATABASE="example"
MYSQL_USERNAME="root"
MYSQL_PASSWORD="123456"
# 备份保存的路径
BACKUP_PATH="/home/backup"
# 备份日期
BACKUP_DATE=$(date +%Y%m%d)
# 备份文件名
BACKUP_FILE="$MYSQL_DATABASE-$BACKUP_DATE.sql"
# 备份命令
mysqldump --default-character-set=utf8 -u$MYSQL_USERNAME -p$MYSQL_PASSWORD $MYSQL_DATABASE > $BACKUP_PATH/$BACKUP_FILE
上面的脚本将备份example数据库,将备份文件存储到/home/backup目录下,使用当前的日期作为文件名后缀,备份文件的名字为"example-20210727.sql"。
使用以下命令设置脚本为可执行文件:
chmod +x /home/backup_mysql.sh
接下来,使用以下命令打开crontab文件,配置自动备份MySQL数据库:
crontab -e
该命令将打开一个文本编辑器,用于编辑crontab文件。在文件末尾添加以下内容:
# 每天凌晨0点备份MySQL数据库
0 0 * * * /home/backup_mysql.sh
上面的语句表示每个0点(即凌晨12点),执行/home/backup_mysql.sh命令,完成备份操作。
2.使用tar命令压缩备份文件
对于备份文件,如果只存储为一系列的.sql文件,会占用大量的硬盘空间。因此,通常还需要对备份文件进行压缩,这样可以减小备份文件的大小,减少存储空间的占用。Linux下一个非常常见的压缩备份文件命令是tar。
使用以下命令将备份文件打包成.tar.gz格式:
tar czvf /home/backup/$BACKUP_FILE.tar.gz /home/backup/$BACKUP_FILE
该命令将在 /home/backup 目录下创建一个以备份文件名为名字的.tar.gz文件,然后将备份文件压缩到该文件中。
3.例子1 - 多个数据库的备份
如果需要备份多个数据库,可以将备份脚本修改为如下:
#!/bin/bash
# 设置备份信息,包括数据库名、用户名、密码等
MYSQL_DATABASES=("example1" "example2")
MYSQL_USERNAME="root"
MYSQL_PASSWORD="123456"
# 备份保存的路径
BACKUP_PATH="/home/backup"
# 备份日期
BACKUP_DATE=$(date +%Y%m%d)
for db in ${MYSQL_DATABASES[@]}
do
# 备份文件名
BACKUP_FILE="$db-$BACKUP_DATE.sql"
# 备份命令
mysqldump --default-character-set=utf8 -u$MYSQL_USERNAME -p$MYSQL_PASSWORD $db > $BACKUP_PATH/$BACKUP_FILE
# 压缩备份文件
tar czvf $BACKUP_PATH/$BACKUP_FILE.tar.gz $BACKUP_PATH/$BACKUP_FILE
# 删除非压缩版备份文件
rm $BACKUP_PATH/$BACKUP_FILE
done
上面的备份脚本可以备份多个数据库。将需要备份的数据库名放在一个数组中,然后使用循环遍历数组中的每个数据库。备份文件名和备份目录根据需要进行修改。
4.例子2 - 添加文件自动清理
如果备份文件数量太多,会占用大量的硬盘空间,因此可以在备份脚本中加入自动清理过期备份文件的功能。
#!/bin/bash
# 设置备份信息,包括数据库名、用户名、密码等
MYSQL_DATABASE="example"
MYSQL_USERNAME="root"
MYSQL_PASSWORD="123456"
# 备份保存的路径
BACKUP_PATH="/home/backup"
# 备份日期
BACKUP_DATE=$(date +%Y%m%d)
# 备份文件名
BACKUP_FILE="$MYSQL_DATABASE-$BACKUP_DATE.sql"
# 备份命令
mysqldump --default-character-set=utf8 -u$MYSQL_USERNAME -p$MYSQL_PASSWORD $MYSQL_DATABASE > $BACKUP_PATH/$BACKUP_FILE
# 压缩备份文件
tar czvf $BACKUP_PATH/$BACKUP_FILE.tar.gz $BACKUP_PATH/$BACKUP_FILE
# 删除非压缩版备份文件
rm $BACKUP_PATH/$BACKUP_FILE
# 清理过期备份文件(只保留最近3天备份)
find $BACKUP_PATH -type f -mtime +3 -name "*.tar.gz" -exec rm -rf {} \;
上面的备份脚本可以完成MySQL数据库备份和文件自动清理两个任务。如果要保留最近5天的备份文件,可以将"-mtime +3"改为"-mtime +5"。
总的来说,上面的步骤为:创建备份脚本、使用crontab定时备份MySQL数据库、使用tar命令压缩备份文件。以上2个例子分别讲解了备份多个数据库和自动清理过期备份文件的实现方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux 每天自动备份mysql数据库的方法 - Python技术站