一. 脚本须知

  1.mysql数据文件和二进制日志文件最好保存在不同的分区或存储设备上

  2.备份完成后注意修改数据的权限以防止泄露重要信息,哪些主机哪些用户可以用来恢复

  3. 查看导出的2进制日志文件看是否符合逻辑和业务,2进制日志文件只能保证物理上数据即时点还原,却保证不了数据逻辑上正确恢复(比如drop语句)

  4.为了保证数据恢复没有问题建议在测试机上做一次数据恢复测试

  5.恢复测试OK可以放到crontab定时任务中

 #!/bin/bash
#
# Function:实现mysql完全备份
# Notes: # 定义备份使用到的相关变量(需要根据用户实际环境做相应的修改)
backup_data=/backup/mysql/full
backup_binlog=/backup/mysql/logbin
mysql_binlog=/mydata/log-bin
mysql_bin_path=`ps -ef | grep -E "mysqld[[:space:]]+" | awk -F ' ' '{ print $8 }' | sed -r 's@[^/]+/?$@@'`
mysql_user=root
mysql_password=mysqldba
logfile=/var/log/mysqldump.log # 函数定义 ########################[MySQL健康检测]######################
health_check() {
if pgrep mysqld &> /dev/null;then
mysqld_pid=`pgrep -l mysqld | grep -E "mysqld\>" | awk '{ print $1 }'`
echo "$(date +"%Y-%m-%d %H:%M:%S") $mysqld_pid [Note] Server Mysql is Running ..." >> $logfile
else
service mysqld start &> /dev/null || echo "$(date +"%Y-%m-%d %H:%M:%S") [Warning] Server MySQL is not running, backup failed" >> $logfile && return 5
fi
} #######################[mysqldump完全备份]###################
full_backup(){
local backup_name=full-`date +%F-%T`.sql
[ ! -d $backup_data ] && mkdir -p $backup_data
${mysql_bin_path}mysqldump -u$mysql_user -p$mysql_password --all-databases --lock-all-tables --flush-logs --master-data=2 \
--triggers --routines --events --set-gtid-purged=off -r ${backup_data}/$backup_name &> /dev/null
if grep -q "CHANGE MASTER TO" ${backup_data}/$backup_name ;then
return 0
else
return 5
fi
} ########################[Mysql 二进制日志备份]#####################
bin_backup(){
[ ! -d $backup_binlog ] && mkdir -p $backup_binlog
cd $mysql_binlog
tar -jcf bin-`date +"%F-%H'%M'%S"`.tar.bz2 * &> /dev/null
\mv -f bin*.tar.bz2 $backup_binlog
} # 主函数main health_check
if [ $? -eq 0 ];then
echo "$(date +"%Y-%m-%d %H:%M:%S") [Note] MySQL full backup start ..." >> $logfile
else
echo "$(date +"%Y-%m-%d %H:%M:%S") [Warning] Server MySQL is not running, backup failed" | mail -s "mysql backup is failed" root@`hostname`
fi
full_backup
if [ $? -eq 0 ];then
echo "$(date +"%Y-%m-%d %H:%M:%S") [Note] MySQL full backup is finished" >> $logfile
chmod -R 600 $backup_data
else
echo "$(date +"%Y-%m-%d %H:%M:%S") [Warning] Function full_backup() execution failed, backup was interrupted" | cat | tee -a $logfile | mail -s "mysql backup is failed" root@`hostname`
fi
echo "$(date +"%Y-%m-%d %H:%M:%S") [Note] MySQL binary log file backup is started ..." >> $logfile
bin_backup
if [ $? -eq 0 ];then
echo "$(date +"%Y-%m-%d %H:%M:%S") [Note] MySQL binary log file backup is finished " >> $logfile
chmod -R 600 $backup_binlog
else
echo "$(date +"%Y-%m-%d %H:%M:%S") [Warning] Mysql binary log file backup is not completed" | cat | tee -a $logfile | mail -s "mysql binary log backup failed" root@`hostname`
fi

二.实例效果图

脚本执行完查看备份数据和日志

 

脚本执行过程跟踪

加入crontab任务

 

