mysql数据库备份命令_sql数据库备份方法

mysql数据库备份命令_sql数据库备份方法MySQL 数据库备份脚本 #!/bin/bash # 数据库连接信息 DB_HOST="127.0.0.1" DB_PORT="3306" DB_USER=&

MySQL 数据库备份脚本

MySQL 数据库备份脚本

#!/bin/bash


# 数据库连接信息
DB_HOST="127.0.0.1"
DB_PORT="3306"
DB_USER="root"
DB_PASSWD="root"

# 时间格式化,如 20211216
DATE="`date +%Y%m%d`"
# 备份文件目录
DIR_BACKUP="${HOME}/data/db-backup"
# 日志目录: ${HOME}/data/db-backup/logs
DIR_LOG="${DIR_BACKUP}/logs"
# 日志文件: ${HOME}/data/db-backup/logs/db_backup.INFO.2021-12-30.log
FILE_LOG="${DIR_LOG}/db_backup.INFO.`date +%F`.log"

# 文件保留天数
DAY=7
DAY_LOG="`expr ${DAY} + 7`"
# 备份数据库名
DATABASES=("db1 db2 db3")


# 测试目录, 目录不存在则自动创建
# test -d ${DIR_LOG} || echo passwd | sudo -S mkdir -p ${DIR_LOG}
test -d ${DIR_LOG} || mkdir -p ${DIR_LOG}
# ------------------- 2021-12-16_17:40:48 Start -------------------
echo -e "
----------------- $(date +%F %T) Start -----------------"
echo -e "
================= $(date +%F %T) Start =================" >> ${FILE_LOG}

    # 遍历数据库名
    for database in ${DATABASES[@]}; do 
        # 打印备份的数据库名
        echo "----------- Current backup database: [ ${database} ] ------------"
        echo "-------------- Backed-up database: [ ${database} ] --------------" >> ${FILE_LOG}
    done
    # 备份指定的数据库
    mysqldump --opt --single-transaction --master-data=2 --default-character-set=utf8 -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASSWD} -B ${DATABASES} | gzip > ${DIR_BACKUP}/mysql_backup_${DATE}.sql.gz


# # 备份全部数据库
# mysqldump --opt --single-transaction --master-data=2 --default-character-set=utf8 -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASSWD} -A | gzip > ${DIR_BACKUP}/mysql_backup_${DATE}.sql.gz

echo "------- Backup file created: [ mysql_backup_${DATE}.sql.gz ]"
echo "------- Backup file created: [ mysql_backup_${DATE}.sql.gz ]" >> ${FILE_LOG}

# ---------------------------------------------------------------------------------
# 至此, 备份已完成, 下面是清理备份的旧文件, 释放磁盘空间


# 方式一:清理旧文件
# 查找 7天前的文件
OLD_BACKUP="`find ${DIR_BACKUP} -type f -mtime +${DAY} -iname mysql-*.gz`"
OLD_LOGS="`find ${DIR_LOG} -type f -mtime +${DAY_LOG} -iname db_backup.INFO.*.log`"

# 遍历旧备份文件
for bak in "${OLD_BACKUP[@]}"; do 
    # 删除旧备份
    rm -f ${bak}
    echo "------------------- Deleted old bak files -------------------" >> ${FILE_LOG}
    echo "${bak}" >> ${FILE_LOG}
done
# 遍历旧日志
for log in "${OLD_LOGS[@]}"; do 
    # 删除旧日志
    rm -f ${log}
    echo "------------------- Deleted old log files -------------------" >> ${FILE_LOG}
    echo "${log}" >> ${FILE_LOG}
done


# 方式二:清理旧文件
# echo "--------------------- Deleted old files ---------------------" >> ${FILE_LOG}
# echo "`find ${DIR_BACKUP} -type f -mtime +${DAY} -iname mysql-*.gz`" >> ${FILE_LOG}
# echo "`find ${DIR_LOG} -type f -mtime +${DAY_LOG} -iname db_backup.INFO.*.log`" >> ${FILE_LOG}
# find ${DIR_BACKUP} -type f -mtime +${DAY} -iname mysql-*.gz -exec rm -f {} ;
# find ${DIR_LOG} -type f -mtime +${DAY_LOG} -iname db_backup.INFO.*.log -exec rm -f {} ;


echo -e "------------------ $(date +%F %T) End ------------------
"
echo -e "================== $(date +%F %T) End ==================
" >> ${FILE_LOG}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5566.html

(0)
上一篇 2023-05-04
下一篇 2023-05-04

相关推荐

  • MYSQL性能优化-CPU/内存/磁盘「建议收藏」

    MYSQL性能优化-CPU/内存/磁盘「建议收藏」MYSQL性能优化,CPU,内存,磁盘

    2023-04-16
    149
  • Redis学习笔记(四)–安全[通俗易懂]

    Redis学习笔记(四)–安全[通俗易懂]Redis学习笔记(四)–安全 基于Redis6之前版本 一、设置数据库密码 1、配置文件“redis.conf”修改,需重启服务器 在配置文件中“redis.conf”设置”requirepas…

    2023-03-22
    167
  • Python集成开发环境

    Python集成开发环境在过去的几年中,Python变得越来越流行。Python的易学性和广泛的应用范围使之成为了许多初学者的首选语言,同时也是许多经验丰富的开发人员的最爱。Python在许多领域中都有应用,如Web开发、数据科学、人工智能和机器学习等。随着Python使用的增加,更多的人开始使用Python集成开发环境(IDE)以提高他们的编程效率。

    2024-09-12
    24
  • aerospike公司_Aeros Loop Studio

    aerospike公司_Aeros Loop Studio简介 Aerospike 是一个分布式、可扩展的数据库,其架构有三个关键目标: 为 web 规模的应用程序创建一个灵活的、可扩展的平台 提供传统数据库所期望的健壮性和可靠性(如 ACID) 以最少的…

    2023-02-26
    154
  • MySQL日期函数之字符串和时间戳互转[通俗易懂]

    MySQL日期函数之字符串和时间戳互转[通俗易懂]平时比较常用的时间、字符串、时间戳之间的互相转换,虽然常用但是几乎每次使用时候都喜欢去搜索一下用法;本文将作为一个笔记,整理一下三者之间的 转换(即:date转字符串、date转时间戳、字符串转dat

    2023-02-24
    152
  • MySql5.7 datetime 默认值为‘0000-00

    MySql5.7 datetime 默认值为‘0000-00注: NO_ZERO_IN_DATE:在严格模式下,不允许日期和月份为零 NO_ZERO_DATE:设置该值,MySql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。

    2023-02-01
    174
  • Python解密:揭秘背后的实用功能

    Python解密:揭秘背后的实用功能Python是一种十分流行的编程语言,其简洁的语法和强大的功能吸引了越来越多的开发者加入其中。虽然Python已经广为人知,但是其实Python还有许多实用功能并不为人所知。在这篇文章中,我们会带您揭秘Python背后的实用功能,从而优化您的编程体验。

    2024-03-23
    76
  • Oracle中的函数——Trunc()[亲测有效]

    Oracle中的函数——Trunc()[亲测有效]trunc(exp1) trunc(exp1)和Round(exp1,exp2)类似,只不过trunc()不指定截取的小数位数进行处理,只取到整数位,不做舍去处理 select trunc(123.1

    2023-02-20
    156

发表回复

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