launchctl mysql_【数据库】MAC 使用mysqldump 和 launchctl 定时备份Mysql数据库

背景:之前开发的报告整理工具使用的数据库一直没有增加自动备份,每次想起来手动去备份一下,因此想增加一个自动备份数据库的任务。

环境:MAC mysql

整个过程分为两个部分 (1)使用mysqldump 写备份数据库的shell脚本  (2)利用mac的launchctlg建立定时任务

1、编写备份脚本

脚本backup.sh#!/bin/sh

path="/Users/usrname/Desktop/dbBackUp/"

date=$(date +%Y%m%d_%H-%M-%S)

database="DB_Name"

username="root"

password="123456"

filename="$path$date.sql"

mysqldump -u$username -p$password -q $database > $filename

提权chmod  777 backup.sh

测试一下,直接运行sh脚本,即可看到备份的sql文件

2、建立launchctl任务

(1)新建plist文件

Label

com.plistname.plist

ProgramArguments

/Users/UserName/Desktop/dbBackUp/backup.sh

StartCalendarInterval

Minute

36

Hour

15

StandardOutPath

/Users/UserName/Desktop/dbBackUp/run-out.log

StandardErrorPath

/Users/UserName/Desktop/dbBackUp/run-err.log

(2)进入 ~/Library/LaunchAgents/ 目录, 将plist文件放到 ~/Library/LaunchAgents/下

(3)添加任务load -w com.plistname.plist

(4)测试任务start com.plistname.plist

如果没有报错即可看到备份出来的sql文件,如果看不到就查看run-err.log

3、整个过程中遇到的问题

(1)sh执行调用mysqldump正常,launchctl触发提示“mysqldump: command not found”

解决方法:输入 find / -name mysql,找到mysql /bin/ 下的mysqldump的绝对路径,将shell脚本内的mysqldump命令替换为mysqldump的绝对路径

(2)触发任务后,没有sql语句也没有任何日志

解决方法:开始的时候日志只写了一个path,没有写对应的xxx.log文件,然后改成了上面的xxx.log格式,再次运行就可以了

4、常用的launchctl命令launchctl load -w com.mahui.plist  --添加一个任务

launchctl unload -w com.mahui.plist --删除一个任务

launchctl start com.mahui.plist  --触发一个任务,无视时间

launchctl list | grep plist --展示当前的存在所有plist任务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值