写点什么

数据库备份真的很重要!很重要!很重要!

用户头像
xiezhr
关注
发布于: 2021 年 03 月 20 日
数据库备份真的很重要!很重要!很重要!

1 序言

最近相信大家都被这则新闻刷屏了吧,欧洲云计算巨头 OVH 位于法国斯特拉斯堡的机房近日发生严重火灾,

大火彻底摧毁了五层高、占地 500 平方米的 SBG2 数据中心,引发火灾的原因尚不清楚,但当地报纸称 115 位消防员投入 6 个小时才将其扑灭。经过长达 6 个小时的持续燃烧,SBG2 内的数据恐怕已经彻底丢失。

大火对欧洲范围内的众多网站造成严重影响。据 Netcraft 称,目前跨 464000 个域的多达 360 万个网站皆已下线。


数据是无价的,所以生产环境中定时备份数据库显得尤为重要。备份能防止服务器故障、天灾人祸和人为误操作带来的数据丢失。

顺便趁此机会,把上上周的坑给填了,本来应该上周完成的。

上上周说了怎么在 Linux 环境下定时备份数据库,今天就整理下 windows server 环境下怎么备份数据库。

工作中虽然大部分生产环境首选服务器是 Linux,Linux 的性能毋庸置疑。但是也不排除会用的 windows server 作为服务器的情况

这里呢还是以这几年工作中接触到的几种常见数据库为例吧。

  • Oracle

  • mysql

  • postgresql

  • mongoDB

2 任务计划相关知识点介绍

2.1 任务计划 是什么?

  • 任务计划是 Windows 操作系统非常强大的一个功能,利用任务计划,我们可以将任何脚本、程序或文档安排在每天、每周、每个月甚至某个特定的时间运行。

  • windows 本身也有一些定时任务

  • 比如通过任务计划可以让 QQ 在每周五晚上 7 点准时运行。注意,只有在开机状态任务计划才能起作用。

2.2 批处理文件

2.2.1 批处理文件简介

  • 应用于 DOS 和 Windows 系统中的一种简化的脚本语言。

  • 批处理文件的扩展名为.bat 或.cmd

  • 类似于 Unix 中的 Shell 脚本。简单的可以使是逐行书写在命令行中的各种命令。更复杂的情况,需要使用 if,for,goto 等命令控制程序的运行过程

  • 分为 DOS 批处理和 PS 批处理两类。

  • 可以用记事本直接编辑或用 DOS 命令创建或各种编辑器打开

我们可以用一下命令实现 helloworld

@echo offecho hello worldpause & exit
复制代码

2.2.2 批处理常用命令介绍

本来在这里加了一堆批处理常用命令,发现篇幅太长了。那就后面单独弄一篇总结 Windows 批处理常用命令吧(又给自己挖了一个坑)。

3 各个数据库备份脚本

将需要备份的脚本添加到 backup.bat 中

3.1 Oracle 数据库

@echo offecho 当前的盘符及路径:%~dp0echo 当前的盘符及路径的短文件名格式:%~sdp0
set filename=%date:~0,4%%date:~5,2%%date:~8,2%set expcmd=scott/tiger file=%~dp0\%filename%.dmp owner=scott log=%~dp0\%filename%.log buffer=9999999echo 导出 >>exe%filename%.log 2>&1call exp %expcmd%echo 压缩 >>exe%filename%.log 2>&17zr a %filename%.dmp.7z %filename%.dmp %filename%.logecho 删除 >>exe%filename%.log 2>&1del %filename%.dmp
复制代码

3.2 Mysql 数据库

@echo offset "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"D:\MySQL\bin\mysqldump  -u root -p123456 --databases db1 > D:\db_backup\db1_%Ymd%.sql@echo on

3.3 postgresql 数据库


@ECHO OFF@setlocal enableextensions@cd /d "%~dp0"SET PGPATH=D:\PostgreSQL\9.3\bin\pg_dumpSET SVPATH=E:\SET PRJDB=db1SET DBUSR=postgresSET DBROLE=postgresFOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T'DO SET d=%%i-%%j-%%kFOR /F "TOKENS=1,2,3 DELIMS=: " %%i IN ('TIME /T'DO SET t=%%i%%j%%kSET DBDUMP=%PRJDB%_%d%_%t%.backup@ECHO OFF%PGPATH% -h localhost -p 5432 -U %DBUSR% --role %DBROLE% -w -F c -b -v -f %SVPATH%%DBDUMP% %PRJDB% echo Backup Taken Complete %SVPATH%%DBDUMP%pause--SET SVPATH=E:\ 表示文件存放路径--SET PRJDB=BaoShan 表示要备份的数据库名称--%PGPATH% -h localhost -p 5432 -U %DBUSR% --role %DBROLE% -w -F c -b -v -f %SVPATH%%DBDUMP% %PRJDB% 表示本机执行

3.4 mongoDB 数据库

@echo offset SrcDir=E:\mongodb4.1.7\backupforfiles /p %SrcDir% /s /m *.* /d -7 /c "cmd del /c /f /q /a @path"
set path=%path%;E:\mongodb4.1.7\binset Ymd=%date:~,4%%date:~5,2%%date:~8,2%mongoexport -d dbcloudresource -c sys_resource -u cloud_resource -p cloud_resource --type=JSON -o E:\mongodb4.1.7\backup\backup_%Ymd%.js
set RAR_CMD="C:\Program Files\WinRAR\Rar.exe"%RAR_CMD% a -df "E:\mongodb4.1.7\backup\backup_%Ymd%.rar" "E:\mongodb4.1.7\backup\backup_%Ymd%.js"

复制代码

4 添加任务计划定时备份数据库

① 首先打开系统的管理工具,选择《任务计划程序》

② 点击创建基本任务,输入这个定时任务的名称,比如我这边就是做一个 db1 数据库的备份

③ 点击下一步选择定时任务执行频率

④ 点击下一步选择任务开始时间 今晚 0 点 10 分开始

⑤ 选择执行的操作,此处选择上面已经添加好的 backup.bat 批处理脚本,因此选择《启动程序》




⑥ 完成



发布于: 2021 年 03 月 20 日阅读数: 11
用户头像

xiezhr

关注

把分享变成一种习惯,再小的帆也能远航 2021.03.01 加入

还未添加个人简介

评论

发布
暂无评论
数据库备份真的很重要!很重要!很重要!