最近公司其他项目组出现了一次生产事故,导致那个项目的近几个月数据全部丢失,好在有纸质资料作为数据存根,为此我们几个组加班加点手动录入数据苦不堪言。那之后各项目都要求定时备份数据库,所以我整理了我在使用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
打开并编辑/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编辑器输入命令才可以执行定时任务,暂时没找到第一种方案无效的原因。
2 条评论
这篇文章不错!
建议增加具体方法论,避免停留口号层面。