MySQL 数据库备份脚本

  1. #!/bin/bash
  2. # 数据库连接信息
  3. DB_HOST="127.0.0.1"
  4. DB_PORT="3306"
  5. DB_USER="root"
  6. DB_PASSWD="root"
  7. # 时间格式化,如 20211216
  8. DATE="`date +%Y%m%d`"
  9. # 备份文件目录
  10. DIR_BACKUP="${HOME}/data/db-backup"
  11. # 日志目录: ${HOME}/data/db-backup/logs
  12. DIR_LOG="${DIR_BACKUP}/logs"
  13. # 日志文件: ${HOME}/data/db-backup/logs/db_backup.INFO.2021-12-30.log
  14. FILE_LOG="${DIR_LOG}/db_backup.INFO.`date +%F`.log"
  15. # 文件保留天数
  16. DAY=7
  17. DAY_LOG="`expr ${DAY} + 7`"
  18. # 备份数据库名
  19. DATABASES=("db1 db2 db3")
  20. # 测试目录, 目录不存在则自动创建
  21. # test -d ${DIR_LOG} || echo passwd | sudo -S mkdir -p ${DIR_LOG}
  22. test -d ${DIR_LOG} || mkdir -p ${DIR_LOG}
  23. # ------------------- 2021-12-16_17:40:48 Start -------------------
  24. echo -e "\n----------------- $(date +%F\ %T) Start -----------------"
  25. echo -e "\n================= $(date +%F\ %T) Start =================" >> ${FILE_LOG}
  26. # 遍历数据库名
  27. for database in ${DATABASES[@]}; do
  28. # 打印备份的数据库名
  29. echo "----------- Current backup database: [ ${database} ] ------------"
  30. echo "-------------- Backed-up database: [ ${database} ] --------------" >> ${FILE_LOG}
  31. done
  32. # 备份指定的数据库
  33. 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
  34. # # 备份全部数据库
  35. # 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
  36. echo "------- Backup file created: [ mysql_backup_${DATE}.sql.gz ]"
  37. echo "------- Backup file created: [ mysql_backup_${DATE}.sql.gz ]" >> ${FILE_LOG}
  38. # ---------------------------------------------------------------------------------
  39. # 至此, 备份已完成, 下面是清理备份的旧文件, 释放磁盘空间
  40. # 方式一:清理旧文件
  41. # 查找 7天前的文件
  42. OLD_BACKUP="`find ${DIR_BACKUP} -type f -mtime +${DAY} -iname mysql-\*.gz`"
  43. OLD_LOGS="`find ${DIR_LOG} -type f -mtime +${DAY_LOG} -iname db_backup.INFO.\*.log`"
  44. # 遍历旧备份文件
  45. for bak in "${OLD_BACKUP[@]}"; do
  46. # 删除旧备份
  47. rm -f ${bak}
  48. echo "------------------- Deleted old bak files -------------------" >> ${FILE_LOG}
  49. echo "${bak}" >> ${FILE_LOG}
  50. done
  51. # 遍历旧日志
  52. for log in "${OLD_LOGS[@]}"; do
  53. # 删除旧日志
  54. rm -f ${log}
  55. echo "------------------- Deleted old log files -------------------" >> ${FILE_LOG}
  56. echo "${log}" >> ${FILE_LOG}
  57. done
  58. # 方式二:清理旧文件
  59. # echo "--------------------- Deleted old files ---------------------" >> ${FILE_LOG}
  60. # echo "`find ${DIR_BACKUP} -type f -mtime +${DAY} -iname mysql-\*.gz`" >> ${FILE_LOG}
  61. # echo "`find ${DIR_LOG} -type f -mtime +${DAY_LOG} -iname db_backup.INFO.\*.log`" >> ${FILE_LOG}
  62. # find ${DIR_BACKUP} -type f -mtime +${DAY} -iname mysql-\*.gz -exec rm -f {} \;
  63. # find ${DIR_LOG} -type f -mtime +${DAY_LOG} -iname db_backup.INFO.\*.log -exec rm -f {} \;
  64. echo -e "------------------ $(date +%F\ %T) End ------------------\n"
  65. echo -e "================== $(date +%F\ %T) End ==================\n" >> ${FILE_LOG}

