目录
一******、******环境准备
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]下面添加一行
sql
log-bin=mysql-bin
server-id=1
binlog_format=MIXED

添加完成之后重启MySQL服务,会在MySQL安装目录的data目录下生成一个mysql-bin.000001日志文件
【注】
mysql-bin.00000X日志文件用于后面进行数据库增量还原操作


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

二、创建测试数据库和表
2.1.创建测试数据库
使用Navicat或者其他数据库管理工具登录MySQL

sql
-- 创建数据库如果不存在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数据库后,要使用这个数据库,则执行命令
sql
-- 切换数据库
use db_blbl
或者在Navicat中的查询窗口运行旁边有一个下拉框也可以手动选择切换数据库

2.2.创建测试数据表
输入如下命令,创建一个t_student学生表
sql
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学生表中插入数据
sql
insert into t_student values(1,'张学友',1,36,'1234567891011');
insert into t_student values(2,'刘德华',1,39,'1234567891011');

执行完成后可以执行查询语句查看此时表中有两条数据
sql
-- 查询t_student
select * from t_student

三、全量备份恢复数据库
3.1.全量备份数据库
打开cmd窗口,cd进入到MySQL安装目录的bin目录下

在bin目录下执行如下命令,将刚才创建的db_blbl数据库进行全量备份操作
sql
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"
说明:
- 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安装目录在同一个盘符中,要不然会提示:拒绝访问

备份不需要的表操作
可以在上面代码表的位置加上--ignore-table=数据库名.表名
sql
-- 实例
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批处理脚本文件中,然后双击运行该批处理文件即可执行全量备份数据库
全量备份数据库脚本如下

bash
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******
3.2全量恢复数据库
先将事先创建好的db_blbl数据库删除
sql
-- 删除数据库db_blbl
drop database db_blbl;

我执行的是drop命令,相当于将数据库数据和结构全部删除了,此时需要重新将数据库结构给创建出来,才能执行还原恢复操作。所以,再次执行创建数据库命令
sql
-- 创建数据库如果不存在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
sql
-- 切换数据库
use db_blbl

执行以下命令恢复被删除的db_blbl数据库
sql
source C:\beifen.sql

查询t_student表,会发现之前的t_student表数据又回来了
sql
-- 查询t_student
select * from t_student

四、增量备份恢复数据库
4.1.增量备份数据库
往t_student学生表中再插入2条数据

查询命令查询t_student表,此时会发现又多了2条数据
sql
-- 查询t_student
select * from t_student

执行truncate t_student;命令,删除t_student学生表里面的数据
【注意】
如果执行drop t_student;命令的话,则整个t_student表结构和数据都被删除了,此时只有通过全量进行恢复了
sql
truncate t_student;

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

我们可以将备份操作封装到一个.bat批处理脚本文件中,然后双击运行该批处理文件即可执行增量备份数据库,
增量备份数据库脚本如下
bash
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******
【注意】
要根据自己的实际设置来配置这个脚本文件
4.2.增量恢复数据库
执行增量恢复之前,需要先执行一次全量恢复,将数据库数据还原到之前最新的某个时间段的数据,即执行命令:source C:\beifen.sql

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

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

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

在MySQL安装目录的data目录下执行如下命令,即可将data目录下需要备份的bin-log文件转换成sql文件
mysqlbinlog --no-defaults mysql-bin.000001 --start-position=4157--stop-position=4034> C:\zengliang.sql

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

执行如下命令,还原被删除的郭富城
sql
source C://zengliang.sql;

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

五、定时执行 备份 任务
******5.1.******任务计划程序
在控制面板程序搜索列表中搜索"计划任务",并打开

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

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

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

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

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

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

确认信息无误后点击完成

定时任务创建好后,可在任务列表中看到我们所创建的任务,可以通过右键该条任务进行删除等处理
【最后】
增量备份二进制日志建议每天刷新一次。这确保了数据库备份的频率足够高,以最小化数据丢失的风险。通过每天刷新增量备份,可以更有效地管理数据库的变化,并在需要时还原到最新的状态。