Windows下mysql数据库备份策略

Windows下mysql的增量备份和全量备份,并利用schtasks设置定时任务执行bat脚本。

一、备份要求

序号

备份类型

备份频次

备份时间

1

增量备份

每周一-每周六各一次

18:00:00

2

全量备份

每周日一次

18:00:00

二、备份方法

2.1增量备份

2.1.1准备工作

首先在进行增量备份之前需要查看一下配置文件,查看log_bin是否开启 。首先,进入到 mysql 命令行,输入如下命令:show variables like '%log_bin%';

如下命令所示,则为未开启

修改配置文件my.ini

修改之后,重启 mysql 服务,输入:show variables like '%log_bin%';

如下证明已开启

2.1.2增量备份

查看当前使用的 logbin.000*** 日志文件,输入:show master status;

状态如下:

当前正在记录日志的文件名为 logbin.000011 。

增量备份的关键命令:通过执行如下命令,使用新的日志文件:mysqladmin -uroot -123456 flush-logs

如此,已经完成增量备份,下面用脚本实现。

2.1.3创建脚本

  • Incremental_backup.bat

@echo off

::服务器数据库 用户名 密码

set suser=root

set suserpwd=yourpassword(需要根据实际数据库登录密码填写)

::mysql 二进制日志文件存放的位置

set filePath=E:\mysql-5.7.32-winx64\backup

::当前系统日期 20210804

set now=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%

::备份文件夹

set backup=E:\mysql-5.7.32-winx64\backup

if not exist %backup% md %backup%

::以日期命名的文件夹

set nowfile=%backup%\%now%-Increase

if not exist %nowfile% md %nowfile%

::前一次日志文件名

set logbin=%nowfile%\logbin.txt

mysql -u%suser% -p%suserpwd% -e "show master status"|findstr -B logbin.>%logbin%

::处理日志文件名  复制到目标文件夹

FOR /F "delims= " %%i in (%logbin%) do  copy %filePath%\%%i %nowfile%

::刷新日志产生新的日志

mysqladmin -u%suser% -p%suserpwd% flush-logs

exit

2.1.4执行schtasks定时计划

1.创建定时计划,在cmd中执行以下命令:

schtasks /create /tn "Incremental Backup" /tr "D:\code\Incremental_backup.bat" /sc WEEKLY /mo 1 /d MON,TUE,WED,THU,FRI,SAT /st 18:00:00 /ed 2100/12/31

2.查看已创建的定时计划,在cmd中执行以下命令查询:

schtasks /query

2.2全量备份

2.2.1创建脚本

::******Backup MySQL Start******

@echo off

::设置时间变量

set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"

::本机安装的mysql的bin目录路径

set mysqlBinPath=E:\mysql-5.7.32-winx64\bin\

::备份文件存储的目标路径

set backupPath=E:\mysql-5.7.32-winx64\backup

::备份文件的名字前半部分-后半部分使用的是上面的时间参数

set backupFileName=Full_backup_

::备份文件的保存天数1

set days=1

::要备份的数据库服务器的ip

set host=127.0.0.1

::要备份的数据库服务器的端口

set port=3306

::要备份的数据库登录名

set user=root

::要备份的数据库登录密码

set password=yourpassword(需要根据实际数据库登录密码填写)

::要备份的数据库名

set dbName=test(需要根据实际数据库名填写)

::默认的字符集

set charSet=utf8

::创建存储的文件夹

if not exist %backupPath% md %backupPath%

::根据上面设置的days参数删除以前的备份数据

forfiles /p "%backupPath%" /m %backupFileName%*.sql /d -%days% /c "cmd /c del @path"

::进入mysql安装目录的bin目录下

cd %mysqlBinPath%

::执行备份操作

mysqldump --opt --single-transaction=TRUE --user=%user% --password=%password% --host=%host% --protocol=tcp --port=%port% --default-character-set=%charSet% --routines --events %dbName% > %backupPath%\%backupFileName%%Ymd%.sql

echo %backupPath%\%backupFileName%%Ymd%.sql

@echo on

::******Backup MySQL End******

2.2.2执行schtasks定时计划

 1.创建定时计划,在cmd中执行以下命令:

schtasks /create /tn "Full Backup" /tr "D:\code\Full_backup.bat" /sc WEEKLY /mo 1 /d SUN /st 18:00:00 /ed 2100/12/31

 2.查看已创建的定时计划,在cmd中执行以下命令查询:

