Windows环境MySQL全量备份+增量备份

news2024/12/27 13:35:34

目录

一、环境准备

1.1.安装MySQL

1.2.添加log-bin日志配置

二、创建测试数据库和表

2.1.创建测试数据库

2.2.创建测试数据表

三、全量备份恢复数据库

3.1.全量备份数据库

3.2全量恢复数据库 

四、增量备份恢复数据库

4.1.增量备份数据库

4.2.增量恢复数据库 

五、定时执行备份任务

5.1.任务计划程序


环境准备

1.1.安装MySQL

在进行MySQL数据库备份和还原操作时,必须先提前安装好MySQL环境,且MySQL服务已成功开启

如果没有安装MySQL环境,可以参考博客:http://t.csdnimg.cn/h8bHl

如果已成功安装MySQL环境,打开运行窗口,输入:services.msc打开Windows服务窗口,查看MySQL是否处于开启状态

如果服务开启失败可以将MySQL安装目录下的data目录删除,然后进行重新安装,安装步骤可以参考上面的博客

1.2.添加log-bin日志配置

找到自己MySQL安装目录下的my.ini配置文件

打开my.ini配置文件,并在my.ini文件中的[mysqld]下面添加一行

log-bin=mysql-bin
server-id=1
binlog_format=MIXED

添加完成之后重启MySQL服务,会在MySQL安装目录的data目录下生成一个mysql-bin.000001日志文件

【注】

                mysql-bin.00000X日志文件用于后面进行数据库增量还原操作

1.3.查看是否已经开启二进制日志,执行如下命令查看log-bin是否开启,若状态为ON,则表示已正常开启

show variables like 'log_bin';

二、创建测试数据库和表

2.1.创建测试数据库

使用Navicat或者其他数据库管理工具登录MySQL

-- 创建数据库如果不存在db_blbl,默认字符集为utf8,校对规则为utf8_general_ci
create database if not exists db_blbl default charset utf8 collate utf8_general_ci;

可以在Navicat的左分区查看创建好的数据库也可以在MySQL安装目录下的data里面查看

创建好db_blbl数据库后,要使用这个数据库,则执行命令

-- 切换数据库
use db_blbl

或者在Navicat中的查询窗口运行旁边有一个下拉框也可以手动选择切换数据库

2.2.创建测试数据表

输入如下命令,创建一个t_student学生表

create table t_student
(
   sid                  int not null comment '学号',
   sname                varchar(60) not null comment '姓名',
   sex                  tinyint not null default 1 comment '性别:1男, 2女',
   age                  tinyint not null comment ' 年龄',
   icard                varchar(18) not null comment '身份证,唯一约束',
   primary key (sid),
   unique key AK_Key_2 (icard)
) comment '学生信息表';

执行以下代码命令,往t_student学生表中插入数据

insert into t_student values(1,'张学友',1,36,'1234567891011');
insert into t_student values(2,'刘德华',1,39,'1234567891011');

执行完成后可以执行查询语句查看此时表中有两条数据

-- 查询t_student
select * from t_student

三、全量备份恢复数据库

3.1.全量备份数据库

打开cmd窗口,cd进入到MySQL安装目录的bin目录下

在bin目录下执行如下命令,将刚才创建的db_blbl数据库进行全量备份操作

mysqldump --opt --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE -u root --password=mysql.com db_blbl t_student > "C:\beifen.sql"

说明:

  1. host=127.0.0.1就是你要备份的数据库IP地址
  2. port=3306数据库端口号
  3. "C:\beifen.sql"将db_blbl数据库全量备份到C盘根目录下,取名叫beifen.sql
  4. db_blbl t_student 就是你要备份的数据库名和表名,可以对db_blbl进行全库备份,也可以单独对t_student表进行全量备份

注意:

        备份的盘符一定要和MySQL安装目录在同一个盘符中,要不然会提示:拒绝访问

备份不需要的表操作

可以在上面代码表的位置加上--ignore-table=数据库名.表名

-- 实例
mysqldump --opt --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE -u root --password=mysql.com db_blbl --ignore-table=db_blbl._t_student> "C:\beifen.sql"

