某些场景下需要将数据库分开备份,有些场景又需要将所有数据库合在一起备份,特此整理此备份脚本

  1. #!/bin/bash
  2. ##===========================================================================##
  3. ## use mysqldump to backup all user database, keey days.
  4. ##===========================================================================##
  5. ## mysql_backup_database option:
  6. ## ONE_BACKUP: backup all user database into one zip file
  7. ## MORE_BACKUP: backup user database into different zip files.
  8. ## DATABASE_NAME: only backup the specified database.
  9.  
  10. ##===========================================================================##
  11. ## mysql backup config
  12. mysql_exe="/export/servers/mysql/bin/mysql"
  13. mysqldump_exe="/export/servers/mysql/bin/mysqldump"
  14. mysql_backup_folder="/export/data/mysql/dumps/"
  15. mysql_backup_log="${mysql_backup_folder}mysql_dump_log.txt"
  16. mysql_backup_log_his="${mysql_backup_folder}mysql_dump_log_his.txt"
  17. mysql_backup_host="127.0.0.1"
  18. mysql_backup_port=
  19. mysql_backup_user="root"
  20. mysql_backup_password="rootpwd"
  21. mysql_backup_database="ONE_BACKUP"
  22. mysql_backup_table_name_list=""
  23. mysql_backup_keep_days=
  24.  
  25. ##====================================================##
  26. ## get mysql version
  27. ##====================================================##
  28. function get_mysql_version()
  29. {
  30. master_version_tmp=`${mysql_exe} \
  31. --host="${mysql_backup_host}" --port=${mysql_backup_port} \
  32. --user="${mysql_backup_user}" --password="${mysql_backup_password}" \
  33. -e "select @@version;"`
  34. if [[ master_version_tmp == 5.5.* ]]
  35. then
  36. mysql_version="mysql55"
  37. elif [[ master_version_tmp == 5.6.* ]]
  38. then
  39. mysql_version="mysql56"
  40. else
  41. mysql_version="mysql57"
  42. fi
  43. }
  44.  
  45. ##===========================================================================##
  46. ## remove expired backup file
  47. ## keep the backup file of the last N days
  48. function remove_expired_file()
  49. {
  50. echo "$(date "+%Y-%m-%d %H:%M:%S") start to remove expired backup file." >> ${mysql_backup_log}
  51. echo "keep days: ${mysql_backup_keep_days}" >> ${mysql_backup_log}
  52. find "${mysql_backup_folder}" -mtime +${mysql_backup_keep_days} -name "*" -exec rm -rf {} \;
  53. echo "$(date "+%Y-%m-%d %H:%M:%S") start to mysqldump." >> ${mysql_backup_log}
  54. }
  55.  
  56. ##===========================================================================##
  57. ## backup single database
  58. function backup_single_database()
  59. {
  60. current_database_name=$
  61. mysql_backup_file_path="${mysql_backup_folder}""${current_database_name}-`date -I`.sql.gz"
  62. echo "$(date "+%Y-%m-%d %H:%M:%S") start to backup database ${current_database_name} to ${mysql_backup_file_path}" >> ${mysql_backup_log}
  63.  
  64. ($mysqldump_exe \
  65. --host="${mysql_backup_host}" \
  66. --port=$mysql_backup_port \
  67. --user="${mysql_backup_user}" \
  68. --password="${mysql_backup_password}" \
  69. --databases "${current_database_name}" \
  70. --set-gtid-purged=OFF \
  71. --single-transaction \
  72. --hex-blob --opt --quick \
  73. --events --routines --triggers \
  74. --default-character-set="utf8" \
  75. --master-data= \
  76. |gzip > "${mysql_backup_file_path}" \
  77. ) >>${mysql_backup_log} >>${mysql_backup_log}
  78.  
  79. if [ $? = ]
  80. then
  81. echo "$(date "+%Y-%m-%d %H:%M:%S") backup database ${current_database_name} success." >> ${mysql_backup_log}
  82. else
  83. echo "$(date "+%Y-%m-%d %H:%M:%S") backup database ${current_database_name} failed." >> ${mysql_backup_log}
  84. fi
  85. }
  86.  
  87. function backup_more_databases()
  88. {
  89. for database_name in ${database_name_list};
  90. do
  91. if [ "$database_name" == "" ]
  92. then
  93. echo "database name can be empty"
  94. else
  95. backup_single_database "${database_name}"
  96. fi
  97. done
  98. }
  99.  
  100. function backup_all_databases()
  101. {
  102. mysql_backup_file_path="${mysql_backup_folder}""full-backup-`date -I`.sql.gz"
  103. echo "$(date "+%Y-%m-%d %H:%M:%S") start to backup all databases to ${mysql_backup_file_path}" >> ${mysql_backup_log}
  104.  
  105. ($mysqldump_exe \
  106. --host="${mysql_backup_host}" \
  107. --port=$mysql_backup_port \
  108. --user="${mysql_backup_user}" \
  109. --password="${mysql_backup_password}" \
  110. --all-databases \
  111. --ignore-table='mysql.*' \
  112. --ignore-table='information_schema.*' \
  113. --ignore-table='performance_schema.*' \
  114. --ignore-table='sys.*' \
  115. --set-gtid-purged=OFF \
  116. --single-transaction \
  117. --hex-blob --opt --quick \
  118. --events --routines --triggers \
  119. --default-character-set="utf8" \
  120. --master-data= \
  121. |gzip > "${mysql_backup_file_path}" \
  122. ) >>${mysql_backup_log} >>${mysql_backup_log}
  123.  
  124. if [ $? = ]
  125. then
  126. echo "$(date "+%Y-%m-%d %H:%M:%S") backup database ${current_database_name} success." >> ${mysql_backup_log}
  127. else
  128. echo "$(date "+%Y-%m-%d %H:%M:%S") backup database ${current_database_name} failed." >> ${mysql_backup_log}
  129. fi
  130. }
  131.  
  132. function backup_databases()
  133. {
  134. if [ "${mysql_backup_database}" == "ONE_BACKUP" ];
  135. then
  136. backup_all_databases
  137. elif [ "${mysql_backup_database}" == "MORE_BACKUP" ];
  138. then
  139. database_name_list=`${mysql_exe} --host="${mysql_backup_host}" --port=$mysql_backup_port --user="${mysql_backup_user}" --password="${mysql_backup_password}" -Ne "show databases;" |egrep -v "(mysql|sys|test|information_schema|performance_schema|dada_call_center)"`
  140. backup_more_databases
  141. else
  142. database_name_list=${mysql_backup_database}
  143. backup_more_databases
  144. fi
  145. }
  146.  
  147. ##====================================================##
  148. ## . dump user script on mysql
  149. ## . this script only can be used on mysql 5.7
  150. ##====================================================##
  151. function dump_user_script_5_7()
  152. {
  153. script_file_path="${mysql_backup_folder}""user-script-`date -I`.sql"
  154. echo "$(date "+%Y-%m-%d %H:%M:%S") start backup user script." >> ${mysql_backup_log}
  155. (echo "select concat('show create user ''',user,'''@''',host, ''';
  156. ','show grants for ''',user,'''@''',host, ''';')
  157. from mysql.user where user <>'root' and user<>'' and host <> '' " | \
  158. ${mysql_exe} --host="${mysql_backup_host}" --port=${mysql_backup_port} \
  159. --user="${mysql_backup_user}" --password="${mysql_backup_password}" -N | \
  160. ${mysql_exe} --host="${mysql_backup_host}" --port=${mysql_backup_port} \
  161. --user="${mysql_backup_user}" --password="${mysql_backup_password}" -N | \
  162. sed "s/$/;/" >> ${script_file_path}) >>${mysql_backup_log} >>${mysql_backup_log}
  163.  
  164. if [ $? = ]
  165. then
  166. echo "$(date "+%Y-%m-%d %H:%M:%S") backup user script success." >> ${mysql_backup_log}
  167. else
  168. echo "$(date "+%Y-%m-%d %H:%M:%S") backup user script failed." >> ${mysql_backup_log}
  169. fi
  170. }
  171.  
  172. ##====================================================##
  173. ## . dump user script on mysql
  174. ## . this script only can be used on mysql 5.5
  175. ##====================================================##
  176. function dump_user_script_5_5()
  177. {
  178. script_file_path="${mysql_backup_folder}""user-script-`date -I`.sql"
  179. echo "$(date "+%Y-%m-%d %H:%M:%S") start backup user script." >> ${mysql_backup_log}
  180.  
  181. (echo "select concat('show grants for ''',user,'''@''',host, ''';')
  182. from mysql.user where user <>'root' and user<>'' and host <> '' " | \
  183. ${mysql_exe} --host="${mysql_backup_host}" --port=${mysql_backup_port} \
  184. --user="${mysql_backup_user}" --password="${mysql_backup_password}" -N | \
  185. ${mysql_exe} --host="${mysql_backup_host}" --port=${mysql_backup_port} \
  186. --user="${mysql_backup_user}" --password="${mysql_backup_password}" -N | \
  187. sed "s/$/;/" >> ${script_file_path}) >>${mysql_backup_log} >>${mysql_backup_log}
  188.  
  189. if [ $? = ]
  190. then
  191. echo "$(date "+%Y-%m-%d %H:%M:%S") backup user script success." >> ${mysql_backup_log}
  192. else
  193. echo "$(date "+%Y-%m-%d %H:%M:%S") backup user script failed." >> ${mysql_backup_log}
  194. fi
  195. }
  196.  
  197. ##===========================================================================##
  198.  
  199. function backup_mysql_user()
  200. {
  201. if [[ mysql_version == "mysql55" ]]
  202. then
  203. dump_user_script_5_5
  204. else
  205. dump_user_script_5_7
  206. fi
  207. }
  208.  
  209. ##===========================================================================##
  210. function mysql_backup()
  211. {
  212. echo > ${mysql_backup_log}
  213. get_mysql_version
  214. remove_expired_file
  215. backup_databases
  216. backup_mysql_user
  217. cat ${mysql_backup_log} > ${mysql_backup_log_his}
  218. }
  219.  
  220. mysql_backup

MySQL Backup--使用mysqldump依次备份所有数据库的更多相关文章

  1. Mysql启停以及恢复备份恢复数据库

    1.mysql启停 进入cmd 输入如下命令 net stop mysql(自己起的mysql名称) -------停 net strat mysql   ---------------------- ...

  2. mysql导入导出.sql文件 备份还原数据库

    从数据库导出数据库文件:   进入你的MySQL的安装目录的bin目录或者在C盘的根目录都行,我选的是在bin目录下,下面的例子出第一个外将以在C盘的根目录来讲解   我的mysql安装在了C盘,C: ...

  3. 使用mysqldump命令备份恢复MySQL数据库

    1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump file] 上述命令将指定数据库备份到某dump文 ...

  4. mysql学习(4)-mysqldump备份和恢复数据

    背景 最近在公司做数据迁移方面的工作,使用mysql数据库在测试环境模拟数据迁移,在迁移测试的过程中需要做数据备份和恢复 mysql数据备份和恢复比较简单,可以选择mysqldump工具,这里简单提一 ...

  5. MySQL 5.7.10 自动备份、自动清理旧备份集

    http://blog.csdn.net/mchdba/article/details/51527081 MySQL版本是5.7.10-log社区版本,需要进行备份,但是备份时间长了后,磁盘不够用,所 ...

  6. mysql 容灾 灾备 备份

    一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldump命令的工作原理很简单.它先 ...

  7. MySQL 5.7.10 自动备份、自动清理旧备份集(转)

    1,mysqldump备份脚本 备份脚本为,里面有几个需要注意的参数: (1)--master-data=2 :这个参数可以在搭建从库的时候,记录当前备份的复制点信息. (2)--extended-i ...

  8. 动态备份SQL-SERVER数据库——SQLDMO

    转载:http://www.cnblogs.com/liulanglang/archive/2007/12/04/981812.html 上周要写一个SQL-SERVER数据库备份还原的程序,很没有思 ...

  9. MySQL Backup mysqldump备份流程学习

    我们都知道MySQL逻辑备份工具mysqldump可以保证备份数据的一致性,但是它是怎么保持一致性的? 本文不讨论mysqldump具体的选项和用法,一直对mysqldump的工作机制梳理的不太清楚, ...

随机推荐

  1. Excel-基本操作

    一.EXCEL的数据类型 1.字符型 2.数值型 3.日期型数据和时间型数据 二.快捷键 ctrl+上下左右健 快速选择某区域  上下左右单元格 ctrl+shift+上下左右 快速选择某个取悦 三. ...

  2. 交换机端口与Mac地址绑定(基于Cisco模拟器)

    实验设备: 二层交换机一台,主机三台 实验步骤: 1.进入相应的接口 (以端口1设置Mac地址绑定,PC0接1端口举例) Switch>enable Switch#config Configur ...

  3. 【微信小程序】手写索引选择器(城市列表,汽车品牌选择列表)

    摘要: 小程序索引选择器,点击跳转相应条目,索引可滑动,滑动也可跳转 场景:城市选择列表, 汽车品牌选择列表 所用组件: scroll-view(小程序原生) https://developers.w ...

  4. Eclipse:设置自动补全,提高编程效率

    一.设置自动补全 1.进入eclipse的window里的perferences页面 2.找到java->Editor->Content Assist设置界面 3.在Auto activa ...

  5. 使用Django REST框架创建一个简单的Api

    Create a Simple API Using Django REST Framework in Python WHAT IS AN API API stands for application ...

  6. torch_06_卷积神经网络

    1.概述 卷积神经网络的参数,由一些可学习的滤波器集合构成的,每个滤波器在空间上都计较小,但是深度和输入数据的深度保持一致.在前向传播中,让每个滤波器都在输入数据的宽度和高度上滑动(卷积),然后计算整 ...

  7. linux php composer安装和使用教程

    linux php composer安装和使用教程建议在linux下 下载后 然后再下载到本地               win上最好别用composer下载速度超级慢 或者根本下不动 项目依赖包 ...

  8. Spring Boot 如何干掉 if else?

    需求 这里虚拟一个业务需求,让大家容易理解.假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理. 订单实体: service接口: 传统实现 根据订单类型写一堆的if else: 策 ...

  9. Dart:3.Dart运算符、流程控制

    一 . 运算符 以下列出 Dart 的运算符,从高到低按照优先级排列: 描述 运算符 一元运算符(后置) expr++ expr-- () [] . ?. 一元运算符(前置) -expr !expr ...

  10. Kafka学习笔记2--Kafka的服务端配置

    下载解压 kafka 后,在 kafka/config 下有 3 个配置文件与主题的生产.消费相关. server.properties--服务端配置 producer.properties--生产端 ...