准备工作
在实际开发中,备份数据库是一件非常重要的事情,今天我们就来看看如何备份数据库叭,我们以Linux、MySql为例。
首先就是要找到MySql的位置,使用以下命令查看:
whereis mysql
我们可以查到MySql的位置在/usr/bin/目录下,先记住他。
若Linux没有安装crontab则可以执行以下命令进行安装:
# yum install vixie-cron# yum install crontab
crontab相关命令如下:
#启动服务service crond start#关闭服务service crond stop#重启服务service crond restart#重新载入配置service crond reload执行的脚本:1)、输入crontab -e命令,然后添加相应的任务,wq保存退出。crontab -e配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务crontab -l //列出当前的所有调度任务 crontab -l -u jp //列出用户jp的所有调度任务crontab -r //删除所有任务调度工作2)、编辑/etc/crontab文件,即vim /etc/crontab,添加任务,wq保存退出
crontab格式:
分 | 时 | 日 | 月 | 星期 | 命令 |
* | * | * | * | * |
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列 表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
注意特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
sh脚本
上述准备工作做完之后就开始脚本的编写了,此脚本将备份的sql进行了压缩,先创建一个脚本:
cd /root/db_back/vim mysql_backup.sh
然后编辑如下脚本内容:
DB_USER="root"DB_PASS="passpword"DB_HOST="xx.xx.xx.xx"DB_NAME="BD_NAME"BIN_DIR="/usr/bin/" BCK_DIR="/root/db_back/"DATE=`date +%s`$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST -P3306 $DB_NAME | gzip > $BCK_DIR/$DATE.sql.gz
DB_USER:用户名
DB_PASS:数据库密码
DB_HOST:数据库IP
DB_NAME:数据库名名称
DIN_DIR:MySql地址,使用准备工作当中所述的命令获取
BCK_DIR:存储位置
DATE:以时间戳为文件名
注:-P:表示端口
编辑完脚本可以测试一下脚本是否正确,输入sh mysql_backup.sh,然后去对应存储位置看下是否备份成功,在执行的时候会提示如下信息:
Warning: Using a password on the command line interface can be insecure.
意思就是直接在脚本里明文显示数据库的用户名、IP、密码、名称等相关内容是不安全的,所以可以根据实际需求修改脚本命令,例如可以在脚本中将数据库用户名、IP、密码、名称等相关内容使用read命令输入。
脚本制作完成即可添加定时任务,输入以下命令进行编辑
# crontab -e
在最末行添加如下命令:
*/1 * * * * sh /root/db_back/mysql_backup.sh
wq保存即可。上述命令实现的是每分钟执行一次备份。