schtasks /query

三、备份文件查看

1. 确定index文件和日志文件。index文件打开可以看到日志文件的列表;000001文件才是增量日志,是二进制的,直接打开无法查看,需要用mysqlbinlog命令打开,打开后可以看到日志信息

2. 执行命令 mysqlbinlog D:\mysql-5.7.32-winx64\backup\logbin.000001

四、备份文件查看

4.1按时间点恢复

  1. 确定需要恢复的时间点,如2022-04-22 16:32:59
  2. 执行按时间点恢复命令: mysqlbinlog --no-defaults --stop-datetime="2022-04-22 16:32:59" D:\mysql-5.7.32-winx64\backup\logbin.000001|mysql -uroot -proot
  3. 查看数据库中数据是否已经被恢复
  4. 补充指定恢复的参数

--start-datetime="2020-04-30 15:29:05"(从这个时间点开始,包含这个时间点)

--stop-datetime="2020-04-30 15:29:05"(这个时间点之前,不包含这个时间点)

--start-position="591" (从这个点开始,包含这个位置点)

--stop-position="591" (这个位置点之前,不包含这个位置点)

4.2按位置点恢复

1.确定需要恢复的位置点(位置指的是增量日志文件中 at 后面的数字)

2.执行按位置点恢复的命令行:mysqlbinlog --no-defaults --stop-position="959" D:\mysql-5.7.32-winx64\backup\logbin.000001|mysql -uroot -proot

3.查看数据库中数据是否已经被恢复

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/59813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构-并查集专题(1)

一、前言 因为要开始准备年底的校赛和明年年初的ACM、蓝桥杯、天梯赛,于是开始按专题梳理一下对应的知识点,先从简单入门又值得记录的内容开始,并查集首当其冲。 二、我的模板 虽然说是借用了jiangly鸽鸽的板子,但是自己也小做…

算法每日练 -- 双指针篇(持续更新中)

介绍: 常见的双指针有两种形式,一种是对撞指针(左右指针),一种是快慢指针(前后指针)。需要注意这里的双指针不是 int* 之类的类型指针,而是使用数组下标模拟地址来进行遍历的方式。 …

qt QListView详解

1、概述 QListView 是 Qt 框架中的一个视图类,用于展示模型中的数据。它基于 QAbstractItemView,支持多种视图模式,如列表视图(List View)、图标视图(Icon View)等。QListView 是模型/视图框架…

数据集市是什么?有什么优势?

一、数据集市是什么? 1、数据集市的产生背景: 因为数据仓库的工作范围和成本比较巨大,技术部门必须对所有的以全企业的眼光对待任何一次决策分析,这样就变成了成本高、耗时高的大项目,而且这种集中式的数据处理方式往往…

apk因检测是否使用代理无法抓包绕过方式

最近学习了如何在模拟器上抓取APP的包,APP防恶意行为的措施可分为三类: (1)反模拟器调试 (2)反代理 (3)反证书检验 第一种情况: 有的app检验是否使用系统代理&#xff0c…

TDengine 签约蘑菇物联,改造通用设备工业互联网平台

在当前工业互联网迅猛发展的背景下,企业面临着日益增长的数据处理需求和智能化转型的挑战。通用工业设备的高能耗问题愈发突出,尤其是由这些设备组成的公辅能源车间,亟需更高效的解决方案来提升设备运行效率,降低能源消耗。为此&a…

Python怎么查看编码

在读取中文的情况下,通常会遇到一些编码的问题,但是首先需要了解目前的编码方式是什么,然后再用decode或者encode去编码和解码,下面是使用chardet库来查看编码方式的。 import chardet path "E:/t.csv" #path "E…

sqoop Oracle 导入到hive 日期时间消失

sqoop脚本: sqoop import -D mapred.job.queue.namehighway \ -D mapreduce.map.memory.mb4096 \ -D mapreduce.map.java.opts-Xmx3072m \ --connect "jdbc:oracle:thin://localhost:61521/LZY2" \ --username LZSHARE \ --password 123456 \ --query &q…

[产品管理-59]:项目组合中产品或项目的类型分类

目录 一、概述 1、突破型项目:全新产品,颠覆性产品 2、平台型项目:平台产品 3、衍生型项目:衍生出来的新产品,不同于现有产品,但与现有产品有关联 4、支持性项目:现有产品的改进&#xff0…

