高级MySQL数据库备份脚本

主要功能

  • 指定数据库连接中的数据库进行备份
  • 可以将备份文件通过FTP或者SFTP传输到其他服务器进行异地备份
  • 指定备份文件保留天数
  • 邮件发送备份信息

项目构成

在这里插入图片描述

  • 凭证文件:credentials.txt,用于存储mysql连接的账号密码

  • 执行脚本:mysql-dump.sh,使用mysql的dump备份数据库

  • 配置文件:settings.conf,配置mysql备份的ip,端口,目录,策略等

credentials.txt

# 使用凭证文件是为了避免执行时的警告信息,mysqldump: [Warning] Using a password on the command line interface can be insecure.
[client]
user=root
password=密码

settings.conf

# 该脚本为备份配置文件,根据需求更新配置
# 本脚本需要运行在mysql数据库运行所在的linux服务器上

#################### MySQL 数据库服务器配置 #####################

# MySQL 数据库服务器地址和端口
MYSQL_HOST="192.168.125.36" 
MYSQL_PORT="3306" 

# 保存MySQL账号密码的文件路径
CREDENTIAL_FILE="/mnt/sdb/credentials.txt" 

# 要备份的数据库名称使用空格分隔,输入"ALL"备份全部
DB_NAMES="test111" 

# 仅备份指定的数据库
# DB_NAMES="mydb testdb dbname2" 

# MySQL 数据库备份保留策略,选择本地备份副本保留的天数
BACKUP_RETAIN_DAYS=30

# 本地数据库备份文件存储路径
LOCAL_BACKUP_DIR="/mnt/sdb/dbbackup" 

# 日志文件存储路径
LOG_PATH="/mnt/sdb/logs"

# 临时文件路径
TMP_PATH="/tmp" 

###################### 启用 SFTP 备份 ############################

# 0=禁用, 1=启用
SFTP_ENABLE=1 
# SFTP 服务器地址host
SFTP_HOST="192.168.154.26" 
# SFTP/SSH 用户名
SFTP_USERNAME="root" 
# SFTP 服务器端口
SFTP_PORT="22" 
# SFTP 上传目录
SFTP_UPLOAD_DIR="/mnt/sdb1/test" 
# SCP 执行路径
SCP="/usr/bin/scp" 

###################### 启用邮件提醒 ##############################

# 0=不发送邮件, 1=发送邮件
SENDEMAIL=1  
# 接收邮件提醒的邮箱地址
EMAILTO='[email protected]' 

###################### 启用 FTP 备份 ##############################

# 0=禁用, 1=启用
FTP_ENABLE=0 
# FTP 服务器地址
FTP_SERVER="ftp.tecadmin.net" 
# FTP 用户名
FTP_USERNAME="ftp 用户名" 
# FTP 密码
FTP_PASSWORD="密码" 
# FTP 上传目录
FTP_UPLOAD_DIR="/backup/dbbackup/" 

###################### 本地可执行文件路径 ##########################

GZIP="/bin/gzip" 
MYSQL="/usr/bin/mysql" 
MYSQLDUMP="/usr/bin/mysqldump"  
MKDIR="/bin/mkdir" 
MYSQLADMIN="/usr/bin/mysqladmin" 
GREP="/bin/grep" 

mysql-dump.sh

#!/usr/bin/env bash

# 获取当前脚本的目录
SCRIPT_PATH="$(cd "$(dirname "${
      
      BASH_SOURCE[0]}")" && pwd)"
CONFIGFILE=$SCRIPT_PATH/settings.conf

source $CONFIGFILE
DATE_FORMAT='%Y%m%d'
CURRENT_DATE=$(date +"${DATE_FORMAT}")
CURRENT_TIME=$(date +"%H%M")
LOGFILENAME=$LOG_PATH/mydumpadmin-${CURRENT_DATE}-${CURRENT_TIME}.log
CREDENTIALS="--defaults-file=$CREDENTIAL_FILE"

# 如果日志路径不存在,创建该路径
[ ! -d $LOG_PATH ] && ${MKDIR} -p ${LOG_PATH}
echo "数据库备份报告——$(date +"%Y-%m-%d %H:%M:%S")" >> ${LOGFILENAME}
echo "" >> ${LOGFILENAME}


### 创建备份 ###
check_config
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐州蔡徐坤

又要到饭了兄弟们

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值