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. 微信小程序HTTP封装请求

    http.js import utils from "../../utils/utils" var http = utils.http; const douban = " ...

  2. DACL原理.控制文件的访问权限(文件,注册表.目录.等任何带有安全属性的对象.)

    目录 一丶简介 1.DACL是什么. 2.如何创建一个自己控制的文件. 3.SDDL是个什么鬼. 二丶 编写SDDL 控制的文件 一丶简介 1.DACL是什么. DACL称为自主访问的控制列表.是应用 ...

  3. solr(一) 单节点安装部署

    一.solr简介 1.什么是solr? Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件 ...

  4. @PathVariable不起作用,报错:Cannot resolve @PathVariable ' '

    @PathVariable是占位符注解.可以把Url中变量的值传递到方法参数中. 示例如下: @PostMapping("/user/name/{id}") @ResponseBo ...

  5. 20189220 余超《Linux内核原理与分析》第七周作业

    分析Linux内核创建一个新进程的过程 基础知识概括 操作系统内核实现操作系统的三大管理功能,即进程管理功能,内存管理和文件系统.对应的三个抽象的概念是进程,虚拟内存和文件.其中,操作系统最核心的功能 ...

  6. Comparator中返回0导致数据丢失的大坑

    今天对一列数据进行排序,因为存储的是Map结构,要实现排序,马上就想到了TreeMap,于是查到API,这样新建TreeMap就能实现添加的时候就自动排序. new TreeMap<>(n ...

  7. Spring cloud微服务安全实战-7-3prometheus环境搭建

    Prmetheus 主要用来做来Metrics的监控和报警,这张图是官方的架构图. 这是他的核心 它的作用是根据我们的配置去完成数据的采集.服务的发现,以及数据的存储. 这是服务的发现,通过Servi ...

  8. VC++6.0/VC6使用c99的stdint.h

    如果使用https://github.com/mattn/gntp-send/blob/master/include/msinttypes/stdint.h会报错: error C2733: seco ...

  9. 警方破获超大DDoS黑产案,20万个僵尸网络运营商被抓

    中国警方已镇压并逮捕了一个犯罪集团,该集团经营着一个由200,000多个受感染网站构成的僵尸网络,这些网站被用来发起DDoS攻击. 这是中国当局针对兴旺的本地DDoS租用场景进行的首次重大镇压,最大的 ...

  10. smb文件共享

    一.服务端: #安装 yum install samba samba-common samba-client -y systemctl start smb ##开启samba服务 systemctl ...