备份完成后,会自动在对应目录下生成一个sql文件,可以前往对应目录查看全量备份的数据库

我们可以将上述步骤封装到一个.bat批处理脚本文件中,然后双击运行该批处理文件即可执行全量备份数据库

全量备份数据库脚本如下

rem Auther By Anker
rem date:20201119
rem ******Backup MySQL Start******
@echo off
::设置时间变量
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"
 
::创建存储的文件夹
if not exist "C:\mysql_backup" md "C:\mysql_backup"
 
::执行备份操作
"C:\Program Files\mysql-5.7.23-winx64\mysql-5.7.23-winx64\bin\mysqldump" --opt --user=root --password=mysql.com --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "db_blbl" >C:\beifen_%Ymd%.sql
 
::删除90天前的备份数据
forfiles /p "C:\mysql_backup" /m backup_*.sql -d -90 /c "cmd /c del /f @path"
 
@echo on
rem ******Backup MySQL End******
3.2全量恢复数据库 

先将事先创建好的db_blbl数据库删除

-- 删除数据库db_blbl
drop database db_blbl;

我执行的是drop命令,相当于将数据库数据和结构全部删除了,此时需要重新将数据库结构给创建出来,才能执行还原恢复操作。所以,再次执行创建数据库命令

-- 创建数据库如果不存在db_blbl,默认字符集为utf8,校对规则为utf8_general_ci
create database if not exists db_blbl default charset utf8 collate utf8_general_ci;

然后再使用管理员方式打开命令行切换到这个db_blbl数据库,即use db_blbl

-- 切换数据库
use db_blbl

执行以下命令恢复被删除的db_blbl数据库

source C:\beifen.sql

查询t_student表,会发现之前的t_student表数据又回来了 

-- 查询t_student
select * from t_student

四、增量备份恢复数据库

4.1.增量备份数据库

往t_student学生表中再插入2条数据

查询命令查询t_student表,此时会发现又多了2条数据

-- 查询t_student
select * from t_student

执行truncate t_student;命令,删除t_student学生表里面的数据

【注意】

                如果执行drop t_student;命令的话,则整个t_student表结构和数据都被删除了,此时只有通过全量进行恢复了

truncate t_student;

再次执行查询命令查询t_student表,会发现t_student表中已经无数据了

-- 查询t_student
select * from t_student

我们可以将备份操作封装到一个.bat批处理脚本文件中,然后双击运行该批处理文件即可执行增量备份数据库,
增量备份数据库脚本如下

rem Auther By Anker
rem date:20201119
rem ******Backup MySQL Start******
@echo off
::设置时间变量
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"
 
::执行增量备份操作
mysqladmin -u root -p mysql.com flush-logs
 
@echo on
rem ******Backup MySQL End******

【注意】

                要根据自己的实际设置来配置这个脚本文件

4.2.增量恢复数据库 

执行增量恢复之前,需要先执行一次全量恢复,将数据库数据还原到之前最新的某个时间段的数据,即执行命令:source C:\beifen.sql

再次执行查询命令查询t_student表,会发现之前的t_student表数据又回来了,但是表中的数据只有张学友、刘德华,并没有后来新增的郭富城、王八

-- 查询t_student
select * from t_student

要想把后来新增的郭富城、王八数据还原回来,则需要用到bin-log文件了。即在mysql环境下运行如下命令

show binlog events in 'mysql-bin.000001';

查看binlog内容记录下的郭富城这条数据的开始位置和结束位置

在MySQL安装目录的data目录下执行如下命令,即可将data目录下需要备份的bin-log文件转换成sql文件

此时会发现C盘自动生成一个zengliang.sql文件

执行如下命令,还原被删除的郭富城

source C://zengliang.sql;

再次执行查询命令查询t_student表,会发现之前的t_student表数据郭富城这条数据又回来了

-- 查询t_student
select * from t_student

五、定时执行备份任务

5.1.任务计划程序

在控制面板程序搜索列表中搜索“计划任务”,并打开

打开任务计划程序后,点击右侧的“创建基本任务”,并对计划任务的名称和描述进行编写

任意取一个名称,点击下一步

