宝塔面板的功能越来越多这也导致了部分用户放弃了宝塔改成原汁原味的linux,虽说操作上不太方便但是主打一个清净,今天就记录下另外一台云服务器定时备份mysql数据库文件的相关图文教程,因为我也很少接触linux系统,都是面板形式的,所以找了些资料总归是实现目前想要的结果,当然了操作仅限我们这些小白们,大佬请绕行,好了不废话了,开始折腾:
系统环境:
Linux系统:CentOS 6.5 64位
mysqldump:Ver 10.13 Distrib 5.5.40
目标要求:
每天01:30备份project_manager数据库,并将备份文件保存到指定路径(/newdisk/backupsql),同时在目录中保留最近3天的备份文件。
操作过程:
首先确定系统已经安装了【mysqldump】直接查看安装位置,一会会用到,代码如下:
which mysqldump
系统会告诉你具体的路径,例如“/usr/bin/mysqldump”,
为了安全起见我们不直接在脚本文件添加数据库的链接信息,创建一个 .my.cnf 文件(文件名以点开头表示为隐藏文件):
touch ~/.my.cnf
编辑该文件,默认文件路径【/root】,并添加以下内容:
[mysqldump]
user=用户名
password=密码
设置正确的数据库用户和密码,这里用户一般是指root,设置完成后,效果如图:
可能有些人会问,我要备份的数据库是zblogphp呢?别急,接着看,通知之前的操作,我们确定了【mysqldump路径】和需要引用的【数据库信息】那么接下来在【/www/b】目录下新建一个【backup.sh】文件,因为我不太喜欢使用shell软件去新建,所以我使用FTP链接,直接新建了【backup.sh】,新建文件之后,代码如下:
#!/bin/bash
# 备份的数据库名
DB_NAME="zbp_1012"
# 设置备份路径
BACKUP_PATH="/www/b"
# 生成备份文件名
BACKUP_FILE="backup_$(date +%Y%m%d_%H%M%S).sql"
# 使用mysqldump备份数据库,注意替换/usr/bin/mysqldump路径
/usr/bin/mysqldump $DB_NAME > $BACKUP_PATH/$BACKUP_FILE
# 删除旧的备份文件(保留最近3天的备份)
find $BACKUP_PATH -type f -mtime +3 -name "backup_*.sql" -exec rm {} \;
代码中必须要修改的信息参考下图中的红框位置,数据库名还有备份的路径已经mysqldump路径,这里的【zbp_1012】就是我们需要备份的数据库名称,不是root用户,别弄错了,看图:
完成之后不要忘记给予执行权限,命令如下:
chmod +x /www/b/backup.sh
其中【/www/b】是自己实际的目录位置。
PS:这里在说明下,如果你的文件【backup.sh】不是在linux下使用命令编辑的话,还需要执行以下命令,如果是在linux新建并编辑的,可以忽略此命令:
sed -i 's/\r$//' /www/b/backup.sh
这个命令会使用 sed 工具将脚本文件中的 DOS 格式换行符(\r)替换为空,从而将其转换为 Unix 格式。说白了就是 Windows 换行符的表示方式,在 Linux 系统中会导致解释器无法正确识别需要转换,直接使用Linux的就忽略这段代码就行,执行代码不会提示什么,大概就酱婶儿的:
确定之后我们再创建一个cron任务:
crontab -e
编辑cron任务,添加以下行以在每天01:30执行备份脚本,注意:请确保将【/www/b/backup.sh】替换为实际的脚本路径),代码如下:
30 1 * * * /www/b/backup.sh >> /www/b/backup.log 2>&1
然后直接输入【i】进入编辑模式,底部出现【INSERT】字样,然后最后一行鼠标右键,粘贴代码,再按下键盘【Esc】结束编辑模式,再依次按冒号【:】和【wq】,意思是保存并退出,如图:
注意上面的【/www/b/backup.s】h是您的脚本文件的路径,【/www/b/backup.log】是您希望将日志保存到的文件的路径。>>表示将输出追加到文件,而2>&1表示将标准错误(2)重定向到标准输出(1),这样错误和正常输出都会被记录到日志文件中。
代码的时间【05 14】是为了测试效果定时14点05分,改成实际需求就行,切记编辑模式下需要是英文状态,不能是中文否则会出错,编辑结束后以下命令查看:
crontab -l
好了,现在,您的数据库备份任务已经设置好了,设置完成后,最好使用如下命令执行测试一下看看代码是否有问题,命令:
bash /www/b/backup.sh
这时开始运行脚本文件,刷新FTP路径就会发现数据库文件已经备份完成,如图: