Linux系统利用crontab定时备份Mysql数据库方法
本文将详细讲解如何在Linux环境下配置定时任务,自动备份MySQL数据库。通过创建执行脚本并添加到系统的计划任务列表中,实现每天指定时间自动将数据保存到本地目录,保障数据安全。
结果或目标
在Linux服务器中设置一个自动化流程,能够在每天固定时间(例如凌晨3点)自动执行一次完整的数据备份操作,并将备份文件按照日期命名存储在指定目录下,以便后续查阅和恢复。
准备条件
- 操作系统:安装并运行正常的Linux系统。
- 数据库服务:已安装且正在运行的MySQL或MariaDB服务。
- 用户权限:拥有sudo或root权限,以便修改系统级配置文件。
- 存储路径:确认磁盘空间充足,用于存放备份文件。
真实操作顺序
第1步:创建保存备份文件的目录
目的:为备份文件提供一个独立的存储空间,避免与系统文件混淆。
动作:终端中执行以下命令创建一个名为/mysqldata的文件夹:
# mkdir /mysqldata
完成状态:输入ls -ld /mysqldata查看到该目录存在。
第2步:创建数据库备份脚本
目的:编写一个可执行的Shell脚本来定义具体的备份逻辑。
入口:打开命令行编辑器创建新文件:/usr/sbin/bakmysql
# vi /usr/sbin/bakmysql
动作:在文件中输入备份指令。这里提供两种常见的备份策略:
方案A:直接打包数据库原始文件(适用于快速整体迁移)
# 获取当前日期
rq=$(date +%Y%m%d)
# 打包整个/var/lib/mysql目录
# 注意:这通常需要数据库处于停止状态或在同一台机器上进行冷备
tar zcvf /mysqldata/mysql${rq}.tar.gz /var/lib/mysql
方案B:使用mysqldump导出SQL语句(推荐,热备方式)
# 获取当前日期
rq=$(date +%Y%m%d)
# 导出所有数据库,替换“密码”为你的实际root密码
mysqldump --all-databases -u root -p你的密码 > /mysqldata/mysql${rq}.sql
重要参数说明:
date +%Y%m%d:生成如20240520格式的日期字符串。--all-databases:备份服务器上的所有库,若只需备份特定库可改为-d database_name。-u root:指定用户名,请根据实际账号修改。-p密码:如果密码包含特殊字符,建议使用引号包裹或配置.my.cnf免密登录。
第3步:赋予脚本可执行权限
目的:让Linux系统允许该脚本作为程序运行。
动作:执行以下命令:
# chmod +x /usr/sbin/bakmysql
第4步:添加定时任务(Crontab)
目的:告诉系统在每天的特定时间自动调用上述脚本。
入口:编辑全局crontab文件:/etc/crontab
# vi /etc/crontab
动作:在文件末尾添加以下行:
# 分 时 日 月 星期 用户 执行路径 01 3 * * * root /usr/sbin/bakmysql
参数解释:
01 3:表示每天凌晨3点01分启动任务。* * *:分别代表每月、每周、每天都执行。root:指定以root用户身份运行(因为涉及系统级路径操作)。/usr/sbin/bakmysql:调用的具体脚本路径。
第5步:重启cron服务使配置生效
目的:部分Linux发行版修改/etc/crontab后需重启服务加载新规则。
动作:执行以下命令:
# /etc/rc.d/init.d/crond restart
或者在某些新版CentOS/Ubuntu上直接使用:systemctl restart crond。
完成判断
等待至设定的时间点后,进入/mysqldata目录查看。方案A会生成类似mysql20240520.tar.gz的文件;方案B会生成mysql20240520.sql文件。文件大小不为0且内容可读即表示成功。
简要总结
通过组合简单的Shell脚本与Linux底层的crontab定时器,可以低成本构建稳定的数据库异地或本地容灾机制。建议定期对备份文件进行下载测试,确保在灾难发生时能够顺利还原。以上就是关于在Linux系统中利用crontab定时备份Mysql方法的详细内容,更多关于crontab的使用方法请查看本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













