京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Windows环境MySQL全量备份+增量备份的实现

2024-11-3 05:34| 发布者: 44f6fa4f5| 查看: 69| 评论: 0

摘要: 目次一、环境预备二、创建测试数据库和表2.1.创建测试数据库2.2.创建测试数据表三、全量备份恢复数据库3.1.全量备份数据库3.2全量恢复数据库 四、增量备份恢复数据库4.1.增量备份数据库4.2.增量恢复数据库 
目次

环境预备

1.1.安装MySQL

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

如果没有安装MySQL环境,可以参考博客:https://www.jb51.net/database/3069340t1.htm

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

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

1.2.添加log-bin日记设置

找到本身MySQL安装目次下的my.ini设置文件

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

[code]log-bin=mysql-bin server-id=1 binlog_format=MIXED[/code]

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

[code]【注】 mysql-bin.00000X日记文件用于后面进行数据库增量还原操纵[/code]

1.3.检察是否已经开启二进制日记,实行如下命令检察log-bin是否开启,若状态为ON,则表示已正常开启

[code]show variables like 'log_bin';[/code]

二、创建测试数据库和表

2.1.创建测试数据库

使用Navicat大概其他数据库管理工具登录MySQL

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

可以在Navicat的左分区检察创建好的数据库也可以在MySQL安装目次下的data内里检察

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

[code]-- 切换数据库 use db_blbl[/code]

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

2.2.创建测试数据表

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

[code]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 '门生信息表';[/code]

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

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

实行完成后可以实行查询语句检察此时表中有两条数据

[code]-- 查询t_student select * from t_student[/code]

三、全量备份恢复数据库

3.1.全量备份数据库

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

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

[code]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"[/code]

说明:

  • host=127.0.0.1就是你要备份的数据库IP地点
  • port=3306数据库端标语
  • "C:\beifen.sql"将db_blbl数据库全量备份到C盘根目次下,取名叫beifen.sql
  • db_blbl t_student 就是你要备份的数据库名和表名,可以对db_blbl进行全库备份,也可以单独对t_student表进行全量备份

注意:

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

备份不必要的表操纵

[code]可以在上面代码表的位置加上--ignore-table=数据库名.表名[/code] [code]-- 实例 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"[/code]

备份完成后,会主动在对应目次下天生一个sql文件,可以前去对应目次检察全量备份的数据库

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

全量备份数据库脚本如下

[code]rem Auther By Anker rem date:202435 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******[/code]

3.2全量恢复数据库 

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

[code]-- 删除数据库db_blbl drop database db_blbl;[/code]

我实行的是drop命令,相当于将数据库数据和布局全部删除了,此时必要重新将数据库布局给创建出来,才能实行还原恢复操纵。以是,再次实行创建数据库命令

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

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

[code]-- 切换数据库 use db_blbl[/code]

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

[code]source C:\beifen.sql[/code]

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

[code]-- 查询t_student select * from t_student[/code]

四、增量备份恢复数据库

4.1.增量备份数据库

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

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

[code]-- 查询t_student select * from t_student[/code]

实行truncate t_student;命令,删除t_student门生表内里的数据

【注意】

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

[code]truncate t_student;[/code]

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

[code]-- 查询t_student select * from t_student[/code]

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

[code]rem Auther By Anker rem date:202435 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******[/code]

【注意】

要根据本身的实际设置来设置这个脚本文件

4.2.增量恢复数据库 

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

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

[code]-- 查询t_student select * from t_student[/code]

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

[code]show binlog events in 'mysql-bin.000001';[/code]

检察binlog内容纪录下的郭富城这条数据的开始位置和竣事位置

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

[code]mysqlbinlog --no-defaults mysql-bin.000001 --start-position=4157--stop-position=4034> C:\zengliang.sql[/code]

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

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

[code]source C://zengliang.sql;[/code]

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

[code]-- 查询t_student select * from t_student[/code]

 五、定时实行备份使命

5.1.使命筹划步伐 

在控制面板步伐搜刮列表中搜刮“筹划使命”,并打开

打开使命筹划步伐后,点击右侧的“创建根本使命”,并对筹划使命的名称和描述进行编写

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

根据本身必要,点击选择定时实行的周期,点击下一步

设置所必要实行的时间,点击下一步

选择启动步伐,并点击下一步

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

确认信息无误后点击完成

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

【最后】

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

到此这篇关于Windows环境MySQL全量备份+增量备份的实现的文章就先容到这了,更多相关MySQL全量备份+增量备份内容请搜刮脚本之家以前的文章或继续欣赏下面的相关文章希望各人以后多多支持脚本之家!


来源:https://www.jb51.net/database/325948wfi.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-7-1 21:45 , Processed in 0.042502 second(s), 18 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部