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

#!/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依次备份所有数据库的更多相关文章

  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. JAVA并发-Condition

    简介 在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait().notify()系列方法可以实现等待/通知模式.在Java SE5后,Java提供了Lock接口, ...

  2. 安卓Jsoup爬虫

    第一步:导入Jsoup包:把你的jar包放在libs下面之后 接着就会显示在你的这个地方: 重要的还是源码(搞了很久 出错很多 终于成功):我做的是输入要查找的关键字百度百科爬取主要定义,按照标签爬取 ...

  3. 用 mongodb + elasticsearch 实现中文检索

      而 elasticsearch 可以很好的支持各种语言的全文检索,但我们暂时又不想切换到 elasticsearch 作为后端数据库. 当然,可以在 web 应用中存储数据的时候,再主动写一份到 ...

  4. phoenix hbase Can't get master address from ZooKeeper; znode data == null

    问题描述: 项目一直在用的hbase节点  简称h1 由于网络问题,无法使用,重新找了一个网络稳定的节点  z1作为新的hbase库,库名称hbase_test,zookeeper等都配置好后,通过j ...

  5. CSS3中的px,em,rem,vh,vw

    1.px:像素,精确显示 2.em:继承父类字体的大小,相当于“倍”,如:浏览器默认字体大小为16px=1em,始终按照div继承来的字体大小显示,进场用于移动端 em换算工具:http://www. ...

  6. [LeetCode] 1028. Recover a Tree From Preorder Traversal 从先序遍历还原二叉树

    We run a preorder depth first search on the rootof a binary tree. At each node in this traversal, we ...

  7. [LeetCode] 312. Burst Balloons 打气球游戏

    Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it represented by ...

  8. 通过扫码打开IOS的App Store下载APP(Android版暂时没找到解决方法)

    项目需求:扫码根据不同平台下载不同版本的APP.主要是ios和Android. 网上找了很多,前面判断平台的代码很容易找到,但是后面的就有些坑了.有的人的是根本跑不通.有的是代码补全. 下面是 微信扫 ...

  9. Java实现牛顿迭代法求解平方根、立方根

    一.简介 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法. ...

  10. 通过JS下载 or 唤起App

    判断唤起app的连接是否在WeChat中打开 let isWeiXin = navigator.userAgent.toLowerCase().indexOf('micromessenger') != ...