备份数据库的bash shell脚本
原创 52cxy 11-22 15:12 阅读数:376
#!/bin/bash
# MySQL连接地址
MYSQL_HOST="127.0.0.1"
# MySQL端口号
MYSQL_PORT="3306"
# MySQL用户名
MYSQL_USER="root"
# MySQL密码
MYSQL_PASSWORD="123456"
# 需要备份的数据库列表,为空时备份所有数据库
DBLIST=();

# 备份路径
BACKUP=/data/backup
# 当前时间
DATETIME=$(date +%Y%m%d%H%M%S)

if ((${#DBLIST[@]} == 0)); then
# 自动获得所有的数据库
DBLIST=`mysql -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -e "SHOW DATABASES;"`
fi

# 创建备份目录
mkdir -p "${BACKUP}/$DATETIME"

for db in $DBLIST; do
    # 排除表头和一些无需备份的数据库
    if [[ "$db" != "Database" ]] && [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] ; then
        echo "正在备份数据库: $db"
        # 备份操作
        # 如果机器中没有加入 MySQL 环境,请将下面的 mysqldump 改为 mysqldump 文件的全路径
        # mysqldump -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD} --databases $db > ${BACKUP}/$DATETIME/$db.sql
        echo "数据库【$db】已备份到:${BACKUP}/$DATETIME/$db.sql 下"
    fi
done

# 删除7天前的备份数据
find $BACKUP -type f -mtime +7 -exec rm -f {} \;
echo "备份结束~"


共0条评论
我要评论