1.前言

这周公司交给我一个任务,负责项目Mysql数据库的备份,因为项目上线后数据是一个大问题,出了什么问题数据才是最大的问题,备份这时候就显得尤为重要,

公司项目的思路是:在项目系统设置内可以勾选完整备份和增量备份,选择指定的时间内进行备份,也可以选择手动备份

我的思路:把mysql 需要的备份命令写到bat批处理文件里面,按照Java后端定时器去调用方法,方法调用bat批处理文件!

2.完整备份

完整备份相对于增量备份要简单的多,因为生成的是SQL文件,直接导入即可,主要的采坑还是增量备份

1.项目人数日渐庞大,数据越来越多,如果只是单纯的全局备份,又是占用磁盘又是耗费时间

2.可以考虑每周备份一次完整备份,每天备份一次增量

如何备份多个表?

答:mysqldump -u用户 -p 数据库 表1 表2 …… 表N > 备份文件路径

如何备份1个数据库?

答:mysqldump -u用户 -p -B 数据库 > 备份文件路径

如何备份多个数据库?

答:mysqldump -u用户 -p -B 库1 库2 …… 库N >备份文件路径

如何备份所有数据?

答:mysqldump -u用户 -p -A >备份文件路径

备份好之后的SQL文件

3.SQL 文件的导入

source sql文件路径

4.采坑之路 增量备份

4.1 版本问题(坑)

我之前使用的mysql是phpStyle自带的,它的版本在5.56的样子,自带的命令里面没有可以生成日志文件的mysqlbinlog命令 

错误尝试:去网上下载了一个mysqlbinlog 然而没考虑版本问题,虽然可以生成二进制文件,但是导不进去!!!失败

4.2 安装了一个mysql 8.0版本后找不到my.ini配置文件!

尝试:百度后发现,mysql 8.0那个版本已经开启了日志的处理,我们不需要修改mysql 配置文件

参考:https://blog.csdn.net/zone_/article/details/81321431

4.3 导出的二进制日志文件mysql不识别 说不是一个二进制文件(你TM在逗我????)

1.首先找出最新的日志文件名称

2.使用命令导出!(我这里的二进制目录已经改变过,没有改变过的日志文件存放在:C:\ProgramData\MySQL\MySQL Server 8.0\Data)(隐藏目录!!!!!!)

尝试:使用命令导出:mysqlbinlog -uroot -proot --read-from-remote-server binlog.000003 > e:\backup\binlog.000003

1.导出后的文件居然打开不乱码!!惊奇

2.尝试导入,别想了 导不进去

尝试把二进制文件弄成SQL文件,试着导入!

1.尝试导出 mysqlbinlog --no-defaults --base64-output=decode-rows -v binlog.000004 --result-file=e:\backup\123.sql

2.尝试导入:source e:/backup/123.sql 

失败!!!!心态炸裂

5.最终奥义!

1.思路:使用bat批处理把那个二进制文件复制出来,然后导入呢?

2.尝试 发现日志文件存在的地方是一个隐藏目录,cmd窗口根本就中不到,于是乎!!!!

修改mysql配置文件,让它把生成的二进制文件存到别的地方 我好复制

参考:https://blog.csdn.net/The_Beetles/article/details/89553653

下面贡献两个脚本bat批处理文件,方便使用

::--------------全量备份mysql数据库---------------
::服务器数据库ip 用户名 密码 申明需要备份的数据库
set suser=root
set suserpwd=root
set backdatabase=test ::当前系统日期 20160309
set now=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2% ::备份文件夹
set backup=backup
if not exist %backup% md %backup% ::以日期命名的文件夹
set nowfile=%backup%\%now%
if not exist %nowfile% md %nowfile% ::开始备份
mysqldump -u%suser% -p%suserpwd% --single-transaction --skip-triggers --skip-lock-tables --master-data=2 --force -B %backdatabase%>%nowfile%\%backdatabase%.sql exit

  

@echo off

::服务器数据库ip 用户名 密码
set suser=root
set suserpwd=root
::mysql 二进制日志文件存放的位置
set filePath= E:\mysql\Data ::当前系统日期
set now=%DATE:~,%%DATE:~,%%DATE:~,% ::备份文件夹
set backup=backup
if not exist %backup% md %backup% ::以日期命名的文件夹
set nowfile=%backup%\%now%-Increase
if not exist %nowfile% md %nowfile% ::前一次日志文件名
set binlog=%nowfile%\binlog.txt mysql -u%suser% -p%suserpwd% -e "show master status"|findstr -B binlog.>%binlog% ::处理日志文件名 只取binlog. 复制到目标文件夹
FOR /F "delims= " %%i in (%binlog%) do copy %filePath%\%%i %nowfile% ::刷新日志产生新的日志
mysqladmin -u%suser% -p%suserpwd% flush-logs exit

长路漫漫!采坑为伴

