需求目标
实现 sql server
数据库文件【本地&异地】备份,备份文件包括:
- 【.bak】数据库的备份文件,包含日志与库数据文件;
- 【.mdf】数据库数据文件,存放一个数据库的数据信息;
- 【.ldf 】数据库日志文件,存放对该数据库的更新操作(增、删、改)的文件;
当然以下讲述的方案也可以实现其他文件的备份,按自己的实际需求情况部署配置即可,这里以上述需求目标为例来讲解部署配置相关操作。
环境准备
- 服务器操作系统
Windows Server 2012R2
及以上版本; DB
数据库版本SQL Server 2012R2
及以上版本;- 数据库GUI管理工具
SQL Server Management Studio
(简称SSMS
);
以上这些基础环境的安装部署此处省略,不作为本篇文章的重点,以下部署操作基于上面这些基础环境已经安装好,接下来我们展开本次重点讲解的【FreeFileSync
文件同步】方案;
资源下载
- SQL Server en-us/zh-cn & (SSMS) en-us/zh-cn
- Windows Server en-us/zh-cn
- MSDN (itellyou.cn)
- NEXT, ITELLYOU
备份流程
清楚需求目标后,整理备份流程 12
个环节,如下图所示:
备份原理:
- 主(
Master
)服务器环境部署的主数据库先执行本地数据备份作业,然后把SQL Server
的【.bak】、【.ldf】和【.mdf】备份文件存储到IIS
搭建的FTP
服务器或者其他FTP/SFTP
服务器环境; - 从(
Slave
)服务器上面安装部署FreeFileSync
工具,访问主服务器的FTP/SFTP
服务器,并设置同步策略,形成作业计划并添加到Windows
任务计划程序周期执行;
注意事项:
1、MS-SQLServer
本地备份参考:
2、部署 FTP/SFTP
服务器,新增 windows
账户并设置用户组,添加账户密码访问;
3、查看主(Master
)服务器搭建的 FTP(端口21) 或 SFTP(端口22)
服务器端口监听,命令 =》【netstat -an
】;
4、验证从(Slave
)服务器与主服务器上 FTP 或 SFTP
服务器的网络访问性,命令 =》【telnet ip port
】;
5、防火墙开放 FTP 或 SFTP
对应的端口;
FreeFileSync 文件同步
FreeFileSync
首先是文件(本地或异地)同步功能,可以在指定的两个文件夹之间进行单向或双向的同步,点击程序窗口右上方的绿色齿轮图标可以设置相关参数;期间也可以自定义需要筛选的文件,有“包括”和“排除”两种过滤方式,按实际情况定义需要过滤的文件类型,此外就是比较不同文件夹中的文件是否相同的功能,不过这个功能比较适合同步之前使用,比较的结果会直接显示在列表中,方便查看,这样你就可以清楚的知道是否需要进行同步操作了,节省系统资源。
其次 FreeFileSync
还是开源、跨平台(Windows、macOS、Linux
)和 免费(也有付费版)的工具,GUI
界面管理操作可视化,方便快捷,以下我们使用免费版来实践操作(免费版的功能已经足够目标需求的实现了 😊)
Download FreeFileSync
选择对应系统环境的版本下载即可,此处我们操作部署的环境是 Windows
,所以选择 FreeFileSync for Windows
版本下载,安装后界面如下:
FreeFileSync + IIS/FTP
准备环境:
- 主(
Master
)服务器采用IIS
自带的FTP
服务器; - 从(
Slave
)服务器安装FreeFileSync for Windows
版本; - 从(
Slave
)服务器部署的FreeFileSync
添加Windows
任务计划程序;
IIS
配置操作:
- 自行参考相关文档,注意不要全选配置(
IIS 按需添加
)即可; - 在 IIS 中配置默认文档 - Internet Information Services | Microsoft Docs;
IIS
搭建 FTP
服务器:
- 客户端 Windows 下 IIS 搭建 FTP 服务器;
- 服务器端,使用【服务器管理器】安装;
FreeFileSync + SFTP
准备环境:
- 主(
Master
)服务器配置SFTP
服务器; - 从(
Slave
)服务器安装FreeFileSync for Windows
版本; - 从(
Slave
)服务器部署的FreeFileSync
添加Windows
任务计划程序;
参考文档:
- freeSSHd搭建 - 博客园 (cnblogs.com)
- WINDOWS下的SFTP服务器安装搭建(OpenSSH;Core FTP Mini-Sftp Server;Core FTP Server;Sysax Mul)
从(Slave)服务器新建文件夹
在从服务器创建如下文件夹(除开系统盘 C),比如在数据盘新建如下文件夹:
ffs_batch
存储FreeFileSync
的批量作业计划;History
存储Master
服务器的备份文件的历史版本;Logs
存储FreeFileSync
作业的日志记录信息;
以上文件夹的配置不是唯一的,可以根据自己实际情况和 FreeFileSync
作业计划配置。
从(Slave)服务器添加 Windows 任务计划
在 FreeFileSync
的 GUI
中添加 Master
部署的 FTP/SFTP
服务器地址,并设置访问账号密码信息,如下所示:
接下来在【同步设置】里面依次配置相应的选项 =>【比较】,【过滤器】和【同步】
Master
服务器环境安装 SQL Server
的实例路径如下:
其中 Backup
文件夹就可以存储 SQL Server
本地【.bak
】备份文件,而 DATA
文件夹里面存储 SQL Server
相关的【.mdf】+【.ldf】文件,把部署的 FTP & SFTP
服务器文件路径指向这俩文件夹的跟路径【D:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL
】,为了安全性考虑,可以在 Master
服务器新建用户组,并设置账号密码(注意密码复杂度设置)访问;
同步设置里面分别有:【比较】,【过滤器】和【同步】这三个选项,里面分别设置相应的模式即可,本人此处设置的模式依次如下图所示:
- 同步设置 => 比较,此处选择【文件和时间大小】,勾选【忽略错误】。
- 同步设置 => 过滤器,排除掉其他文件夹和子文件,过滤规则参考:[排除文件 - 自由文件同步 (freefilesync.org)]。(https://freefilesync.org/manual.php?topic=exclude-files)
- 同步设置 => 同步,此处选择单向的镜像同步策略,删除文件选择【历史版本】,并配置上面创建的文件夹【History】,同时勾选【覆盖默认日志路径】切换为上面创建的文件夹【Logs】,修改【命名规则】为时间戳[文件夹] 模式,并设置右侧的版本保留时间。
由于此处是在VM里面部署的,只有一个虚拟 C
盘,文件结构如下:
最后把配置好的 FreeFileSync
批处理文件【.ffs_batch
】保存到上图【ffs_batch
】文件夹中,统一存储,方便后面添加 Windows
的任务计划程序中,实现定时作业备份;
FreeFileSync
批处理文件添加 Windows
的任务计划程序参考文档
- 从服务器添加任务计划 FreeFileSync 添加 Windows 任务计划程序;
接下来我们看下测试 600M+
的文件数据同步情况,如下图所示:
方案总结
以上文件同步方案中,主要是应用 FTP & SFTP
实现文件的传输,其中 FreeFileSync
充当 FTP & SFTP
的客户端,从而间接的做到 DB
数据库备份的目标,优缺点对比如下:
【FreeFileSync + FTP】模式
- 优点:文件传输效率高;
- 缺点:安全性低,文件未加密传输;
【FreeFileSync + SFTP】模式
- 优点:安全性较高,文件加/解密传输;
- 缺点:文件传输效率较低;
FTP 与 SFTP 的异同 => FTP与SFTP两者有什么区别
两种模式的共同特点
- 基于
FTP & SFTP
协议的特性,可以做到跨机器,跨平台系统之间的访问; FreeFileSync
支持Windows,macOS,Linux
;
综上所述,FreeFileSync + FTP/SFTP
文件同步备份方案,可以实现多平台之间的文件备份目标,局域网环境为了追求传输效率,可以采用【FreeFileSync + FTP
】模式,公网环境建议【FreeFileSync + SFTP
】模式,确保相对的安全性,以上两种模式务必设置账户密码访问。