1、环境

  • 备份路径:/xxxx/
  • 备份脚本:/xxxx/mysqlbak.sh
  • 备份时间:每天23:59备份
  • 备份要求:比如备份的数据只保留1周

2、使用mysql_config_editor来设置加密的密码文件,假设用户名是“ db_user”。在shell中执行:

mysql_config_editor set --login-path=local --host=localhost --user=db_user --password

提示输入密码,输入密码后,登陆MySQL服务的认证信息将加密保存在.mylogin.cnf文件(默认位于用户主目录) 。之后,MySQL客户端工具可通过读取该加密文件连接MySQL,避免重复输入登录信息,避免敏感信息暴露。


3、mysqlbak.sh脚本

#!/bin/bash
#数据库,如有多个库用空格分开
dbname='xxxx'
#备份时间
backtime=`date +%Y%m%d`
#备份输出日志路径
logpath='/xxxx/xxxx'

echo "################## ${backtime} #############################"
echo "开始备份"
#日志记录头部
echo "" >> ${logpath}/log.log
echo "-------------------------------------------------" >> ${logpath}/log.log
echo "备份时间为${backtime},备份数据库表 ${dbname} 开始" >> ${logpath}/log.log
#正式备份数据库
/usr/bin/mysqldump --login-path=local ${dbname} > ${logpath}/${backtime}.sql 2>> ${logpath}/log.log;
#为节约硬盘空间,将数据库压缩
tar zcfP ${logpath}/${dbname}${backtime}.tar.gz ${logpath}/${backtime}.sql > /dev/null
#删除原始文件,只留压缩后文件
rm -rf ${backtime}.sql
#备份成功以下操作
#删除七天前备份,也就是只保存7天内的备份
find -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
echo "数据库表 ${dbname} 备份成功!!" >> ${logpath}/log.log
echo "完成备份"
echo "################## ${backtime} #############################"

4、配置定时任务执行脚本
crontab -e编辑用户目前的crontab,
添加

59 23 * * * /xxxx/mysqlbak.sh

crontab -l表示列出所有的定时任务

Linux服务器mysql自动备份
Tagged on:     

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注