百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

windows下mysql自动备份及备份同步至NAS解决方案

bigegpt 2024-10-24 09:00 17 浏览

一、问题描述

某项目客户要求把阿里云上一台ECS非核心的mysql库做备份,具体要求如下:

1、每天1:00对mysql数据库进行完全备份。

2、备份文件存放到阿里云的NAS平台上。

3、保留5天的备份副本。

TPS:

  • 运行mysql的ECS的操作系统为windows 2012 64位
  • mysql的版本为MariaDB 10.2
  • 本地备份路径在C:\mysql_backup(因为只有一个系统盘,没得选择)

看似很简单的问题,中间在实施过程中,还是遇到一些坑,特地作一下记录,以备后续参考。

二、实施过程

2.1 编写mysql的备份脚本

1、mysql的自动备份脚本

@echo off
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
cd C:\Program Files\MariaDB 10.2\bin&&mysqldump -hlocalhost  -uroot -p***** --single-transaction --opt --events  --triggers  --routines -B itsm > C:\itop_mysql_backup\itsm_%Ymd%.sql

forfiles /p "C:\itop_mysql_backup" /s /m *.sql /d -5 /c "cmd /c del @path"

mysqldump参数说明:

  • --single-transaction:该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储引擎,仅InnoDB。本选项和--lock-tables 选项是互斥的,因为LOCK TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用--quick 选项。
  • --opt: 等同于--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys 该选项默认开启, 可以用--skip-opt禁用.
  • --event: 导出事件
  • --triggers: 导出触发器
  • --routines:导出存储过程以及自定义函数

forfiles参数说明:

  • /p Path指定 Path,表明要从哪里开始搜索。默认的文件夹是当前工作目录,该目录通过键入句号 (.) 指定。注:绝对路径应该包含在双引号中,且路径应该由反斜杠分割:example:"D:\HOME\Desktop\62backup"
  • /m SearchMask

按照 SearchMask 搜索文件。默认的 SearchMask*.*

  • /s

指示 forfiles 在子目录中搜索。

  • /c Command

