笔者最近碰到了需要搭建跨网段的SQL Server复制,实际的拓扑结构如下草图所示:

发布端A服务器位于CDC机房中

订阅端B服务器位于阿里云

因为SQL Server复制不支持通过IP连接分发服务器,为了解决跨网段、跨机房的问题,笔者采用了如下的解决方案:

1.设置端口映射:在防火墙中开放外网IP的1433端口对应位于CDC机房中的发布服务器A的1433端口。并且该1433端口仅对位于阿里云的服务器B开放。

2.打开位于阿里云的服务器B的1433端口,并设置仅限CDC机房服务器访问。

3.基于安全考虑,采用备份文件初始化,这样可以不必使用文件共享快照文件。

4.使用Host文件,将IP与服务器名对应。

5.由于仅仅是测试,为了简化设置,发布服务器和分发服务器都在同一个服务器上。

----------------------------------------------------------------------------------------------------

以下是实际测试搭建SQL Server 跨网段(跨机房)通过备份文件初始化复制的过程截图:

1,在订阅服务器上设置HOST文件,将CDC机房的外网IP对应发布服务器A的服务器名:

2,同样在发布服务器上设置HOST文件,将位于阿里云的订阅服务器外网IP对应订阅服务器的机器名:

3,在发布服务器和订阅服务器上分别创建Replication用户(这里仅提供了在订阅服务器创建的截图),分别用于日志读取代理器连接发布服务器和推送复制连接到订阅服务器。

4,在发布服务器上新建本地发布

此处快照文件夹可以随便设置,因为后续不会使用到。

设置基本完成。

6,备份发布数据库(需要保留一份在发布数据库上,以备创建订阅时使用):

USE [master]
GO
BACKUP DATABASE [mydb]
TO DISK = N'E:\dbbackup\full\mydb 2015-02-26_2.BAK'
WITH NOFORMAT, NOINIT, NAME = N'mydb-完整数据库备份',
SKIP, NOREWIND, NOUNLOAD,COMPRESSION, STATS = 10
GO

7,拷贝一份备份文件到订阅服务器
8,在订阅服务器还原数据库:

RESTORE DATABASE [mydb]
FROM DISK = N'D:\mydb 2015-02-26\mydb 2015-02-26.BAK'
WITH FILE = 1,
MOVE N'mydb' TO N'D:\MSSQL\Data\mydb\mydb.mdf',
MOVE N'mydb_Data' TO N'D:\MSSQL\Data\mydb\mydb_Data.ndf',
MOVE N'mydb_log' TO N'D:\MSSQL\Log\mydb\mydb_log.ldf',
NOUNLOAD, REPLACE, STATS = 10
GO

9,在发布服务器上创建订阅:

USE [mydb]
GO
EXEC sp_addsubscription
@publication = N'TranPub_mydb',
@subscriber ='mySubscriptionNm',-- 这里应该填订阅服务器的服务器名(即hosts里的名字)
@destination_db = N'mydb',
@subscription_type = N'Push',
@sync_type = N'initialize with backup',
@backupdevicetype='disk',
@backupdevicename='E:\dbbackup\full\mydb 2015-02-26.BAK'-- 这个是发布服务器上备份文件的路径

创建成功后会得到消息:

Job 'XXXX' started successfully.
Warning: The distribution agent job has been implicitly created and will run under the SQL Server Agent Service Account.

10,最后还需要修改订阅端的连接:

打完收工,文字不多,以图片说话,如有不明白的地方请大家留言就是。

参考文献:

https://technet.microsoft.com/zh-cn/library/ms147834(v=sql.105)

http://www.cnblogs.com/gaizai/archive/2013/09/18/3328511.html

http://www.cnblogs.com/gaizai/p/3309567.html