Windows MySql增量备份、完整备份采坑之路的更多相关文章

  1. 阿里云 如何减少备份使用量? mysql数据库的完整备份、差异备份、增量备份

    RDS for MySQL备份.SQL审计容量相关问题_MYSQL使用_技术运维问题_云数据库 RDS 版-阿里云 https://help.aliyun.com/knowledge_detail/4 ...

  2. Percona Xtrabackup备份mysql大数据库(完整备份与增量备份)

    Percona Xtrabackup备份mysql大数据库(完整备份与增量备份)     文章目录 [隐藏] Xtrabackup简介 Xtrabackup安装 Xtrabackup工具介绍 inno ...

  3. MySQL数据库无完整备份删库,除了跑路还能怎么办?

    1.背景 前段时间,由于运维同事的一次误操作,清空了内网核心数据库,导致了公司内部管理系统长时间不可用,大量知识库内容由于没有备份险些丢失. 结合这两天微盟的删库跑路事件,我们可以看到,数据库的备份与 ...

  4. axios采坑之路

    POST请求设置Content-Type 由于后端采用的是form表单形式上送参数,需要设置Content-Type axios设置如下 const _axios = axios.create(con ...

  5. java采坑之路

    判断相等 字符串判断相等         String str1 = null;         String str2 = "java金融";        // str1.eq ...

  6. Mac使用Gradle上传jar到中央仓库(最完整的采坑记录)

    前言 当我们封装完成我们自己做的工具之后,那我们肯定想要发给别人让别人来进行使用,上传到中央仓库是一种引入时最方便的选择. 网上有很多教程,但是大多都是maven和windows的环境. 今天就来记录 ...

  7. win10+tensorflow+CUDA 心酸采坑之路

    最近准备学习机器学习和深度学习,所以入坑Tensorflow,之前一直使用的是Anaconda3的cpu版本的Tensorflow,但是这次作死一直想用GPU版本的,主要是不想浪费我的1080ti,但 ...

  8. .NetCore WebAPI采坑之路(持续更新)

    1.WebAPI新增日志过滤器or中间件后Action读取到的请求Body为空问题 案例: 自定义了一个中间件,用于记录每次访问webapi的入参,以及引用了Swagger. 先看下面这段代码: pu ...

  9. CentOS7.X安装英伟达显卡采坑之路

    1.系统信息 操作系统版本:CentOS7.X 显卡版本:英伟达 Tesla P100 其他软件包安装信息: CUDA 9.0 CUDNN 7.4.2.24 lightgbm 2.2.X Boost ...

随机推荐

  1. python基础代码

    from heapq import *; from collections import *; import random as rd; import operator as op; import r ...

  2. Hadoop(二)—— HDFS

    HDFS(Hadoop Distributed File System)Hadoop分布式文件系统. 一.HDFS产生的背景 随着数据量越来越大,如果大到一台主机的磁盘都存放不下,该如何解决这个问题. ...

  3. Verticles for Web Application

    Core Concept: HTTP-Centered EventBus Event, EventLoop, Executor, Handler, HTTPContext, Callback on E ...

  4. CTF PHP反序列化

    目录 php反序列化 一.序列化 二.魔术方法 1.构造函数和析构函数 2.__sleep()和__wakeup() 3.__toString() 4.__set(), __get(), __isse ...

  5. Alpha2

    队名:福大帮 组长博客链接:https://www.cnblogs.com/mhq-mhq/p/11885037.html 作业博客 :https://edu.cnblogs.com/campus/f ...

  6. jmeter 内存溢出原因及解决方法

    jmeter是一个java开发的开源性能测试工具,在性能测试中可支持模拟并发压测,但有时候当模拟并发请求较大或者脚本运行时间较长时,压力机会出现卡顿甚至报异常————内存溢出, 这里就介绍下如何解决内 ...

  7. 从ReentrantLock的实现看AQS的原理及应用 可重入锁

    https://mp.weixin.qq.com/s/sA01gxC4EbgypCsQt5pVog

  8. layui table.reload的bug

    bug1: bug描述:当cols列在reload中有变化时,渲染后部分cols列自动隐藏(并未对这些列设置hide:true) bug版本:2.3.5版本有此bug,今日更新最新版本2.5.5 仍有 ...

  9. 在MAX10上使用DDR3 IP的一个关于DQS/DQSn pin的错误解决办法

    MAX10 是Intel FPGA的CPLD中的一个特殊的芯片,因为它内部有CPLD的Flash结构,也有FPGA的Ram结构.具体的可以参考MAX10 Handbook文档. Max10 在外部存储 ...

  10. win10锁住鼠标和键盘操作。

    以前做的一个winform自动更新程序没考虑到程序在更新过程中禁止操作被更新程序.现在加上了更新过程中锁住鼠标和大部分键盘. 碰到问题:用系统api -- BlockInput(true)锁住屏幕无效 ...