转自:https://blog.csdn.net/hliq5399/article/details/51678774(文末有复制系列文章链接)

一、背景

  在复制的运用场景中,事务发布是使用最为广泛的,我遇到这样一个场景:在Task数据库中有Basic与Group两个表,需要提供这两个表的部分字段给其它程序读取放入缓存,程序需要比较及时的获取到这些数据,作为DBA你需要从权限和性能控制的角度出发,我采用了SQL Server的事务复制技术和timestamp,下面只讲述事务复制的搭建过程;

 数据复制前提条件

1. 数据库故障还原模型必需为完全还原模型。

2. 所有被同步的数据表都必须要用主键。

3. 发布服务器、分发服务器和订阅服务器必须使用计算机名称来进行SQLSERVER服务器的注册。

4. SQLSERVER必需启动代理服务,且代理服务必需以本地计算机的帐号运行。

 解决前提条件实施步骤

1. 将数据库故障还原模型调整为完全还原模型。具体步骤如下:

打开SQLSERVER企业管理器à选择对应的数据库à单击右键选择属性à选择”选项”à 故障还原模型选择完全还原模型。

2. 所有被同步的数据表都必须要用主键。(主要指事务复制)如果没有主键的数据表,增加一个字段名称为id,类型为int 型,标识为自增1的字段。

3. 发布服务器、分发服务器和订阅服务器必须使用计算机名称来进行SQLSERVER服务器的注册。

在企业管理器里面注册的服务器,如果需要用作发布服务器、分发服务器和订阅服务器,都必需以服务器名称进行注册。不得使用IP地址以及别名进行注册,比如LOCAL, “.”以及LOCALHOST等。

二、实现过程

(一) 环境信息

系统环境:Windows Server 2008 + SQL Server 2008 R2

发布服务器:192.168.1.151,服务器名称:USER-H2B2A89PEK

分发服务器:与发布服务器同一台机器

订阅服务器:192.168.1.152,服务器名称:USER-FJMO8L052U

发布数据库:Task

订阅数据库:TaskSiteInfo

数据库帐号:ReplicationUser/ ReplicationPassword

(二) 搭建步骤

A. 发布服务器配置

  首先在发布数据库和订阅数据库上创建相同的帐号和密码(ReplicationUser/ ReplicationPassword),并且设置Task数据库的安全对象,设置这样的帐号的目的就是为了和程序连接到数据库的帐号区分开,可以做权限上的控制,方便问题的排查;

--更改安全对象的所有权

ALTER AUTHORIZATION ON DATABASE::[Task] TO [ReplicationUser]

在E盘目录下创建文件夹:E:\ReplData,并设置这个文件夹为共享目录,共享用户为barefootadmin;

(Figure1_1:文件夹权限)

这里需要设置SQL Server Agent登陆帐号为上面文件夹访问用户barefootadmin;

(Figure1_2:SQL Server Agent登陆帐号)

(Figure2:分发服务器)

  如果你设置快照文件夹路径为:E:\ReplData,即使你的发布服务器本身就是分发服务器,如果订阅服务器是另外一台机器,那么在请求(Pull)订阅(如果是推送(Push)订阅就没有这个限制)模式下订阅代理是无法访问到这个快照文件的;除非你发布服务器、分发服务器和订阅服务器都是同一台机器;你应该设置快照文件夹路径为:\\USER-H2B2A89PEK\ ReplData;

(Figure3:快照文件夹)

(Figure4:数据库)

  • 快照发布:隔一段时间会覆盖订阅服务器的数据库,在订阅服务器上做的修改同样被覆盖;
  • 事务发布:是一种接近实时地从源到目标分发数据的方法;
  • 具有可更新订阅的事务发布:订阅服务器可更新发布服务器的数据;
  • 合并发布:发布服务器和订阅服务器的更新都会同步到对方,注意ID在合并发布上的冲突

(Figure5:事务发布)

