一. 脚本须知

  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. python入门:求1-2+3-4+5...99的所有数的和(自写)

    #!/usr/bin/env pyhton # -*- coding:utf-8 -*- #求1-2+3-4+5...99的所有数的和(自写) """ 给x赋值为0,给y ...

  2. 【markdown】图片的处理

    1st: ![tip](link) 2ed: ![tip][id] [id]:base64string 本地图片 先把本地图片文件转换成base64位编码 然后把 link 替换成生成的base64编 ...

  3. Python基础——字典(dict)

    由键-值对构建的集合. 创建 dic1={} type(dic1) dic2=dict() type(dic2) 初始化 dic2={'hello':123,'world':456,'python': ...

  4. Python学习笔记:字符串

    字符串 字符串定义:字符串可以使用一对单引号.双引号或三引号来定义,即便是单个字符也会当做字符串来处理(Python中没有字符类型,单个字符也就是只有一个字符的字符串而已). 原始字符串:字符串中反斜 ...

  5. 树莓派开发板入门学习笔记2:[转]树莓派系统在VM中能做什么

    问"树莓派系统在VM中能做什么"不如问"树莓派能做什么":(参考:树莓派实验室) 普通难度的DIY 较高难度的DIY 用树莓派打造一个家庭影院 给树莓派安装摄像 ...

  6. AJAX小练习

    /index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pa ...

  7. JAVA中变量的类型及命名规范

    1. 计算机是一种极度精确的机器;2. 要将信息存储在计算机当中,就必须指明信息存储的位置和所需的内存空间;3. 在JAVA编程语言当中,使用声明语句来完成上述的任务; 4. 变量的类型: 5. 变量 ...

  8. Mybatis中接口和对应的mapper文件位置配置详解

    Mybatis中接口和对应的mapper文件位置配置详解 原链接为:https://blog.csdn.net/fanfanzk1314/article/details/71480954 今天遇到一个 ...

  9. J​a​y​r​o​c​k​.​J​s​o​n​读​取​j​s​o​n​数​据​(​n​e​t​)

    1 : 首 先 下 载 Jayrock.Json.dll 文 件 , 放 入 bin 目 录 中 : 地 址 : http://www.filediag.com/down/Jayrock.Json.d ...

  10. 软件工程师应该关注的web加密手段

    加密算法 1.非对称加密(公开密钥加密)       公开密钥加密,是加密和解密使用不同密钥的算法,广泛用于信息传输中. 常见的算法有:RSA.ElGamal.Rabin. 2.对称加密       ...