SQL Server 复制(Replication)

dba 发布于 2024-01-03 阅读(31)

SQL Server 复制(Replication)

复制概述#

复制的类型#

概述#

快照复制

事务复制

合并复制

Oracle发布

对等复制

快照复制#

说明#

如同其名称,是一份执行复制时数据与数据库对象的快照

按指定的时间间隔生成一份数据快照,然后发送到订阅的服务器

快照复制是单向的数据复制

快照复制发送的是整个数据集,并不跟踪DML变更

因为不跟踪DML变更,可以提升性能

如果快照非常打,数据分发到目的地将是一个很长的过程

适合场景#

复制、迁移少量数据

以较长周期(每日、每晚)进行数据复制的场景

数据更新频率不高的场景

高延迟场景,不适合实时性要求高的场景

事务复制#

说明#

事务复制也是由快照复制开始

当发布服务器上的初始快照数据与架构发生变化时,异步(有序)地分发给服务器

订阅服务器接收到变更事务,从而保证了与发布服务器数据一致

事务复制是单向的数据复制

适合场景#

几乎实时地将数据发布到一个或多个订阅服务器

数据量有持续的增长

有大量事务性数据,或者更新频繁

将数据变化连续的发送给订阅服务器

适合于一台服务器作为数据源,另一台作为数据备份或其他任务的服务器的场景

合并复制(Merge Replication)#

说明#

合并复制也是由快照复制开始

使用触发器跟踪发布服务器和订阅服务器上的数据和架构变更

订阅服务区再连接到网络时将于发布服务器进行同步

交换自上次同步以来发布服务器和订阅服务器之间发生更新的所有行

在发布者和订阅者之间复制差异

合并复制是双向的数据复制

适合场景#

Oracle发布#

一般用于将Oracle数据库迁移到SQL Server数据库

对等复制#

复制代理#

说明#

在服务器之间复制移动数据和数据库对象是一个巨大工程

可以使用复制代理辅助完成该工作

SQL Server支持的4中代理:

快照代理

分发代理

日志读取器代理

合并代理

快照代理#

说明#

各类复制都是用快照来进行复制进程

快照代理产生快照文件

快照文件包含需要的数据和数据库对象

快照代理将全部数据写入到文件中

快照代理运行在SQL Server发布服务器实例上

分发代理#

用于快照和事务复制中

快照复制使用分发代理将生成的快照分发给所有的订阅服务器

事务复制使用分发代理将快照和变更分发给订阅服务器

分发代理运行在分发服务器的SQL Server实例上,用来推送订阅内容

分发代理运行在订阅服务器的SQL Server实例上,用来请求订阅内容

日志读取器代理#

日志读取代理仅用于事务复制

将发布服务器上的事务日志编辑为复制事务移动到分发数据库中

合并代理#

合并代理仅用于合并复制中

合并代理将初始快照和发布服务器上的后续更新推送到订阅服务器

合并代理检测源(发布服务器)与目的(订阅服务器)上自最近一次按计划运行的合并代理以来发生的更新

配置SQL Server复制#

说明#

典型的复制拓扑结构至少有一台发布服务器与一台订阅服务器组成

配置复制-使用SSMS#

配置分发#

进入服务器的配置分发页面
image

选择作为分发服务器的服务器
image

设置分发代理是否为自动启动
image

配置快照文件夹
image

配置分发数据库的名称和数据位置
image

接下来按默认的配置项,直接按下一步即可

配置事务发布服务器#

进入指定数据库的复制页面
image

选择指定的数据库
image

选择分发的类型(这里选择事务发布作为测试)
image

选择要分发的对象
image

筛选排除不分发的数据,如果没有就直接点击下一步
image

指定何时运行代理
image

配置代理的安全设置
image

设置向导完成后执行的操作
image

配置事务订阅服务器#

新建数据库用于接收数据

USE master;CREATE DATABASE PandaReceiver;

进入订阅界面,新建订阅

image

查找和指定事务发布服务器
image

设置订阅的方式
image

选择接收订阅的数据库
image

设置安全选项
image

设置代理的运行方式
image

初始化订阅的数据
image

监控复制
image