注意表必须有主键才能进行复制,选择你必要的字段,这样可以减轻快照文件的大小和传输时间,而且在业务逻辑上更加安全,如果有需要,你还可以对记录进行过滤;

(Figure6_1:表字段)

(Figure6_2:表字段)

(Figure6_3:表字段)

(Figure7:快照代理)

(Figure8:安全设置)

使用上面创建好的ReplicationUser帐号作为连接到发布服务器的帐号和密码;

(Figure9:使用刚刚创建的帐号密码)

(Figure10:创建发布)

(Figure11:发布名称)

(Figure12:查看复制情况)

B. 订阅服务器配置

创建完发布服务器(分发服务器也一起创建了),接下来就可以创建订阅服务器了,下面是具体的步骤:

(Figure13:查找发布服务器)

(Figure14:查找发布服务器)

(Figure15:选择发布)

(Figure16:请求订阅)

(Figure17:订阅数据库)

(Figure18:订阅连接)

(Figure19:帐号密码)

(Figure20:代理计划)

(Figure21:初始化订阅)

(Figure22:创建订阅)

(Figure23:订阅)

(Figure24:发布服务器上的订阅)

(Figure25:复制监视器)

(Figure26:订阅数据库新增的表)

(Figure27:表数据)

三、注意事项

1. 在SQL SERVER下实现发布服务器和订阅服务器的通信正常(即可以互访),打开1433端口,在防火墙中设置入站规则;

2. 发布服务器与订阅服务器的SQL Server Agent代理帐号必须设置的一样,否则不能互访;

3. 如果你希望在复制的过程中一并复制非聚集索引,可以对发布属性-项目进行如下设置,修改完之后需要重新生成快照;

(Figure28:非聚集索引复制)

4. 复制代理:快照代理(snapshot agent) 分布式代理(Distribution agent)日志读代理(log Reader agent) 合并代理(Merge agent) 队列读代理(Queue Reader Agent)

5. 适合使用复制的一些场景包括:

1) 负载均衡:通过将数据复制到其它数据库服务器来减少当前服务器的负载,比如说最典型的应用就是分发数据来分离OLTP和OLAP环境;

2) 分区:将经常使用的数据和历史数据隔离,将历史数据复制到其它数据库中;

3) 授权:将一部分数据提供给需要使用数据的人,以供其使用;

4) 数据合并:每个区域都有其各自的数据,将其数据进行合并。比如一个大公司,每个地区都有其各自的销售数据,总部需要汇总这些数据;

5) 故障转移:复制所有数据,以便故障时进行转移;

6. 快照复制或事务复制生成快照文件的类型有:

架构 (.sch)、数据 (.bcp)、约束和索引 (.dri)、约束 (.idx)、触发器 (.trg)(只用于更新订阅服务器)、压缩的快照文件 (.cab)。

四、疑问

1. SQL Server 只有在完整日志模式下才能使用复制嘛?

解惑:在简单模式下一样可以使用复制;

2. 如果是跨网段(跨机房)的发布与订阅,有没办法实现?需要注意什么?

解惑:可以通过修改host文件的方式搭建复制,请参考:SQL Server跨网段(跨机房)复制

3. 如果说上面的情况可以在host设置,但是如果有端口映射的,host也无法设置吧?

解惑:在SQL Server配置管理器里建立别名,同样可参考:SQL Server跨网段(跨机房)复制

4. 订阅的形式可以选择推送订阅或者请求订阅,请求订阅降低分发服务器处理工作的开销,这个开销有多大呢?怎么计算影响?

解惑:只有在有很多订阅服务器的时候才比较明显,推送订阅与请求订阅更大的区别是在管理方面的不同;

五、参考文献

快照复制

SQL Server 复制

timestamp (Transact-SQL)

SQL Server 复制订阅与发布

SQL Server复制入门(一)----复制简介

SQL Server复制入门(二)----复制的几种模式

使用快照初始化订阅

复制

--------------------- 本文来自 似水流年 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/hliq5399/article/details/51678774?utm_source=copy