根据自己需要,点击选择定时执行的周期,点击下一步

设置所需要执行的时间,点击下一步

选择启动程序,并点击下一步

浏览选择编写完成的备份脚本文件,点击下一步

确认信息无误后点击完成

定时任务创建好后,可在任务列表中看到我们所创建的任务,可以通过右键该条任务进行删除等处理

【最后】

                增量备份二进制日志建议每天刷新一次。这确保了数据库备份的频率足够高,以最小化数据丢失的风险。通过每天刷新增量备份,可以更有效地管理数据库的变化,并在需要时还原到最新的状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1489678.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抽象步骤条(2.0版本)

vue3 router ele-plus 猜猜看为什么使用组件库&#xff01; 他呀的&#xff01;查看密码要自己写&#xff0c;验证信息也要自己写&#xff0c;所以说会用组件库会轻松一点&#xff0c;&#xff0c;&#xff0c; 代码如下 <template><div class"main"&g…

自动化构建平台(五)之Jenkins初始化配置以及插件安装操作

文章目录 前言一、安装必要插件二、系统参数配置三、全局工具配置总结 前言 上一篇我们介绍了Jenkins的安装和登录等相关操作&#xff0c;今天给大家介绍登录Jenkins后的一些初始化配置和插件安装的操作。因为如果要使用Jenkins来进行代码构建&#xff0c;必须先安装相关的插件…

WebDAV之π-Disk派盘+人生Life

人生Life是一款日程软件,在这款待办的日程软件当中各种功能极为的完善,完全的足够用户在日常当中的使用,你的待办方面的各种内容都能够在软件上面进行规划和填充,通过待办事项来帮助用户提高在日常当中的效率,对于用户来说这款待办事项的软件是绝佳的选择。 π-Disk派盘 …

VScode---php环境搭建

文章目录 1.下载php Dehug;php server2.下载php环境3.配置环境变量5.配置php.ini文件6.设置vscode6.测试遇到的问题 1.下载php Dehug;php server 2.下载php环境 下载地址&#xff1a;https://www.php.net/downloads.php 3.配置环境变量 C:\Users\hacker>php -v PHP 8.3.3 (…

c++编程复习之字符数组:电报文字

电报文字 内存限制&#xff1a;128Mb 时间限制&#xff1a;1000s 提交&#xff1a;138 解决&#xff1a;13 题目描述 输入一行电报文字&#xff0c;将字母变成其下一字母&#xff08;如’aa’变成’bb’……’zz’变成’&#xff41;&#xff41;’其它字符不变&#xff09;。 …

