Linux服务器中Mysql5.7数据库自动备份及脚本任务实现

大家都知道,mysql数据库备份使用命令:

mysqldump -uroot -ppassword dateabase > /data/bakup/dateabase_$(date +%y%m%d).sql

由于有多个库,所以我还写了shell脚本做了优化,代码如下:

#!/bin/bash
DUMP='/usr/local/mysql/bin/mysqldump'
HOST=127.0.0.1
USER=root
PSW='******'
BAKUP_DIR="/data/bakup/mysql"
##backup test01
$DUMP $HOST -u$USER -p$PWD test01 > $BAKUP_DIR/test01_$(date +%y%m%d).sql
##backup test02
$DUMP $HOST -u$USER -p$PWD test02 > $BAKUP_DIR/test02_$(date +%y%m%d).sql

##remove history bakup files 30 days ago
cd $BAKUP_DIR/ ; -mtime +30 -exec rm -rf {} \;
echo "remove success"

看似完美的备份脚本,在执行完了命令在指定的目录下出现test01_***.sql和test02_***.sql文件,并有一行警告信息。

这个问题应该是在MySQL5.6+版本的时候就有出现,可能是为了确保数据库的安全性采用的保护机制。那我们怎么使用密码才能安全呢?我查了好多解决方案,基本都是修改mysql配置文件my.cnf。

使用命令编辑my.cnf文件: vim /etc/my.cnf

在文件里添加如下内容:

[mysqldump]
socket=/tmp/mysql.scok
default-character-set=utf8mb4
host=127.0.0.1
user=root
password='****'

然后修改前面的备份脚本:

#!/bin/bash
DUMP='/usr/local/mysql/bin/mysqldump'
EXTRA_FILE='--defaults-extra-file=/etc/my.cnf'
BAKUP_DIR="/data/bakup/mysql"

##bakup test01
$DUMP $EXTRA_FILE test01 > $BAKUP_DIR/test01_$(date +%y%m%d).sql

##bakup test02
$DUMP $EXTRA_FILE test02 > $BAKUP_DIR/test02_$(date +%y%m%d).sql

##remove history bakup files 30 days ago
cd $BAKUP_DIR/ ; -mtime +30 -exec rm -rf {} \;
echo "remove success"

执行测试,完美运行,没有警告了!

添加crontab定时任务

使用命令:crontab -e

添加定时任务脚本代码:

0 1 * * * /data/bakup/bakup_mysql.sh

每天凌晨1点执行一次

你可能感兴趣的:(Linux服务器运维,数据库,IT)