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

一、环境准备

1、 MySQL环境安装

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

(1)如果没有安装MySQL环境,可以参考博客:https://blog.csdn.net/weixin_43184774/article/details/106020174
(2)如果已成功安装MySQL环境,打开运行窗口,输入:services.msc打开Windows服务窗口,查看MySQL是否处于开启状态。如果没有开启,参考第(1)步的文档,将MySQL服务开启


 

2、添加log-bin日志配置

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

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

log-bin = mysql-bin 

(3)重启MySQL服务,会在MySQL安装目录的data目录下生成一个mysql-bin.000001日志文件

备注说明:mysql-bin.00000X日志文件用于后面进行数据库增量还原操作,此文件可以根据定时任务自动生成

(4)打开MySQL运行环境,执行如下命令查看log-bin是否开启,若状态为ON,则表示已正常开启

show variables like 'log_bin';

二、创建测试数据库和表

1、创建测试数据库

(1)登录MySQL环境,创建一个class数据库,命令如下:

create database class character set gbk;

(2)进入MySQL安装目录的data目录下,会看到成功创建的数据库文件

(3)创建好class数据库后,要使用这个数据库,则执行命令

use class


2、创建测试数据表
 

(1)输入如下命令,创建一个student学生表

CREATE TABLE student

(

  id INT unsigned not null auto_increment primary key,

  username VARCHAR(8) not null

);



(2)执行如下命令 命令查看新创建的student表,此时这个student是个空表,无任何数据

SELECT *FROM student;

(3)执行如下命令,往student学生表中插入数据

insert into student values(1,'张学友');
insert into student values(2,'刘德华');

(4)执行命令 命令插入数据后的student表,此时这个student学生表有两条数据

SELECT *FROM student;


 

三、全量备份恢复数据库

1、全量备份数据库

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

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

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:\beifen20201119.sql"

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

(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 > "D:\beifen20201124.sql

(4)备份完成后,会自动在对应目录下生成一个sql文件,进入该目录下,查看全量备份的数据库

(5)我们可以将上述步骤封装到一个.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 "D:\mysql_backup" md "D:\mysql_backup"

::执行备份操作
"D:\software\MySQL\mysql-8.0.22-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" >D:\software\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******

2、全量恢复数据库 

(1)执行如下命令,先将事先创建好的class数据库删除

drop database class;

(2)执行如下命令,命令查询student表,会发现找不到class数据库

SELECT *FROM student;

(3)因为上一步执行的是drop命令,相当于将数据库数据和结构全部删除了,此时需要重新将数据库结构给创建出来,才能执行还原恢复操作。所以,再次执行创建数据库命令, 然后再使用这个class数据库,即use class

create database class character set gbk; 
use class

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

source D:\beifen20201119.sql

(5)再次执行如下命令查询student表,会发现之前的student表数据又回来了 

SELECT *FROM student;

四、增量备份恢复数据库

1、增量备份数据库

(1)执行如下命令,往student学生表中再插入2条数据

insert into student values(3,'郭富城');
insert into student values(4,'黎明');

 

(2)执行查询命令查询student表,此时会发现又多了2条数据

SELECT *FROM student;

 

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

truncate student;

 

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

SELECT *FROM student;

(5)我们可以将上述步骤封装到一个.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 -p123456 flush-logs

@echo on
rem ******Backup MySQL End******

2、增量恢复数据库 

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

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

SELECT *FROM student;

 

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

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

 

(4)查看binlog内容记录下的黎明这条数据的开始位置和结束位置

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

mysqlbinlog --no-defaults mysql-bin.000001 --start-position=3898 --stop-position=4034 > d:\\zengliang.sql

(6)此时会发现D盘自动生成一个zengliang.sql文件

(7)执行如下命令,还原被删除的黎明这条数据

source d://zengliang.sql

(8)再次执行查询命令查询student表,会发现之前的student表数据黎明这条数据又回来了

SELECT *FROM student;

五、定时执行备份任务

(1)在开始程序搜索列表中搜索“任务计划程序”,并打开

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

(3)任意取一个名称,点击“下一步”

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

(5)设置所需要执行的时间,点击“下一步”

(6)选择“启动程序”,并点击“下一步”

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

(8)确认信息无误后点击“完成”

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

猜你喜欢

转载自blog.csdn.net/weixin_43184774/article/details/109830081
今日推荐