vlambda博客
学习文章列表

Linux脚本定时备份MySql数据库

准备工作

Linux脚本定时备份MySql数据库

    在实际开发中,备份数据库是一件非常重要的事情,今天我们就来看看如何备份数据库叭,我们以Linux、MySql为例。

    首先就是要找到MySql的位置,使用以下命令查看:

whereis mysql

Linux脚本定时备份MySql数据库

    我们可以查到MySql的位置在/usr/bin/目录下,先记住他。

    

Linux脚本定时备份MySql数据库

若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脚本

Linux脚本定时备份MySql数据库

    上述准备工作做完之后就开始脚本的编写了,此脚本将备份的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:数据库名名称

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保存即可。上述命令实现的是每分钟执行一次备份。

【更多精彩】