需求
数据库就是命脉。一切东西都可以不见。环境没了重新搭建。。系统崩了。重装。。但是数据没了。哭去吧。。于是定期备份数据库别提有多重要的。。你可以选择定期备份在服务器上。也可以选择定期备份到自己的PC上。本文是定期备份到我自己的macOS上。。其他系统可以参考!
Mysql相关设置
创建一个专门用于备份的用户,当然你喜欢用root用户来备份也是可以!
先登录mysql
mysql -u root -p
创建备份权限的用户{bakname}
,{passwd}
自行修改
1 | GRANT SELECT,RELOAD,SHOW DATABASES,LOCK TABLES,EVENT,REPLICATION CLIENT ON *.* TO {bakname}@"%" IDENTIFIED BY "{passwd}"; |
由于要备份到本地的PC上所以我设置的用户是具有远程访问权限的!
macOS配置
利用mysqldump进行备份。。此软件可以在mysql workbench community中找到。
利用macOS定时任务。进行定时备份。macOS可以选crontab
或者launchctl
就看你习惯。
我选择用launchctl
。
这个是通过plist配置的方式来实现定时任务的,其优点就是最小时间间隔是一秒
plist脚本存放路径为/Library/LaunchDaemons
或/Library/LaunchAgents
,其区别是后一个路径的脚本当用户登陆系统后才会被执行,前一个只要系统启动了,哪怕用户不登陆系统也会被执行。
可以通过两种方式来设置脚本的执行时间。一个是使用StartInterval
,它指定脚本每间隔多长时间(单位:秒)执行一次;另外一个使用StartCalendarInterval
,它可以指定脚本在多少分钟、小时、天、星期几、月时间上执行,类似如crontab的中的设置。
例:
新建一个shell文件/Users/yourname/Documents/bakmysql.sh,并将mysqldump与bakmysql.sh放在一起。
1 | #!/bin/bash |
该脚本。将数据库数据备份后并压缩。同时会删除7天前的数据备份。可以自行参考修改!
脚本要改成可执行的权限
1 | chmod 777 bakmysql.sh |
进入到~/Library/LaunchAgents
下建一个plist文件com.yourname.bakmysql.plist
1 | <?xml version="1.0" encoding="UTF-8"?> |
label
这里就是给这个任务名个名字,这里一般取plist的文件名,这个名字不能和其它的plist重复。bakmysql.sh
就是我们要执行的脚本,StartCalendarInterval
里边的参数是说每一天13点4分的时候执行一下脚本。
然后就可以用下面的几个命令进行操作我们做好的任务了。
1 | launchctl load com.yourname.bakmysql.plist |
- 要让任务生效,必须先load命令加载这个plist。
- 如果任务被修改了,那么必须先unload,然后重新load。
- start可以测试任务,这个是立即执行,不管时间到了没有。
- 执行start和unload前,任务必须先load过,否则报错。
- stop可以停止任务。
ProgramArguments
内不能直接写命令,只能通过shell脚本来执行。
上面的任务我们也可以指定为每隔30秒执行一次,如下
1 | <?xml version="1.0" encoding="UTF-8"?> |