Windows环境:MySQL 全量、增量备份还原数据库数据

一、增量备份配置

1、在进行MySQL数据库备份和还原操作时,必须先提前安装好MySQL环境,且MySQL服务已成功开启。
(1)如果没有安装MySQL环境,可以参考:总汇
(2)如果已成功安装MySQL环境,打开运行窗口,输入:services.msc打开Windows服务窗口,查看MySQL是否处于开启状态。如果没有开启,参考第(1)步的文档,将MySQL服务开启
在这里插入图片描述
在这里插入图片描述

2、添加log-bin日志配置

(1)找到自己MySQL安装目录下的my.ini配置文件
在这里插入图片描述
(2)打开my.ini配置文件,并在my.ini文件中的[mysqld]下面添加一行,路径也可以直接写mysql-bin,会在MySQL安装目录的data目录下生成一个mysql-bin.000001日志文件,这里我换了个路径。
在这里插入图片描述
(3)重启MySQL服务,会生成一个mysql-bin.000001日志文件
备注说明:mysql-bin.00000X日志文件用于后面进行数据库增量还原操作,此文件可以根据定时任务自动生成。
在这里插入图片描述
在这里插入图片描述
(4)打开MySQL运行环境,执行如下命令查看log-bin是否开启,若状态为ON,则表示已正常开启show variables like 'log_bin';
在这里插入图片描述
二、全量备份配置

1、全量备份数据库
(1)打开cmd窗口,cd进入到MySQL安装目录的bin目录下(可以配置环境变量,比较方便,不用在cd。)
在这里插入图片描述
(2)在bin目录下执行如下命令,对数据库进行全量备份操作。

mysqldump --opt --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE -u root --password=123456 class student > "D:\beifen001.sql"

说明:
①–host=127.0.0.1就是你要备份的数据库IP地址
②–port=3306数据库端口号
③"C:\mysql-8.0.15-winx64\mysqlallbackup\beifen001.sql"将class数据库全量备份到C盘根目录下,取名叫beifen001.sql
④class student 就是你要备份的数据库名和表名,可以对class进行全库备份,也可以单独对student表进行全量备份
注意:备份的盘符一定要和MySQL安装目录在同一个盘符中,要不然会提示:拒绝访问

在这里插入图片描述
出现这种警告,可以在my.conf配置文件中添加。

[mysqldump]
user=root
password=你的密码

然后重启服务器,修改mysqldump语句,去掉-uroot -p参数
#mysqldump 数据库名 > 存放位置 备份文件名.sql

(3) 备份不需要的表操作:

mysqldump --opt --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE -u root --password=123456 dbname --ignore-table=dbname.table1 --ignore-table=dbname.table2 > ./db_files/test.sql`

实例:mysqldump --opt --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE -u root --password=123456 class --ignore-table=class.student > "C:\mysql-8.0.15-winx64\mysqlallbackup\beifen001.sql

在相应的路径中,可以找到自己配置的文件,备份完成。
在这里插入图片描述
(4)我们可以将上述步骤封装到一个.bat批处理脚本文件中。

rem Auther By Li
rem date:20210110
rem ******Backup MySQL Start******
@echo off
::设置时间变量
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"
 
::创建存储的文件夹
if not exist "C:\mysqlallbackup" md "C:\mysqlallbackup"
 
::执行备份操作
"C:\mysql-8.0.15-winx64\bin\mysqldump" --opt --user=root --password=123456 --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "class" >C:\mysqlallbackup\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******

(5)执行如下命令恢复被删除的数据库

source C:\mysqlallbackup\beifen_20210110.sql

三、增量备份恢复数据库

:truncate student命令,删除表里面的数据。
特别注意:如果执行drop student 命令的话,则整个表结构和数据都被删除了,此时只有通过全量进行恢复了。

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

(2)执行完全量备份,但是最近的一段时间没有恢复,则需要用到bin-log文件了,在mysql环境下运行如下命令:

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

在这里插入图片描述
查看binlog内容数据的开始位置和结束位置
在这里插入图片描述
在MySQL安装目录的data目录下执行如下命令,即可将data目录下需要备份的bin-log文件转换成sql文件

mysqlbinlog --no-defaults mysql-bin.000001 --start-position=124 --stop-position=3496 > C:\mysqlallbackup\li1.sql

无法读取LOG文件,加入--no-defaults参数就可以了,原因是mysqlbinlog这个工具无法识别binlog中的配置中的default-character-set=utf8这个指令,也可以在my.ini文件中写,MySQL服务正在运行,那这样的代价会比较大。
在这里插入图片描述
还原成功之后,可以在指定文件夹中看见。
在这里插入图片描述
进入mysql环境执行命令:source C:\mysqlallbackup.sql/li1.sql,还原完成。
在这里插入图片描述
增量备份数据库脚本如下,:要根据自己的实际设置来配置这个脚本文件

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

如果binlog非常多,不要轻易设置改参数,有可能导致io争用,这时候可以使用purge命令予以清除:

按顺序:purge binary logs to 'bin.000055';
按时间:purge binary logs before '2017-05-01 13:09:51';

三、定时执行备份任务
执行 运行中的 taskschd.msc
在这里插入图片描述
(1)、创建基本任务
在这里插入图片描述
(2)根据自己需要,点击选择定时执行的周期,点击“下一步”

在这里插入图片描述
(3)根据自己需求,点击下一步,创建定时任务。

在这里插入图片描述

  • 9
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值