SQL Server也可以异地恋:借助rsync轻松实现异地日志传送

SQL Server也可以异地恋:借助rsync轻松实现异地日志传送

微软有一个爱好叫绑定。我最痛恨的一个绑定是IIS与Windows的绑定——升级IIS竟然要升级操作系统,服务器不是PC,系统不是想重装就可以重装。

在使用SQL Server日志传送进行异地备份时,又被微软的绑定策略坑了一次。日志传送只支持Windows文件共享这1种也仅此1种方式,而用于异地备份的服务器与主服务器不在同一个网络中,根本无法使用Windows文件共享。下图就是微软绑定策略的证据:

上图中的共享路径 \\dbserver\LogBackup 是在日志传送主服务器上设置的,备份服务器进行日志传送时,需要访问这个路径,复制其中的日志备份文件并进行恢复。

而异地备份时,备份服务器与主服务器不在同一个网络,无法通过这个共享路径访问到要传送的日志文件。

怎么解决这个问题呢?

如果用Windows架构VPN,你就上了微软绑定策略的当。

我们没上这个当,用移花接木之法解决这个问题。

备份服务器不是需要访问 \\dbserver\LogBackup 吗?那我们就在与备份服务器同一个网络的另外一台服务器(中间服务器)上共享出一个这样的路径,对于备份服务器来说,只要能访问 \\dbserver\LogBackup 就行,才不管是谁共享的呢。

共享路径的问题解决了,但是备份服务器访问共享路径的真正目的是复制日志备份文件。所以,接下来的问题是如何将远程主服务器上的日志备份文件同步到这台中间服务器上?

你可能想到的是FTP,我们开始也是这么想的。但是FTP是上传/下载的利器,但不是同步的利器。我们这里的场景是中间服务器要与远程主服务器上的日志备份文件进行同步,比如远程主服务器会自动删除超过多少天的日志备份文件,主服务器上删除了,中间服务器也要自动删除。

后来想到了我们在用的文件同步利器——rsync(使用方法可以参考之前的一篇博文:Windows平台网站文件同步备份解决方案——cwRsyn),这也是开源世界的杰作,东西虽然看起来简单、丑陋,但解决起问题来就是那么有效。

我们就靠rsync解决了SQL Server的异地恋问题,轻松实现了异地自动化日志传送。

分享一下使用的rsync命令:

rsync -avz --delete --no-super rsync://远程主服务器/logbackup  /cygdrive/e/LogBackup

解决问题后的感想

在想到rsync之前,我们打算采用的方法是在远程主服务器跑FTP服务,然后通过写C#代码从远程主服务器上FTP下载日志备份文件实现同步。即使这部分代码写起来不复杂,但从创建项目到发布项目整个加起来的时间会远远超过部署rsync的时间。

所以,对于程序员来说,仅仅会写代码解决问题是不够的。真正的程序员不仅追求代码写得有多漂亮,而且追求用更巧妙的方式解决问题,哪怕不写一行代码,哪怕解决的不是技术问题。

用一句话结束这篇博文:如果把解决问题当作乐趣,程序人生将其乐无穷。

标签: SQL Server

时间: 2024-12-14 18:49:18

SQL Server也可以异地恋:借助rsync轻松实现异地日志传送的相关文章

sql server 2008 r2 数据库操作时提示 9002错误“事物日志已满”问题

事务日志截断 若要避免数据库的事务日志被填满,例行备份至关重要.在简单恢复模式下,备份了数据库后会自动截断日志,而在完整恢复模式下,只有备份了事务日志后方才截断日志.但是,截断过程有时也可能发生延迟.有关识别和应对各种延迟因素的信息,请参阅可能延迟日志截断的因素. 注意  BACKUP LOG WITH NO_LOG 和 WITH TRUNCATE_ONLY 选项已废止.使用完整恢复模式或大容量日志恢复模式时,如果必须删除数据库中的日志备份链,请切换至简单恢复模式.有关详细信息,请参阅有关从完整

