一、增量备份配置
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)根据自己需求,点击下一步,创建定时任务。
转载:https://blog.csdn.net/qq_40742949/article/details/112425104