在每个文件上运行指定的 Command。带有空格的命令字符串必须用引号括起来。默认的 Command"cmd /c echo @file"

  • /d[{+ | -}] [{MM/*DD/YYYY* | DD}]

选择日期大于或等于 (+)(或者小于或等于 (-))指定日期的文件,其中 MM/*DD/YYYY* 是指定的日期,DD 是当前日期减去 DD 天。如果未指定 +-,则使用 +DD 的有效范围是 0 - 32768。

  • /?

在命令提示符下显示帮助。

2、设置脚本的静默执行

mysql_bak.vbs,内容如下:

Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c mysql_bak.bat",vbhide

参数说明:

  • mysql_bak.bat:mysql备份脚本文件名。

2.2 设置定时计划

1、任务计划--》创建基本任务

2、设置触发器

3、设置操作

2.3 同步备份文件至NAS

1、安装SyncBackPro软件

2、创建任务

1)点击添加按钮,创建任务

2)选择任务的类型

TPS:

  • 备份:不会删除目标端的文件,如果此文件在源端不存在的话。
  • 同步:是双向同步,最终两边的文件会达到一致。
  • 镜像:以源为标准,同步到目标源,如果目标端的文件在源中不存在,则目标端的文件会被删除掉。

3)选择同步文件的位置

4)选择要同步的源文件夹和目标文件夹

3、创建定时计划

1)创建计划任务

2)设置计划任务

三、注意事项

1、设置windows计划时,操作阶段,必须在“起始于”设置脚本的路径,否则bat不能成功执行。具体如下图所示:


附Windows系统tracert命令详解

1:作用

tracert 是一个简单的网络诊断工具,可以列出分组经过的路由节点,以及它在IP 网络中每一跳的延迟。(这里的延迟是指:分组从信息源发送到目的地所需的时间,延迟也分为许多的种类——传播延迟、传输延迟、处理延迟、排队延迟等,是大多数网站性能的瓶颈之一)

2:用法(可参看简单实用的Windows命令(一))

tracert命令的格式为:tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name。

①、-d

表示不将地址解析成主机名。

②、-h maximum_hops

表示搜索目标的最大跃点数。

③、-j host-list

表示与主机列表一起的松散源路由(仅适用于IPv4)。

④、-w timeout

表示等待每个回复的超时间(以毫秒为单位)。

⑤、-R

表示跟踪往返行程路径(仅适用于IPv6)。

⑥、-S srcaddr

表示要使用的源地址(仅适用于IPv6)。

⑦、-4和-6

表示强制使用IPv4或者IPv6。

⑧、target_name

表示目标主机的名称或者IP地址。

3:实例

命令执行结果的说明:

3-1:tracert命令用于确定 IP数据包访问目标所采取的路径,显示从本地到目标网站所在网络服务器的一系列网络节点的访问速度,最多支持显示30个网络节点。

3-2:最左侧的,1,2,3,4~8,表明在我使用的宽带(北京宽带)上,经过7(不算自己本地的)个路由节点,可以到达百度的服务;如果是电信可能有不同;其他的IP,也有可能不同;各位可以自行测试一下;

3-3:中间的三列,单位是ms,表示我们连接到每个路由节点的速度,返回速度和多次链接反馈的平均值;

3-4:后面的IP,就是每个路由节点对应的IP,每个IP代表什么,各位可以通过 4(推荐的站长工具)去了解

3-5:如果返回消息是超时,则表示这个路由节点和当前我们使用的宽带,是无法联通的,至于原因,就有很多种了,比如:特意在路由上做了过滤限制,或者确实是路由的问题等,需要具体问题具体分析;

3-6:如果在测试的时候,大量的都是*和返回超时,则就说明这个IP,在各个路由节点都有问题

3-7:一般10个节点以内可以完成跟踪的网站,访问速度都是不错的;10到15个节点之内才完成跟踪的网站,访问速度则比较差,如果超过30个节点都没有完成跟踪的网站,则可以认为目标网站是无法访问的。

3-8:在Unix平台上,traceroute 命令就相当于windows平台上的 tracert 命令

4:推荐一个查询IP或者域名信息的工具(http://tool.chinaz.com)

相关推荐

Go语言泛型-泛型约束与实践(go1.7泛型)

来源:械说在Go语言中,Go泛型-泛型约束与实践部分主要探讨如何定义和使用泛型约束(Constraints),以及如何在实际开发中利用泛型进行更灵活的编程。以下是详细内容:一、什么是泛型约束?**泛型...

golang总结(golang实战教程)

基础部分Go语言有哪些优势?1简单易学:语法简洁,减少了代码的冗余。高效并发:内置强大的goroutine和channel,使并发编程更加高效且易于管理。内存管理:拥有自动垃圾回收机制,减少内...

Go 官宣:新版 Protobuf API(go pro版本)

原文作者:JoeTsai,DamienNeil和HerbieOng原文链接:https://blog.golang.org/a-new-go-api-for-protocol-buffer...

Golang开发的一些注意事项(一)(golang入门项目)

1.channel关闭后读的问题当channel关闭之后再去读取它,虽然不会引发panic,但会直接得到零值,而且ok的值为false。packagemainimport"...

golang 托盘菜单应用及打开系统默认浏览器

之前看到一个应用,用go语言编写,说是某某程序的windows图形化客户端,体验一下发现只是一个托盘,然后托盘菜单的控制面板功能直接打开本地浏览器访问程序启动的webserver网页完成gui相关功...

golang标准库每日一库之 io/ioutil

一、核心函数概览函数作用描述替代方案(Go1.16+)ioutil.ReadFile(filename)一次性读取整个文件内容(返回[]byte)os.ReadFileioutil.WriteFi...

文件类型更改器——GoLang 中的 CLI 工具

我是如何为一项琐碎的工作任务创建一个简单的工具的,你也可以上周我开始玩GoLang,它是一种由Google制作的类C编译语言,非常轻量和快速,事实上它经常在Techempower的基准测...

Go (Golang) 中的 Channels 简介(golang channel长度和容量)

这篇文章重点介绍Channels(通道)在Go中的工作方式,以及如何在代码中使用它们。在Go中,Channels是一种编程结构,它允许我们在代码的不同部分之间移动数据,通常来自不同的goro...

Golang引入泛型:Go将Interface「」替换为“Any”

现在Go将拥有泛型:Go将Interface{}替换为“Any”,这是一个类型别名:typeany=interface{}这会引入了泛型作好准备,实际上,带有泛型的Go1.18Beta...

一文带你看懂Golang最新特性(golang2.0特性)

作者:腾讯PCG代码委员会经过十余年的迭代,Go语言逐渐成为云计算时代主流的编程语言。下到云计算基础设施,上到微服务,越来越多的流行产品使用Go语言编写。可见其影响力已经非常强大。一、Go语言发展历史...

Go 每日一库之 java 转 go 遇到 Apollo?让 agollo 来平滑迁移

以下文章来源于GoOfficialBlog,作者GoOfficialBlogIntroductionagollo是Apollo的Golang客户端Apollo(阿波罗)是携程框架部门研...

Golang使用grpc详解(golang gcc)

gRPC是Google开源的一种高性能、跨语言的远程过程调用(RPC)框架,它使用ProtocolBuffers作为序列化工具,支持多种编程语言,如C++,Java,Python,Go等。gR...

Etcd服务注册与发现封装实现--golang

服务注册register.gopackageregisterimport("fmt""time"etcd3"github.com/cor...

Golang:将日志以Json格式输出到Kafka

在上一篇文章中我实现了一个支持Debug、Info、Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手。有兴趣的可以通过这个链接前往:https://github.com/...

如何从 PHP 过渡到 Golang?(php转golang)

我是PHP开发者,转Go两个月了吧,记录一下使用Golang怎么一步步开发新项目。本着有坑填坑,有错改错的宗旨,从零开始,开始学习。因为我司没有专门的Golang大牛,所以我也只能一步步自己去...