最近公司其他项目组出现了一次生产事故,导致那个项目的近几个月数据全部丢失,好在有纸质资料作为数据存根,为此我们几个组加班加点手动录入数据苦不堪言。那之后各项目都要求定时备份数据库,所以我整理了我在使用MySQL备份远程数据库(centOS)的相关步骤。

系统环境:

1.centOS7

2.MySQL 8.0.31

创建脚本文件

创建数据库备份存放的文件夹和脚本文件,如图:

图片

写入脚本

打开刚创建好的backup_mysql.sh文件,将以下内容写入进去:

#!/bin/bash

# 定义备份文件保存路径
backup_property_dir="/home/database_Backup/property"
backup_property_ac_dir="/home/database_Backup/property_ac"
backup_property_config_dir="/home/database_Backup/property_config"
backup_property_job_dir="/home/database_Backup/property_job"
backup_property_manage_dir="/home/database_Backup/property_manage"

# 转换日期
timestamp=$(date +%Y%m%d%H%M%S)
year=${timestamp:0:4}
month=${timestamp:4:2}
day=${timestamp:6:2}
hour=${timestamp:8:2}
minute=${timestamp:10:2}
second=${timestamp:12:2}
formatted_date="${year}年${month}月${day}日_${hour}:${minute}:${second}"

# 定义备份文件名
backup_property="$backup_property_dir/backup_property_$formatted_date.sql"
backup_property_ac="$backup_property_ac_dir/backup_property_ac_$formatted_date.sql"
backup_property_config="$backup_property_config_dir/backup_property_config_$formatted_date.sql"
backup_property_job="$backup_property_job_dir/backup_property_job_$formatted_date.sql"
backup_property_manage="$backup_property_manage_dir/backup_property_manage_$formatted_date.sql"

# 定义 MySQL 连接参数
mysql_user="你的MySQL用户名"
mysql_password="你的MySQL密码"

# 定义要备份的数据库名称
property_database="property"
property_ac_database="property_ac"
property_config_database="property_config"
property_job_database="property_job"
property_manage_database="property_manage"

# 删除七天前的备份文件
find /home/database_Backup/property* -type f -name "backup_property_*" -mtime +7 -exec rm {} \;
find /home/database_Backup/property_ac* -type f -name "backup_property_ac_*" -mtime +7 -exec rm {} \;
find /home/database_Backup/property_config* -type f -name "backup_property_config_*" -mtime +7 -exec rm {} \;
find /home/database_Backup/property_job* -type f -name "backup_property_job_*" -mtime +7 -exec rm {} \;
find /home/database_Backup/property_manage* -type f -name "backup_property_manage_*" -mtime +7 -exec rm {} \;

# 执行备份操作
mysqldump -h 你的ip地址 -u $mysql_user -p$mysql_password $property_database > $backup_property
mysqldump -h 你的ip地址 -u $mysql_user -p$mysql_password $property_ac_database > $backup_property_ac
mysqldump -h 你的ip地址 -u $mysql_user -p$mysql_password $property_config_database > $backup_property_config
mysqldump -h 你的ip地址 -u $mysql_user -p$mysql_password $property_job_database > $backup_property_job
mysqldump -h 你的ip地址 -u $mysql_user -p$mysql_password $property_manage_database > $backup_property_manage

设置脚本权限

图片

设置定时任务

手动打开文件设置

我这里使用的是crontab命令,如果提示没找到命令就自行百度安装

使用 service crond status 命令查看crontab是否运行:

service crond status

image-20230713170955520

打开并编辑/etc/crontab文件:

#每天凌晨1点执行备份数据库操作
00 1 * * * /home/database_Backup/backup_mysql.sh

图片

使用指令设置定时任务

#打开vim编辑器:
crontab -e

#设置每天凌晨1点执行备份数据库
#打开vim编辑器后按s键,将以下命令输入到文件中然后按Esc键,再输入:wq保存。
00 1 * * * /home/database_Backup/backup_mysql.sh

#查看命令是否写入成功,出现上述任务则表示成功
crontab -l

图片

以上两种方式都可以实现linux的定时任务,但是据我测试只有第二种使用vim编辑器输入命令才可以执行定时任务,暂时没找到第一种方案无效的原因。
最后修改:2023 年 07 月 14 日
去码头整点薯片?