MySQL Backup--使用mysqldump依次备份所有数据库
某些场景下需要将数据库分开备份,有些场景又需要将所有数据库合在一起备份,特此整理此备份脚本
- #!/bin/bash
- ##===========================================================================##
- ## use mysqldump to backup all user database, keey days.
- ##===========================================================================##
- ## mysql_backup_database option:
- ## ONE_BACKUP: backup all user database into one zip file
- ## MORE_BACKUP: backup user database into different zip files.
- ## DATABASE_NAME: only backup the specified database.
- ##===========================================================================##
- ## mysql backup config
- mysql_exe="/export/servers/mysql/bin/mysql"
- mysqldump_exe="/export/servers/mysql/bin/mysqldump"
- mysql_backup_folder="/export/data/mysql/dumps/"
- mysql_backup_log="${mysql_backup_folder}mysql_dump_log.txt"
- mysql_backup_log_his="${mysql_backup_folder}mysql_dump_log_his.txt"
- mysql_backup_host="127.0.0.1"
- mysql_backup_port=
- mysql_backup_user="root"
- mysql_backup_password="rootpwd"
- mysql_backup_database="ONE_BACKUP"
- mysql_backup_table_name_list=""
- mysql_backup_keep_days=
- ##====================================================##
- ## get mysql version
- ##====================================================##
- function get_mysql_version()
- {
- master_version_tmp=`${mysql_exe} \
- --host="${mysql_backup_host}" --port=${mysql_backup_port} \
- --user="${mysql_backup_user}" --password="${mysql_backup_password}" \
- -e "select @@version;"`
- if [[ master_version_tmp == 5.5.* ]]
- then
- mysql_version="mysql55"
- elif [[ master_version_tmp == 5.6.* ]]
- then
- mysql_version="mysql56"
- else
- mysql_version="mysql57"
- fi
- }
- ##===========================================================================##
- ## remove expired backup file
- ## keep the backup file of the last N days
- function remove_expired_file()
- {
- echo "$(date "+%Y-%m-%d %H:%M:%S") start to remove expired backup file." >> ${mysql_backup_log}
- echo "keep days: ${mysql_backup_keep_days}" >> ${mysql_backup_log}
- find "${mysql_backup_folder}" -mtime +${mysql_backup_keep_days} -name "*" -exec rm -rf {} \;
- echo "$(date "+%Y-%m-%d %H:%M:%S") start to mysqldump." >> ${mysql_backup_log}
- }
- ##===========================================================================##
- ## backup single database
- function backup_single_database()
- {
- current_database_name=$
- mysql_backup_file_path="${mysql_backup_folder}""${current_database_name}-`date -I`.sql.gz"
- echo "$(date "+%Y-%m-%d %H:%M:%S") start to backup database ${current_database_name} to ${mysql_backup_file_path}" >> ${mysql_backup_log}
- ($mysqldump_exe \
- --host="${mysql_backup_host}" \
- --port=$mysql_backup_port \
- --user="${mysql_backup_user}" \
- --password="${mysql_backup_password}" \
- --databases "${current_database_name}" \
- --set-gtid-purged=OFF \
- --single-transaction \
- --hex-blob --opt --quick \
- --events --routines --triggers \
- --default-character-set="utf8" \
- --master-data= \
- |gzip > "${mysql_backup_file_path}" \
- ) >>${mysql_backup_log} >>${mysql_backup_log}
- if [ $? = ]
- then
- echo "$(date "+%Y-%m-%d %H:%M:%S") backup database ${current_database_name} success." >> ${mysql_backup_log}
- else
- echo "$(date "+%Y-%m-%d %H:%M:%S") backup database ${current_database_name} failed." >> ${mysql_backup_log}
- fi
- }
- function backup_more_databases()
- {
- for database_name in ${database_name_list};
- do
- if [ "$database_name" == "" ]
- then
- echo "database name can be empty"
- else
- backup_single_database "${database_name}"
- fi
- done
- }
- function backup_all_databases()
- {
- mysql_backup_file_path="${mysql_backup_folder}""full-backup-`date -I`.sql.gz"
- echo "$(date "+%Y-%m-%d %H:%M:%S") start to backup all databases to ${mysql_backup_file_path}" >> ${mysql_backup_log}
- ($mysqldump_exe \
- --host="${mysql_backup_host}" \
- --port=$mysql_backup_port \
- --user="${mysql_backup_user}" \
- --password="${mysql_backup_password}" \
- --all-databases \
- --ignore-table='mysql.*' \
- --ignore-table='information_schema.*' \
- --ignore-table='performance_schema.*' \
- --ignore-table='sys.*' \
- --set-gtid-purged=OFF \
- --single-transaction \
- --hex-blob --opt --quick \
- --events --routines --triggers \
- --default-character-set="utf8" \
- --master-data= \
- |gzip > "${mysql_backup_file_path}" \
- ) >>${mysql_backup_log} >>${mysql_backup_log}
- if [ $? = ]
- then
- echo "$(date "+%Y-%m-%d %H:%M:%S") backup database ${current_database_name} success." >> ${mysql_backup_log}
- else
- echo "$(date "+%Y-%m-%d %H:%M:%S") backup database ${current_database_name} failed." >> ${mysql_backup_log}
- fi
- }
- function backup_databases()
- {
- if [ "${mysql_backup_database}" == "ONE_BACKUP" ];
- then
- backup_all_databases
- elif [ "${mysql_backup_database}" == "MORE_BACKUP" ];
- then
- 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)"`
- backup_more_databases
- else
- database_name_list=${mysql_backup_database}
- backup_more_databases
- fi
- }
- ##====================================================##
- ## . dump user script on mysql
- ## . this script only can be used on mysql 5.7
- ##====================================================##
- function dump_user_script_5_7()
- {
- script_file_path="${mysql_backup_folder}""user-script-`date -I`.sql"
- echo "$(date "+%Y-%m-%d %H:%M:%S") start backup user script." >> ${mysql_backup_log}
- (echo "select concat('show create user ''',user,'''@''',host, ''';
- ','show grants for ''',user,'''@''',host, ''';')
- from mysql.user where user <>'root' and user<>'' and host <> '' " | \
- ${mysql_exe} --host="${mysql_backup_host}" --port=${mysql_backup_port} \
- --user="${mysql_backup_user}" --password="${mysql_backup_password}" -N | \
- ${mysql_exe} --host="${mysql_backup_host}" --port=${mysql_backup_port} \
- --user="${mysql_backup_user}" --password="${mysql_backup_password}" -N | \
- sed "s/$/;/" >> ${script_file_path}) >>${mysql_backup_log} >>${mysql_backup_log}
- if [ $? = ]
- then
- echo "$(date "+%Y-%m-%d %H:%M:%S") backup user script success." >> ${mysql_backup_log}
- else
- echo "$(date "+%Y-%m-%d %H:%M:%S") backup user script failed." >> ${mysql_backup_log}
- fi
- }
- ##====================================================##
- ## . dump user script on mysql
- ## . this script only can be used on mysql 5.5
- ##====================================================##
- function dump_user_script_5_5()
- {
- script_file_path="${mysql_backup_folder}""user-script-`date -I`.sql"
- echo "$(date "+%Y-%m-%d %H:%M:%S") start backup user script." >> ${mysql_backup_log}
- (echo "select concat('show grants for ''',user,'''@''',host, ''';')
- from mysql.user where user <>'root' and user<>'' and host <> '' " | \
- ${mysql_exe} --host="${mysql_backup_host}" --port=${mysql_backup_port} \
- --user="${mysql_backup_user}" --password="${mysql_backup_password}" -N | \
- ${mysql_exe} --host="${mysql_backup_host}" --port=${mysql_backup_port} \
- --user="${mysql_backup_user}" --password="${mysql_backup_password}" -N | \
- sed "s/$/;/" >> ${script_file_path}) >>${mysql_backup_log} >>${mysql_backup_log}
- if [ $? = ]
- then
- echo "$(date "+%Y-%m-%d %H:%M:%S") backup user script success." >> ${mysql_backup_log}
- else
- echo "$(date "+%Y-%m-%d %H:%M:%S") backup user script failed." >> ${mysql_backup_log}
- fi
- }
- ##===========================================================================##
- function backup_mysql_user()
- {
- if [[ mysql_version == "mysql55" ]]
- then
- dump_user_script_5_5
- else
- dump_user_script_5_7
- fi
- }
- ##===========================================================================##
- function mysql_backup()
- {
- echo > ${mysql_backup_log}
- get_mysql_version
- remove_expired_file
- backup_databases
- backup_mysql_user
- cat ${mysql_backup_log} > ${mysql_backup_log_his}
- }
- mysql_backup
MySQL Backup--使用mysqldump依次备份所有数据库的更多相关文章
- Mysql启停以及恢复备份恢复数据库
1.mysql启停 进入cmd 输入如下命令 net stop mysql(自己起的mysql名称) -------停 net strat mysql ---------------------- ...
- mysql导入导出.sql文件 备份还原数据库
从数据库导出数据库文件: 进入你的MySQL的安装目录的bin目录或者在C盘的根目录都行,我选的是在bin目录下,下面的例子出第一个外将以在C盘的根目录来讲解 我的mysql安装在了C盘,C: ...
- 使用mysqldump命令备份恢复MySQL数据库
1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump file] 上述命令将指定数据库备份到某dump文 ...
- mysql学习(4)-mysqldump备份和恢复数据
背景 最近在公司做数据迁移方面的工作,使用mysql数据库在测试环境模拟数据迁移,在迁移测试的过程中需要做数据备份和恢复 mysql数据备份和恢复比较简单,可以选择mysqldump工具,这里简单提一 ...
- MySQL 5.7.10 自动备份、自动清理旧备份集
http://blog.csdn.net/mchdba/article/details/51527081 MySQL版本是5.7.10-log社区版本,需要进行备份,但是备份时间长了后,磁盘不够用,所 ...
- mysql 容灾 灾备 备份
一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldump命令的工作原理很简单.它先 ...
- MySQL 5.7.10 自动备份、自动清理旧备份集(转)
1,mysqldump备份脚本 备份脚本为,里面有几个需要注意的参数: (1)--master-data=2 :这个参数可以在搭建从库的时候,记录当前备份的复制点信息. (2)--extended-i ...
- 动态备份SQL-SERVER数据库——SQLDMO
转载:http://www.cnblogs.com/liulanglang/archive/2007/12/04/981812.html 上周要写一个SQL-SERVER数据库备份还原的程序,很没有思 ...
- MySQL Backup mysqldump备份流程学习
我们都知道MySQL逻辑备份工具mysqldump可以保证备份数据的一致性,但是它是怎么保持一致性的? 本文不讨论mysqldump具体的选项和用法,一直对mysqldump的工作机制梳理的不太清楚, ...
随机推荐
- Excel-基本操作
一.EXCEL的数据类型 1.字符型 2.数值型 3.日期型数据和时间型数据 二.快捷键 ctrl+上下左右健 快速选择某区域 上下左右单元格 ctrl+shift+上下左右 快速选择某个取悦 三. ...
- 交换机端口与Mac地址绑定(基于Cisco模拟器)
实验设备: 二层交换机一台,主机三台 实验步骤: 1.进入相应的接口 (以端口1设置Mac地址绑定,PC0接1端口举例) Switch>enable Switch#config Configur ...
- 【微信小程序】手写索引选择器(城市列表,汽车品牌选择列表)
摘要: 小程序索引选择器,点击跳转相应条目,索引可滑动,滑动也可跳转 场景:城市选择列表, 汽车品牌选择列表 所用组件: scroll-view(小程序原生) https://developers.w ...
- Eclipse:设置自动补全,提高编程效率
一.设置自动补全 1.进入eclipse的window里的perferences页面 2.找到java->Editor->Content Assist设置界面 3.在Auto activa ...
- 使用Django REST框架创建一个简单的Api
Create a Simple API Using Django REST Framework in Python WHAT IS AN API API stands for application ...
- torch_06_卷积神经网络
1.概述 卷积神经网络的参数,由一些可学习的滤波器集合构成的,每个滤波器在空间上都计较小,但是深度和输入数据的深度保持一致.在前向传播中,让每个滤波器都在输入数据的宽度和高度上滑动(卷积),然后计算整 ...
- linux php composer安装和使用教程
linux php composer安装和使用教程建议在linux下 下载后 然后再下载到本地 win上最好别用composer下载速度超级慢 或者根本下不动 项目依赖包 ...
- Spring Boot 如何干掉 if else?
需求 这里虚拟一个业务需求,让大家容易理解.假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理. 订单实体: service接口: 传统实现 根据订单类型写一堆的if else: 策 ...
- Dart:3.Dart运算符、流程控制
一 . 运算符 以下列出 Dart 的运算符,从高到低按照优先级排列: 描述 运算符 一元运算符(后置) expr++ expr-- () [] . ?. 一元运算符(前置) -expr !expr ...
- Kafka学习笔记2--Kafka的服务端配置
下载解压 kafka 后,在 kafka/config 下有 3 个配置文件与主题的生产.消费相关. server.properties--服务端配置 producer.properties--生产端 ...