(1)sql server 同网段复制的更多相关文章

  1. (2)sql server 跨网段复制

    转自:http://www.cnblogs.com/gaizai/p/3328511.html 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) ...

  2. SQL Server 跨网段(跨机房)FTP复制

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

  3. SQL Server跨网段(跨机房)FTP复制

    SQL Server跨网段(跨机房)FTP复制 2013-09-24 17:53 by 听风吹雨, 273 阅读, 0 评论, 收藏, 编辑 一. 背景 搭建SQL Server复制的时候,如果网络环 ...

  4. Step5:SQL Server 跨网段(跨机房)FTP复制

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

  5. SQL Server 跨网段(跨机房)通过备份文件初始化复制

    笔者最近碰到了需要搭建跨网段的SQL Server复制,实际的拓扑结构如下草图所示: 发布端A服务器位于CDC机房中 订阅端B服务器位于阿里云 因为SQL Server复制不支持通过IP连接分发服务器 ...

  6. 通过SQL Server 2008数据库复制实现数据库同步备份

    SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行 实时数据同步,正常情况下只使用主 ...

  7. SQL Server跨库复制表数据错误的解决办法

    SQL Server跨库复制表数据的解决办法   跨库复制表数据,有很多种方法,最常见的是写程序来批量导入数据了,但是这种方法并不是最优方法,今天就用到了一个很犀利的方法,可以完美在 Sql Serv ...

  8. sql server 2008数据复制

    SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行实时数据同步,正常情况下只使用主数 ...

  9. SQL Server 2005同步复制

    原文:SQL Server 2005同步复制 以下实现复制步骤(以快照复制为例) 运行平台SQL SERVER 2005 一.准备工作: 1.建立一个 WINDOWS 用户,设置为管理员权限,并设置密 ...

随机推荐

  1. 有关IM即时通讯原理

    在网上搜索了一些资料,谈谈自己对IM即时通讯的理解 IM全称为Instant Messaging,即时通讯,如qq那种的. 现在有两个用户UserA, UserB, 俩人是一个IM通讯软件的好友,Us ...

  2. "《 Serial Drivers 》by Alessandro Rubini" 学习笔记

    Introduction to "serial device driver"     (My study note) 膜拜大神的作品. Standing on the should ...

  3. Atitit.输入法配置说明v1 q229

    Atitit.输入法配置说明v1 q229 //------------------------------------------------------ //   IME设置 //-------- ...

  4. Atitit.通过null 参数 反射  动态反推方法调用

    Atitit.通过null 参数 反射  动态反推方法调用 此时,直接使用java  apache的ref工具都失效了.必须要自己实现了. 如果调用接口方法的话,就不能使用apache的ref工具,可 ...

  5. Atitit.导出excel报表的设计与实现java .net php 总

    Atitit.导出excel报表的设计与实现java .net php 总结 1. 导出报表 表格的设计要素1 1.1. 支持通用list<Map>转换1 1.2. 对于空列是否输出1 1 ...

  6. RGB格式等比例缩放

    原理为:将原始图像的每个像素通过一个比例关系式映射到相应的位置. /* lrgb: input 24bits rgb buffer srgb: output 24bits rgb buffer wid ...

  7. pthread_cleanup_push和pthread_cleanup_pop清除函数是否执行的说明

    示例1: #include <stdio.h> #include <pthread.h> void* clean(void* arg) { printf("clean ...

  8. c++如何new构造函数是protected的对象

    如果确实要new的话,可以继承这个类,然后new派生类,再转换为基类指针

  9. Vsphere日记03.ESXi5.5.client

    3.Vsphere ESXi 5.5 client Vsphere Client介绍 1.Vsphere Client定义 Vsphere client隶属于Vsphere套件,主要用于远程管理ESX ...

  10. 将bloomfilter(布隆过滤器)集成到scrapy-redis中

    Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中,判断URL是否重复 布隆过滤器(Bloom Filter)详解 基本概念 如 ...