需求目标
实现 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
备份流程
查看原图:备份流程
备份原理:
- 主服务器环境部署的主数据库先执行本地数据备份作业,然后把 SQL Server 的【.bak】备份文件存储到 IIS 搭建的 FTP 服务器或者其他FTP/SFTP服务器环境;
- 从服务器上面安装部署 FreeFileSync 工具,访问主服务器的FTP服务器,设置同步策略,形成作业计划并添加到 Windows 任务计划程序周期执行;
注意事项:
- sql server 本地备份参考
- IIS 部署 FTP 服务器,新增 windows 账户并设置用户组,添加账户密码访问;
- 部署 SFTP 服务器,新增 windows 账户并设置用户组,添加账户密码访问;
- 查看主(master)服务器搭建的 FTP(端口21) 或 SFTP(端口22) 服务器端口监听,命令 =》【netstat -an】;
- 验证从(Slave)服务器与主服务器上 FTP 或 SFTP 服务器的网络访问性,工具命令 =》【telnet ip port】;
FreeFileSync 文件同步
Download FreeFileSync
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1hlQTitS-1639629673616)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211216102051418.png)]
Download FreeFileSync 11.15 Windows | |
---|---|
Download FreeFileSync 11.15 macOS | |
Download FreeFileSync 11.15 Linux | |
Source | Download FreeFileSync 11.15 Source |
Subscribe for FreeFileSync update notifications |
选择对应系统环境的版本下载即可,此处我们操作部署的环境是 Windows,所以选择 FreeFileSync for Windows 版本下载,安装后界面如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aqxh3cl8-1639629673618)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211216103919320.png)]
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 任务计划程序;
SFTP 工具选型:
- freeSSHd and freeFTPd - open source SSH and SFTP servers for Windows;
- CoreFTPServer & mini-sftp-server (coreftp.com)
- SFTP Server - Secure FTP server software for Windows with SFTP, FTPS, and HTTPS support (coreftp.com)
参考文档:
- freeSSHd搭建 - 博客园 (cnblogs.com)
- 迷你FTP服务器(Core FTP mini-sftp-server)
- WINDOWS下的SFTP服务器安装搭建(OpenSSH;Core FTP Mini-Sftp Server;Core FTP Server;Sysax Mul)
从(Slave)服务器新建文件夹
在从服务器创建如下文件夹(除开系统盘C),比如在数据盘新建如下文件夹:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X9ryEHRj-1639629673618)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211216110342039.png)]
- 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)
- 同步设置 => 同步
由于此处是在VM里面部署的,只有一个虚拟C盘,文件结构如下:
把配置好的 FreeFileSync 批处理文件【.ffs_batch】保存到上图 ffs_batch 文件夹中,统一存储,方便后面添加 Windows 的任务计划程序中,实现定时作业备份;
FreeFileSync 批处理文件添加 Windows 的任务计划程序参考文档
- 从服务器添加任务计划 FreeFileSync 添加 Windows 任务计划程序;
方案总结
以上文件同步方案中,主要是应用 FTP & SFTP 实现文件的传输,其中 FreeFileSync 充当 FTP & SFTP 的客户端,从而间接的做到 DB 数据库备份的目标,优缺点对比如下:
-
【FreeFileSync + FTP】模式
- 优点:文件传输效率高;
- 缺点:安全性低,文件未加密传输;
-
【FreeFileSync + SFTP】模式
- 优点:安全性较高,文件加密传输;
- 缺点:文件传输效率稍低;
-
两种模式的共同特点
- 基于 FTP & SFTP 协议的特性,可以做到跨机器,跨平台系统访问;
- FreeFileSync 支持 Windows,macOS,Linux;
综上所述,FreeFileSync + FTP/SFTP 文件同步备份方案,可以实现多平台之间的文件备份目标,局域网环境为了追求传输效率,可以采用【FreeFileSync + FTP】模式,公网环境建议【FreeFileSync + SFTP】模式,确保相对的安全性,以上两种模式务必设置账户密码访问。