【leetcode】随机链表的复制

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家刷题&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 点击查看题目 思路: struct Node* copyRandomList(struct Node* head) {struct Node* curhead;//1.copy原链…

温湿度传感器SHT21

SHT21是一款基于IIC的温湿度传感器&#xff0c;它的引脚及定义如下&#xff1a; 标准的IIC器件&#xff0c;没有其他多余的引脚&#xff0c;应用框图如下&#xff1a; 温度的测量范围是-40到125℃&#xff0c;湿度测量范围0-100%RH&#xff0c;具体参数及采样精度见下图&#x…

利用excel文件增量同步一个库的数据并自动校正两端数据库条数不一致

利用excel文件增量同步一个库的数据并自动校正两端数据库条数不一致 现在有sqlserver和mysql两个库上的表在进行同步&#xff0c;sqlserver上的是源表&#xff0c;mysql上是目标表。 我们就把sqlserver上的数据同步到mysql上 mysql 是没有数据的。 sqlserver的三个表只是创建了…

Java-集合/容器

集合的概念 当我们需要保存一组一样&#xff08;类型相同&#xff09;的元素的时候&#xff0c;我们应该使用一个容器来存储&#xff0c;数组就是这样一个容器。 数组的特点&#xff1a; 数组是一组数据类型相同的元素集合&#xff1b; 创建数组时&#xff0c;必须给定…

Rabbitmq消息丢失-生产者消息丢失(一)

说明&#xff1a;消息生产者在将数据发送到Mq的时候&#xff0c;可能由于网络等原因造成数据投递失败。 消息丢失大致分三种&#xff1a;这里说的是生产者消息丢失&#xff01; 分析原因&#xff1a; 1.有没有一种可能&#xff0c;我刚发送消息&#xff0c;消息还没有到交换…

Matlab|配电网智能软开关(sop)规划模型

目录 1 主要内容 目标函数 2 部分程序 3 程序结果 3.1 sop选址定容优化模型 3.2 对比算例&#xff08;不含sop&#xff09; 4 下载链接 1 主要内容 该程序参考文献《基于改进灵敏度分析的有源配电网智能软开关优化配置》&#xff0c;采用二阶锥算法&#xff0c;以改进的…

Vue3+element-plus复杂表单分组处理

一、为什么表单要分组处理&#xff1f; 方便表单字段的复用&#xff1a;例如&#xff0c;你的表单有十个字段会在很多的表单都会用到&#xff0c;那么表单则需要进行分组进行表单复用&#xff1b;实现不同角色的表单权限控制&#xff1a;例如一个表单有60个字段&#xff0c;角…

STM32 NAND FLASH知识点

1.NAND FLASH的简介 NAND FLASH 的概念是由东芝公司在 1989 年率先提出&#xff0c;它内部采用非线性宏单元模式&#xff0c;为固态大容量内存的实现提供了廉价有效的解决方案。 NAND FLASH 存储器具有容量较大&#xff0c;改写速度快等优点&#xff0c;适用于大量数据的存储&…

【MySQL】事务、锁

目录 事务案例场景模拟实现转账&#xff1a;从张三的账户转账500元到李四的账户SQL示例异常 什么是事务事务的特性&#xff0c;简称ACID 属性实现原理redo logundo log MySQL 中一条 SQL 更新语句的执行过程( InnoDB 存储引擎)事务的提交流程隔离性并发事务产生的问题事务隔离级…

434G数据失窃!亚信安全发布《勒索家族和勒索事件监控报告》

最新态势快速感知 最新一周全球共监测到勒索事件90起&#xff0c;与上周相比数量有所增加。 lockbit3.0仍然是影响最严重的勒索家族&#xff1b;alphv和cactus恶意家族也是两个活动频繁的恶意家族&#xff0c;需要注意防范。 Change Healthcare - Optum - UnitedHealth遭受了…

【Python】外网远程登录访问jupyter notebook+pycharm使用ipython

第一步&#xff1a;创建python虚拟环境 conda create -n py3610 python3.6.10第二步&#xff1a;安装ipython pip install ipython pip install ipython notebook第三步&#xff1a;创建 IPython Notebook 服务器配置文件 # 进入python交互shell&#xff0c;设置密码 >&…

SpringCloud(19)之Skywalking应用上篇

一、Skywalking概述 随着互联网架构的扩张&#xff0c;分布式系统变得日趋复杂&#xff0c;越来越多的组件开始走向分布式化&#xff0c;如微服务、消 息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用&#xff0c;这些组件共同构成了繁杂的分布式网络。 思考以下…

Leaflet 加载高德地图

前言 在前面的文章中&#xff0c;我们学习了如何使用 Leaflet 创建一个基本的地图。在本文中&#xff0c;我们将学习如何在 Leaflet 中加载高德地图&#xff0c;并结合实际应用构建地图点击事件。 一、介绍 高德地图是一款由高德软件提供的数字地图服务&#xff0c;在国内使用…

在国内如何申请US,visa卡?

随着跨境与AI的发展大家对美国虚拟卡的需求也越来越多&#xff0c;比如说亚马逊、ebay、Etsy、ChatGPTPLUS、midjourney、POE等等软件以及海淘的需要&#xff0c;所以我们需要用到美国虚拟卡的场景就越来越多 如何获得一张US 虚拟信用卡&#xff1f; 方法很简单&#xff0c;点…

React-子传父

1.概念 说明&#xff1a;React中子组件向父组件传递数据通常涉及回调函数和状态提升等方法。 2.代码实现 2.1绑定事件 说明&#xff1a;父组件绑定自定义事件 <Son onGetSonMsg{getMsg}></Son> 2.2接受事件 说明&#xff1a;子组件接受父组件的自定义事件名称…