插件窝 干货文章 服务器定时备份数据库

服务器定时备份数据库

mysql备份 定时备份 mysql 备份 917    来源:仙士可    2019-10-17

1.宝塔备份

首先,宝塔备份是一定可以的,而且是无脑型,也很简单:

image.png

image.png


2.crontab脚本备份


首先我们要了解数据库的备份命令:

mysqldump工具备份

备份整个数据库

mysqldump -uroot -hhost -ppassword dbname > backdb.sql

备份数据库中的某个表

mysqldump -uroot -hhost -ppassword dbname tbname1, tbname2 > backdb.sql

备份多个数据库

mysqldump -uroot -hhost -ppassword --databases dbname1, dbname2 > backdb.sql

备份系统中所有数据库

mysqldump -uroot -hhost -ppassword --all-databases > backdb.sql


然后需要了解crontab的写法:

3 * * * *  /home/tioncico/crontab/test.sh

每小时的第3分钟,执行该sh文件


crontab详细说明可以看:linux定时任务 文章


编写shell文件

新增 /home/tioncico/crontab/test.sh文件:

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
mkdir -p /home/tioncico/bak/
mysqldump -uroot -p123456 test > /home/tioncico/bak/`date +%Y%m%d`.sql

新增执行权限

chmod +x test.sh

这样之后,每个小时的第3分钟,则会执行该脚本,进行备份数据库,并且把数据写入到备份文件夹中:


image.png

额外补充:

备份sql文件之后,还可以进行压缩:

mysqldump -uroot -p123456 test | gzip > /home/tioncico/bak/`date +%Y%m%d`.sql.gz

同时可以在定时任务的配置中增加日志输出(比如记录错误信息,记录成功状态):

3 * * * *  /home/tioncico/crontab/test.sh >> /home/tioncico/log/bak.log 2>&1