SQL Server 复制:事务发布
原文:SQL Server 复制:事务发布

一、背景

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

二、实现过程

(一) 环境信息

系统环境: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复制入门(二)----复制的几种模式

使用快照初始化订阅

复制

posted on 2018-02-01 15:46 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/8399390.html

SQL Server 复制:事务发布相关推荐

  1. SQL Server提高事务复制效率优化(二)快照初始化优化

    SQL Server提高事务复制效率优化(二)快照初始化优化 测试数据表量1500w+,使用初始化默认的快照代理参数,复制的三个过程包括快照初始化,订阅初始化和数据修改复制,主要对快照代理.分发代理. ...

  2. 通往SQL Server复制的阶梯:一级- SQL服务器复制介绍

    链接:http://www.sqlservercentral.com/articles/Stairway+Series/72274/ 文章:Stairway to SQL Server Replica ...

  3. sql server 快照_添加新文章,删除文章,更改快照文件夹路径和SQL Server复制中的数据筛选器行

    sql server 快照 In the last articles, we have learned Configuring Snapshot and Transactional SQL Serve ...

  4. 镜像数据库上SQL Server复制

    This article will review on how to configure SQL Server Replication along with mirroring on a databa ...

  5. sql server 复制_SQL Server复制配置:点对点和合并复制

    sql server 复制 This article will cover SQL Server replication configuration including Peer to peer re ...

  6. sql server 复制_SQL Server复制(合并)–复制架构更改中的性能问题

    sql server 复制 This article will review performance issues in replicating schema changes on tables in ...

  7. SQL Server复制

    介绍 (Introduction) This article is for people who need to replicate the SQL Server Databases. SQL Ser ...

  8. SQL Server复制需要有实际的服务器名称才能连接到服务器

    SQL Server 2005/2008 配置 Transactional  Replication 过程中,出现如下异常信息. 异常信息: Replication.Utilities ------- ...

  9. [解决方案]sql server复制需要有实际的服务器名称才能连接到服务器

    在配置数据同步的时候,要求相互同步的两台机器的数据库必须通过默认实例名称进行连接.如果你的默认实例已经删掉了,在当前实例上进行新建发布操作时候,会提示你:"由于未在SqlServer的此实例 ...

  10. SQL Server复制需要有实际的服务器名称才能连接到服务器 错误解决方案

    SQL Server 2005/2008 配置 Transactional  Replication 过程中,出现如下异常信息. 异常信息: Replication.Utilities ------- ...

最新文章

  1. Rsync服务让SLB下多台centos服务器文件同步更新
  2. Flink 必知必会:Flink Runtime Architecture
  3. 使用halcon结合机械XY轴对相机进行9点标定
  4. 【emWin】例程六:设置颜色
  5. 微服务架构下的身份认证
  6. 多线程的那点事儿(之数据互斥)
  7. FD.io VPP基本介绍-理解VPP软件架构
  8. java 线程_理解java多线程
  9. 西门子S7-1200PLC通过脉冲+方向控制台达ASDA-B2伺服的具体方法步骤(图文)
  10. Java性能优化之for循环
  11. 微信公众平台 使用JS-SDK实现拍照上传功能
  12. 安卓studio 连接雷电模拟器的历程
  13. PWM、PPM、SBUS、DSM2这四种协议区别
  14. (十一)简单的2维机器人仿真器
  15. C语言中延迟作用,c语言delay的用法
  16. 【华为2023届校招】集团IT秋招进行中!机会多!专人跟进!欢迎投递!
  17. 【每周研报复现】基于阻力支撑相对强度(RSRS)的市场择时
  18. python中fig_matplotlib + python:fig.figimage和fig.savefig的图尺寸
  19. uushare.com 推出了手机版
  20. 基于pso的RFID室内定位--高精度室内定位--新导智能

热门文章

  1. Mac的触控板坏了怎么办?将键盘变成鼠标的方法
  2. Mac打不开TXT文件怎么解决?
  3. Galaxy Fold上市时间推延 屏幕瑕疵是主因
  4. C# Windows异步I/O操作
  5. 深度学习的未来在单片机身上?
  6. MySQL max_allowed_packet
  7. Web前端:javascript实现图片轮播
  8. eclipse svn
  9. 转载]2LIS_03_BX数据源和CUBE之间不能垫DSO的原因
  10. flex 内嵌js文件