SQL Server 跨网段(跨机房)通过备份文件初始化复制的更多相关文章

  1. SQL Server 中的跨库视图

    SQL Server 中的跨库视图 在一个SQL中,有多个数据库,A.B.C,在使用C为连接库中,现在要查询A中的表T1. 那么,在C中建创视图(A_T1). SELECT *FROM A.dbo.T ...

  2. SQL Server 数据库同步,订阅、发布、复制、跨服务器

    随便说两句 折腾了一周,也算把数据库同步弄好了.首先局域网内搭建好,进行各种测试,弄的时候各种问题,弄好以后感觉还是挺简单的.本地测试好了,又在服务器进行测试,主要的难点就是跨网段同步,最后也解决了, ...

  3. SQL Server 通过备份文件初始化复制

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建过程(Process) 注意事项(Attention) 疑问(Questions) 参考文 ...

  4. Step3 SQL Server 通过备份文件初始化复制

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建过程(Process) 注意事项(Attention) 疑问(Questions) 参考文 ...

  5. SQL Server 通过备份文件初始化复制 – 听风吹雨

    一.背景 MySQL在对有历史数据的数据库进行搭建复制(Master/Slave)的时候,可以通过在Master服务器备份历史数据,利用这个备份文件 在Slave进行还原:这样做的好处是可以更加快速的 ...

  6. (1)sql server 同网段复制

    转自:https://blog.csdn.net/hliq5399/article/details/51678774(文末有复制系列文章链接) 一.背景 在复制的运用场景中,事务发布是使用最为广泛的, ...

  7. SqlServer 跨网段跨服务器复制

    注意:被同步的表必须有主键,否则无法同步.对数据库进行操作时需要登录服务器,在服务器本地进行操作,远程对数据库进行操作不能完成所有的步骤 准备工作: 1.将发布数据库完整备份到订阅服务器上,并在订阅服 ...

  8. SQL Server Agent Job 中用Powershell将备份文件拷贝到AWS S3

    SQL Server 数据库备份后,如何再复制一份到AWS S3 上,步骤和需要注意的地方如下: 1. 首先在SQL Server 中创建一个Credential 2. 授权这个Credential ...

  9. SQL Server 数据变更时间戳(timestamp)在复制中的运用

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 方案(Solution) 方案一(Solution One) 方案二(Solution Two ...

随机推荐

  1. C#基础篇五值类型和引用类型

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace P01M ...

  2. mpvue使用scroll-view实现图片横向滑动

    html代码 <div class="swiper-home"> <scroll-view scroll-x="true" style=&qu ...

  3. mybatis插入数据库 返回主键

    传递参数为对象TaskEntity, 返回主键结果为Integer 与 主键 task_id 的类型一致即可 <insert id="addTask" parameterTy ...

  4. Visual Studio自带的的Developer Command Prompt对话框

    简单了解Visual Studio的Developer Command Prompt VS2008的命令为:Visual Studio 2008 Command Prompt 目录是: 其详细信息如下 ...

  5. elasticSearch6源码分析(3)cluster模块

    1. cluser概述 One of the main roles of the master is to decide which shards to allocate to which nodes ...

  6. AngularJS学习笔记(五)自定义指令(1)

    先来说说自定义指令 ng通过内置指令的方式实现了对html的增强,同时也赋予了我们自定义指令的功能,让我们根据实际需求进行指令的定制.自定义指令涉及到模板(template).作用域(scope).数 ...

  7. 【手记】解决Resharper 2018.x起本机license server不能用的问题

    ReSharper升级到2018版后,一直用的好好的本机license server(下称LS)不能用了,报The license server address is incorrect....在网上 ...

  8. .NET中OpenFileDialog使用报线程错误的解决方法

    昨天,在做一个NPOI读取的小demo的时候,使用OpenFileDialog打开文件,最开始的写法,直接在按钮点击事件中写,会报错,代码如下: OpenFileDialog ofd = new Op ...

  9. ASP的不足与ASP.NET和ASP的区别

    ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强.ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型.面向结构的编程语言,而非面向对象,这就明显 ...

  10. CSS学习笔记06 简单理解line-height

    在制作页面的时候,经常会遇到文本图片需要居中的情况,这时候,只要设置下文本的line-height属性等于包裹该文本的元素的高度即可让文本居中显示了,先来看看这个现象. <!DOCTYPE ht ...