第2章立项-2.4如何进行立项评审?

2.4 如何进行立项评审? 2.4 如何进行立项评审?2.4.1 立项沟通不充分会带来的问题2.4.2 让大家都参与到立项评审中发表意见 2.4 如何进行立项评审? 研发项目不仅仅和研发相关,而且跟采购、工艺、制造、销售、市场都相关。如果相关…

基于vue3实现的聊天机器人前端(附代码)

<template><div class"container"><!-- 页面头部 --><header><h1>跟它说说话吧&#xff01;</h1><p>一个活泼的伙伴&#xff0c;为你提供情感支持&#xff01;</p></header><!-- 聊天容器 --><div c…

【安卓13 源码】Input子系统(4)- InputReader 数据处理

1. 多指触控协议 多指触控协议有 2 种&#xff1a; > A类&#xff1a; 处理无关联的接触&#xff1a; 用于直接发送原始数据&#xff1b; > B类&#xff1a; 处理跟踪识别类的接触&#xff1a; 通过事件slot发送相关联的独立接触更新。 B协议可以使用一个ID来标识触点&…

Windows Server 怎么关闭IE增强安全配置(关闭IE弹窗)

首先第一步打开IE浏览器&#xff0c;根据下图所示&#xff0c;访问网页时会弹出警告窗口。 打开【控制面板】图标。查看方式改为小图标&#xff0c;打开【管理工具】 第五步进入【管理工具】页面后&#xff0c;找到并双击【服务器管理器】选项。 第六步在弹出的窗口中&#…

鸿萌数据迁移服务: 企业服务器整机在线热迁移, 实现不停机业务转移

天津鸿萌科贸发展有限公司从事数据安全服务二十余年&#xff0c;致力于为各领域客户提供专业的数据存储、数据恢复、数据备份、数据迁移等解决方案与服务&#xff0c;并针对企业面临的数据安全风险&#xff0c;提供专业的相关数据安全培训。 鸿萌数据迁移业务为众多企业顺利高效…

ChatGPT 新体验:AI 搜索功能与订阅支付指南

就在凌晨&#xff0c;在 ChatGPT 迎来两周岁生日之际&#xff0c;OpenAI 重磅发布了 ChatGPT 的全新人工智能搜索体验。 期待已久的时刻终于到来&#xff0c; ChatGPT 正式转型成为一款革命性的 AI 搜索引擎&#xff01; 先来看看 ChatGPT 搜索&#xff1a;这次不是简单的加个…

[JAVAEE] 面试题(四) - 多线程下使用ArrayList涉及到的线程安全问题及解决

目录 一. 多线程下使用ArrayList 1.1. 自行判断加锁 1.2 使用Collections.synchronizedList()套壳加锁 1.3 CopyOnWriteArrayList类 二. 总结 一. 多线程下使用ArrayList 多线程下使用ArrayList会涉及到线程安全问题, 例如: public static void main(String[] args) thro…

canal1.1.7使用canal-adapter进行mysql同步数据

重要的事情说前面&#xff0c;canal1.1.8需要jdk11以上&#xff0c;大家自行选择&#xff0c;我这由于项目原因只能使用1.1.7兼容版的 文章参考地址&#xff1a; canal 使用详解_canal使用-CSDN博客 使用canal.deployer-1.1.7和canal.adapter-1.1.7实现mysql数据同步_mysql更…

DevExpress中文教程 - 如何使用AI模型检查HTML编辑中的语法?

DevExpress .NET MAUI多平台应用UI组件库提供了用于Android和iOS移动开发的高性能UI组件&#xff0c;该组件库包括数据网格、图表、调度程序、数据编辑器、CollectionView和选项卡组件等。 目前许多开发人员正在寻找多种方法将AI添加到解决方案中&#xff08;这通常比想象的要…

【推荐】iptables学习宝典

链接&#xff1a; IPtables-朱双印博客 学习iptables的抗鼎之作&#xff0c;推荐。

二维数组和数组指针数组的关系

在深入理解指针end中&#xff0c;我在最后写了一长段代码 #include<stdio.h> void test1(int arr[][5], int x, int y) //void test1(int(*p)[5], int x, int y) {for (int i 0; i < x; i){for (int j 0; j < y; j){//printf("%d ", *(*(p i) j));p…