需求:备份运行在阿里云服务器的数据库(mysql--数据量很小)。
背景:数据库操作小白。
内容:实现自动备份的过程,参考的文章,以及遇到的问题。
1,先记录一下,实现自动备份前,手动备份的过程
a,备份整个数据库到.sql文件:mysqldump -u root -p 数据库名字 > /路径/文件名.sql
(在根命令运行即可,不用进入到数据库内部)
(如果不支持mysqldump命令需要先配置环境)
b,恢复数据库,先通过用户名密码进入指定数据库,在mysql命令下 运行命令:source 数据库地址
2,折腾自动备份(这部分内容摘抄自:https://www.cnblogs.com/taomylife/p/8022104.html)
第一步:创建备份数据的脚本文件
在想要备份的文件夹下,创建文件。创建命令:
vi bkDatabaseName.sh
在创建的文件中写入
输入/粘贴以下内容---备份数据库到.sql文件
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql
对备份进行压缩---可以不要上面一部分,只存储压缩的文件,以节省存储空间:
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz
注意:
把 username 替换为实际的用户名;
把 password 替换为实际的密码;
把 DatabaseName 替换为实际的数据库名;
第二步:添加可执行权限
chmod u+x bkDatabaseName.sh
添加可执行权限之后先执行一下,看看脚本有没有错误,能不能正常使用;
./bkDatabaseName.sh
第三步,添加计划任务
检测或安装 crontab
确认crontab是否安装:
执行 crontab 命令如果报 command not found,就表明没有安装
# crontab
-bash: crontab: command not found
如时没有安装 crontab,需要先安装它
添加计划任务
执行命令:
crontab -e
这时就像使用vi编辑器一样,可以对计划任务进行编辑。
输入以下内容并保存:
*/1 * * * * /home/backup/bkDatabaseName.sh
意思是每一分钟执行一次shell脚本“/home/backup/bkDatabaseName.sh”。
3,遇到的问题
第一个:在自己电脑上执行crontab -e更教程一样,顺利完成配置,但是去阿里云服务器上配置,输出结果跟教程不一样,如下图
没明白什么意思,就随便选了1,然后问题就来了,这个命令一直不能执行。
后来才发现是在Linux系统上第一次执行crontab会让选择编辑器,选了第一个就不能编辑或者编辑困难(自己瞎猜的)。重新选择话可以执行命令:select-editor (针对crontab的一个命令)可以重新选择一次,重新选择了3,就顺利可以编辑啦。
学习博客地址:http://blog.csdn.net/Sweblish/article/details/8653336
第二个:写备份数据库脚本的时候,提示不能在脚本中直接数据数据库密码。现在也没解决,但是还能用。