MySQL 数据库备份脚本的更多相关文章

  1. Windows下MySQL数据库备份脚本(一)

    说明: MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0 MySQL数据库存放目录:C:\Program Files\MySQL\MySQL S ...

  2. Windows下MySQL数据库备份脚本(二)

    说明: MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0 MySQL数据库存放目录:C:\Program Files\MySQL\MySQL S ...

  3. mysql数据库备份脚本

    mysql数据库备份脚本 mysql数据库分库备份脚本:[root@localhost tmp]# cat mysql.sh #!/bin/bash USER=root PASSWORD=joy4yo ...

  4. Ubuntu Server下MySql数据库备份脚本代码

    明: 我这里要把MySql数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2012_04_11.tar. ...

  5. mysql数据库备份脚本一例

    例子,mysql数据库备份脚本.vim mysql.sh #!/bin/bash DAY=`date +%Y-%m-%d` //日期以年月日显示并赋予DAY变量 SIZE=`du -sh /var/l ...

  6. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  7. Mysql 自动备份脚本

    转自: Mysql 自动备份脚本2 - - ITeye技术网站http://kangh.iteye.com/blog/2309091 备份方案: 备份主机:192.168.10.11 数据库服务器:1 ...

  8. Mysqldump备份说明及数据库备份脚本分享-运维笔记

    MySQLdump是MySQL自带的导出数据工具,即mysql数据库中备份工具,用于将MySQL服务器中的数据库以标准的sql语言的方式导出,并保存到文件中.Mysqldump是一个客户端逻辑备份的工 ...

  9. 【转】10 个MySQL数据库备份教程推荐

    10 个MySQL数据库备份教程推荐 MySQL是动态网站开发中最著名的开源数据库系统.如果你在网站中使用了MySQL,那么你应该定期备份你的数据以防止它丢失. 本文将介绍自动或手动备份MySQL数据 ...

随机推荐

  1. SpringAOP--代理

    前言 在Spring或者SpringBoot中,可以通过@Aspect注解和切点表达式等配置切面,实现对某一功能的织入.然而其内部到底是如何实现的呢? 实际上,Spring在启动时为切点方法所在类生成 ...

  2. 七牛云简单实用-uploadManager.put(..)抛出异常

    描述: 本人小白,最近在写一个仿头条的项目,其中有用到七牛云做为图片的存储以代替本地服务其存储,按照视频教程配置服务器端的简单上传功能,总是报错: 参照官方文档:https://developer.q ...

  3. ISR、OSR、AR 是什么?

    ISR:In-Sync Replicas 副本同步队列 OSR:Out-of-Sync Replicas AR:Assigned Replicas 所有副本 ISR是由leader维护,followe ...

  4. docker打包镜像,测试部署

    docker基本入门以后,(docker基本入门https://www.cnblogs.com/yangyangming/p/11470926.html)可以试试打包docker镜像与dockerfi ...

  5. vue集成ckeditor富文本框,怎么获取CKEditor实例?

    CKEDITOR 版本5 ,vue集成形式 vue集成ckeditor富文本框,由于不是通过js创建的富文本对象,所以,无法取得实例对象,官方说明 官方在builds-->Getting and ...

  6. 详细描述一下 Elasticsearch 更新和删除文档的过程?

    1.删除和更新也都是写操作,但是 Elasticsearch 中的文档是不可变的,因此不 能被删除或者改动以展示其变更: 2.磁盘上的每个段都有一个相应的.del 文件.当删除请求发送后,文档并没有真 ...

  7. Zookeeper 的典型应用场景?

    Zookeeper 是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员 可以使用它来进行分布式数据的发布和订阅. 通过对 Zookeeper 中丰富的数据节点进行交叉使用,配合 Watch ...

  8. C/C++头文件以及避免头文件包含造成的重定义方法

    C 头文件 头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享.有两种类型的头文件:程序员编写的头文件和编译器自带的头文件. 在程序中要使用头文件,需要使用 C 预处 ...

  9. java中时间的规范是按美国,SimpleDateFormat怎么处理

    题目3.2: 如果时间的规范是按美国,怎么处理? import java.text.ParseException;import java.text.SimpleDateFormat;import ja ...

  10. xml中的<![CDATA[]]>和转义字符

    被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,比如<![CDATA[<]]>表示文本内容"<". 此标记用于xml文档中,我们先 ...