SQL Server 内存中OLTP内部机制概述(四)

----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory OLTP Internals Overview>:http://technet.microsoft.com/en-us/library/dn720242.aspx 译者水平有限,如有翻译不当之处,欢迎指正. ----------------------------我是分割线---------------

SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第3部分)(完结)

原文:SQL Server 2012:SQL Server体系结构--一个查询的生命周期(第3部分)(完结) 一个简单的更新查询 现在应该知道只读取数据的查询生命周期,下一步来认定当你需要更新数据时会发生什么.这个部分通过看一个简单的UPDATE查询,修改刚才例子里读取的数据,来回答. 庆幸的是,直到存取方法(Access Methods)前,更新操作和刚才SELECT语句流程是一模一样的. 这次存取方法(Access Methods)需要修改数据,因此在I/O请求传递前,修改的细节要存放于硬盘

SQL Server中误删除数据的恢复

SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可.但是,这个恢复需要有两个前提条件: 1. 至少有一个误删除之前的数据库完全备份. 2. 数据库的恢复模式(Recovery mode)是“完整(Full)”. 针对这两个前提条件,会有三种情况: 情况一.如果这两个前提条件都存在,通过SQL语句只需三步就能恢复(参考文章),无需借助第三方工具(Recovery for SQL Server). a) 备份当前数据库的事务日志:BACKUP LOG [数据库名] TO dis

SQL Server 中日志的的作用(Redo和Undo)

简介 之前我已经写了一个关于SQL Server日志的简单系列文章.本篇文章会进一步挖掘日志背后的一些概念,原理以及作用.如果您没有看过我之前的文章,请参阅: 浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架 浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色 浅谈SQL Server中的事务日志(四)----在完整恢复模式下日志的角色 浅谈SQL Server中的事

Performance Monitor4:监控SQL Server的IO性能

SQL Server的IO性能受到物理Disk的IO延迟和SQL Server内部执行的IO操作的影响.在监控Disk性能时,最主要的度量值(metric)是IO延迟,IO延迟是指从Application创建IO请求,到Disk完成IO请求的时间延迟.如果物理Disk不能及时完成IO请求,跟不上请求负载的速度,那么SQL Server就容易出现性能问题.SQL Server内部在执行一些特定的操作时,会和Disk做读写交互,这也会影响物理硬盘响应SQL Server的IO请求的性能,使查询进程处

SQL Server 查看备份集元数据的 4 种方法。

方法 1. restore labelonly 方法 2. restore headeronly 方法 3. restore filelistonly 方法 4. restore verifyonly -----------------------------------------------------------------------------------------------------------------------------------------------------

《SQL Server企业级平台管理实践》读书笔记——关于SQL Server数据库的备份方式

数据备份一直被认为数据库的生命,也就是一个DBA所要掌握的主要技能之一,本篇就是介绍SQL Server备份原则,SQL Server数据库分为数据文件和日志文件.为了使得数据库能够恢复一致点,备份不仅需要拷贝数据数据文件里的内容,还要拷贝日志文件里的内容.那么根据每次备份的目标不同,我们可以将备份分为数据备份和日志备份. 数据备份的范围可以是完整的数据库.部分数据库.一组文件或文件组.所以根据备份下来的数据文件的范围,又分为了完整数据库备份.文件备份和部分备份. 完整数据库备份 完整数据库备份

转 一篇关于sql server 三种恢复模式的文章,从sql server 的机制上来写的,感觉很不错,转了

简介 SQL Server中的事务日志无疑是SQL Server中最重要的部分之一.因为SQL SERVER利用事务日志来确保持久性(Durability)和事务回滚(Rollback).从而还部分确保了事务的ACID属性.在SQL Server崩溃时,DBA还可以通过事务日志将数据恢复到指定的时间点.当SQL Server运转良好时,多了解一些事务日志的原理和概念显得并不是那么重要.但是,一旦SQL SERVER发生崩溃时,了解事务日志的原理和概念对于快速做出正确的决策来恢复数据显得尤为重要.