MySQL完全备份脚本:数据+二进制日志+备份日志的更多相关文章

  1. SQLSERVER 数据库备份脚本-支持多库备份

    原文:SQLSERVER 数据库备份脚本-支持多库备份 <pre name="code" class="sql">--变量定义 DECLARE @b ...

  2. JDBC Java 程序从 MySQL 数据库中读取数据,并备份到 xml 文档中

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 程序从 MySQL 数据库中读取数据,并 ...

  3. mysql单表导入数据,全量备份导入单表

    (1)“导出”表 导出表是在备份的prepare阶段进行的,因此,一旦完全备份完成,就可以在prepare过程中通过--export选项将某表导出了: innobackupex --apply-log ...

  4. 测试必备技能系列1 :通过mysql命令进行脚本数据导入

    老徐,分享测试项目中实际能解决问题的干货!   今日分享: 如何通过mysql命令行,导入mysql脚本文件数据?   ----- 解决实际的问题: 工作过程中,经常需要导入mysql脚本文件 很多同 ...

  5. Linux日志每日备份脚本

    2018-5-28 10:59:07 星期一 原理是: 1. 每天0点0分crontab执行备份脚本 2. 先将当前日志文件copy一份作为备份, 备份文件名的后缀为前一天 3. 用当前日志的最后50 ...

  6. CMD mysql 备份脚本

    创建.bat文件 echo. echo MySQL数据库备份脚本 echo ***************************** echo. echo 备份日期:%date% echo 备份时间 ...

  7. liunx文件定期本地备份、异地备份、删除备份脚本

    导航 一.背景二.依赖功能介绍三.本地备份脚本四.异地备份脚本五.定期删除备份六.github脚本地址 - - - - - - - - - - 分割线 - - - - - - - - - - 一.背景 ...

  8. Linux 下的 PostgreSQL 数据库+文件通用自动备份脚本

    由于 Odoo(原名 OpenERP)自 8.0 以来会生成 CSS,并把附件存储在文件系统中,因此以前单纯备份数据库的脚本已经不够用了.出于实际部署的考虑,我专门写了个较为通用的 Odoo 备份脚本 ...

  9. elasticsearch备份脚本

    1.主要文件 [root@k8s elasticsearch]# tree . ├── backup_es.sh ├── indices_file.txt ├── recover_es.sh └── ...

  10. 华为云计算IE面试笔记-eBackup有哪几种备份组网方式,各备份组网方式主要的应用场景及备份流程?

    应用场景: LAN-Base一般用于备份数据量小,且对备份窗口没有特殊要求的场景,此类场景下备份服务器和备份代理一般是虚拟机部署. LAN-Free一般用于备份数据量较大,且对备份窗口要求比较严格的场 ...

随机推荐

  1. textContent和innerText属性的区别

    原文摘自 textContent和innerText属性的区别 <!DOCTYPE html> <html> <head> <meta charset=&qu ...

  2. MYSQL存储过程,函数,光标

    存储过程 MySQL中,创建存储过程的基本形式如下: CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] ro ...

  3. Jenkins注意点

    这里要填写 在 Linux 上 生成的 git 私钥 并且带上  前后 注释 ------start -----      ---end -------

  4. Java AES加密解密工具 -- GUI 、在线传输文件

    原理 对于任意长度的明文,AES首先对其进行分组,每组的长度为128位.分组之后将分别对每个128位的明文分组进行加密. 对于每个128位长度的明文分组的加密过程如下:     (1)将128位AES ...

  5. 浅探webpack优化

    由于前端的快速发展,相关工具的发展速度也是相当迅猛,各大框架例如vue,react都有自己优秀的脚手架工具来帮助我们快速启动一个新项目,也正式因为这个原因,我们对于脚手架中最关键的一环webpack相 ...

  6. vue-highlightjs的使用小结

    万能的github真主,让我们强大!在vue的项目中想使用highlight.js这样的代码高亮?有人帮助我们实现了vue-highlightjs 安装 yarn add highlight.js - ...

  7. Maven配置项目依赖使用本地仓库的方法汇总

    Maven配置项目使用本地仓库有以下方式实现: 1.类似本地仓库,但是属于本地依赖,比如某个JAR包是引用第三方的,直接放在了项目的lib文件夹,那么此时可以如下配置项目的POM: <depen ...

  8. 如何使用 HTML5 的picture元素处理响应式图片

    来自: http://www.w3cplus.com/html5/quick-tip-how-to-use-html5-picture-for-responsive-images.html 图片在响应 ...

  9. JAVA获取网络图片并保存到本地(随机图片接口)

    import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import j ...

  10. P3388 【模板】割点(割顶)

    P3388 [模板]割点(割顶) 题目背景 割点 题目描述 给出一个n个点,m条边的无向图,求图的割点. 输入输出格式 输入格式: 第一行输入n,m 下面m行每行输入x,y表示x到y有一条边 输出格式 ...