数据库大数据处理---复制(SQLServer)

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
日志服务 SLS,月写入数据量 50GB 1个月
简介: 原文:数据库大数据处理---复制(SQLServer)复制?     复制起初并不是用于作为高可用性功能而设计的,实际上复制的概念就像其名称一样,用于复制数据。比如将某个库中的数据“复制”到另一个库,到另一个实例中,由OLTP复制到OLAP环境中,由某数据中心复制到位于地球另一侧的另外一个数据中心中。
原文: 数据库大数据处理---复制(SQLServer)

复制?

    复制起初并不是用于作为高可用性功能而设计的,实际上复制的概念就像其名称一样,用于复制数据。比如将某个库中的数据“复制”到另一个库,到另一个实例中,由OLTP复制到OLAP环境中,由某数据中心复制到位于地球另一侧的另外一个数据中心中。因此,由于复制所提供的功能,复制可用被用来剥离负载,用于做数据冗余,直至把复制用于作为高可用性拓扑中的一个环节。(切记,复制的功能可以被用做高可用性,而不是复制是高可用性功能。)

    不同于其它SQL Server可以被用作高可用性的特性,复制可以做的非常灵活。您可以复制某些列,过滤某些行,复制表中的部分数据。复制是基于数据库对象的,而不像日志传送、镜像、集群、AlawysOn等需要以库和实例作为基本对象,此外更新的订阅还允许订阅端合并数据,没有任何一种其它的高可用性技术能做到这一点。

 

复制的基本概念

    关于复制的基本概念,我在之前已经有一篇文章进行了阐述:http://www.cnblogs.com/CareySon/archive/2012/06/20/IntroductToSQLServerReplicationPart1.html。但这里我还是想再次对基本的概念进行阐述。

    复制的模型参考的杂志发布的模型,由出版社发型杂志,由经销商分发杂志,由订户来消费这些杂志。这个概念看似简单,但可以归结出复制下面一些特点:

  • 杂志社是否大,比如说全国发行的杂志需要总代理(单独分发服务器),而一个机关内部发型的文章直接在杂志社(发布服务器和分发服务器在同一台服务器)消费
  • 是由订户去经销商自取(订阅服务器去分发服务器请求订阅),还是由经销商送到订户那里(分发服务器推送到订阅服务器)
  • 是一次性订阅一本书(快照发布),还是每当有新的文章后就发给订户(事务订阅)
  • 杂志会首先到达经销商那里,然后再给订户(数据会在分发服务器那里转存,一定时间过后,则丢弃暂存的数据)
  • 经销商保留多久就处理掉过期期刊(分发服务器数据保留时间)
  • 出版社不可能仅仅将杂志发布给某个订户看,而是会给多个订户看(一个发布可以允许多个订阅,但要考虑性能问题)
  • 从出版社发型文章到经销商再到订户需要一定时间(发布服务器到分发服务器到订阅服务器可能存在5秒10秒15秒等延迟,因此事务复制不能用于做热备,只能用于做冷备和暖备)
  • 出版社到经销商到订户中间可能存在杂志丢失的问题,原因可能是由于出版社的问题,快递的问题,经销商的问题,由于环节比较多,不太容易找出问题(复制相对难以调错)

 

复制的几种类型

    下面来简单介绍几种复制类型在高可用性中可以作为的角色。

 

快照发布

    快照复制本质上就是通过快照目录(共享目录)共享一堆文件(因为需要多个订阅端共享),在早起版本,快照复制仅仅是一个文件,而相对更新的版本,复制会将文件分为多个。快照就是文章某一时间点发布的Article

    是一种创建报表数据库的好方式。

    对于快照复制的简单概念,如图1所示。

    snapshotpublish

图1.快照发布的概念

 

 

事务复制

    在初始化订阅后(可通过快照初始化,或者由备份初始化,请参阅:http://www.sql-server-performance.com/2012/replication-without-creating-snapshot/),由发布服务器上将需要被复制的部分的日志标记为复制.由分发服务器的log reader agent来读取发布服务器上这部分日志,当分发服务器将所有的日志传递给订阅服务器,则发布服务器上的日志就可以清空了

    通过原理不难看出,每个数据库只能有一个log reader agent,因此数据库中发布内容过多,或者重复发布,则会产生严重的性能问题。此外log reader agent需要读取所有的日志,不会有任何奇迹发生来跳过那些没有被标记为复制的日志.因此当对复制的文章进行了筛选的话,会影响性能(这里可不像索引,设置了筛选条件能够提高查询速度)。

    性能因素取决于很多地方,发布服务器的速度,更改频率,分发服务器的速度等等。

    通常可以用于做实时报表,虽然会有些许延迟,但效果非常好。

 

合并复制

    合并复制可以实现数据的多处更新,当更新冲突时,可以设置规则,比如北京和上海的服务器,我可以设置北京的服务器永远赢。

 

Peer-To-Peer复制

    P2P复制是基于事务日志之上的一种复制类型,他允许每个节点都成为对等的实体。因此可以非常好的用于HA和负载均衡,即使某一个节点宕机,完全不会影响其它节点的可用性。

    自SQL Server 2012以来,PeerToPeer复制已经成为了一种单独的发布类型。

    一个Peer-To-Peer的简单例子如图2所示。

    PeerToPeer

图2.对等复制

 

    从图2中可以看出,节点A、B、C、D分别对同一份数据保存相同的副本,并且每个节点上都可以进行读写操作。我们可以假设每个节点都是在不同的地理位置,因此假如说节点A宕机,则可以直接将应用程序连接字符串重定向到其它节点,实现了高可用性。从图2中还可以看出,对于任一节点我们都可以进行读写操作,因此实现了负载均衡的效果。此外,NodeB进一步将数据发布到只读服务器上,进一步实现了读写分离。 
   因此,这种方式具有极大的灵活性,和其它高可用性技术结合可以实现多种数据库拓扑。

   在SQL Server 2008之后的版本,当遇见数据更新冲突时,可以通过冲突查看器进行查看并解决冲突,还可以在数据更新冲突出现后,进行报警。

 

为什么选用复制

    每一种高可用性技术都有其自身的优点和缺陷,如果某种技术相较与其它技术只有有点,没有缺陷,那”其它技术“一定会被淘汰。

    相比较其它高可用性技术而言,复制有如下好处:

  • 复制是对象级别,您可以仅复制您需要复制的内容
  • 复制可以工作在简单恢复模式下。
  • 您可以拥有无限多个订阅(日志传送也可以实现,但要考虑到网络带宽和性能问题,通常来说,订阅数量稍微多一点就要考虑请求订阅,将Distribution Agent的负载OffLoad到订阅服务器)
  • 复制允许在高可用的另一端(也就是用于冗余的一端)进行更新,没有其它高可用性技术可以做到这一点
  • 在故障转移的时候,不需要Redo或Rollback日志,只需要将应用重定向到仍然在线的节点

    但同样,复制也有其自身局限性,比如:

  •     复制建立、调错都相对比较复杂
  •     复制是对象级别(没错,这一点既可以是优势,同样也是劣势,基于不同的场景)
  •     分发库上不能建立镜像,因此分发库有可能成为Single-Point-Of-Failure
  •     复制很容易影响发布服务器的性能
  •     不能进行热备,这意味着就不能进行故障检测和故障排除
  •     对于复制来说,故障转移容易,想转移回来就比较麻烦,因此这种情况下可以考虑P2P复制

 

    但不得不说,复制的确是非常的强大,套用京东“首席DB Replicationor(自造词)”陈璟的话说就是:“想复制什么复制什么,想复制多远复制多远,想怎么复制就怎么复制,想复制的多复杂就多复杂”,同时结合其它技术可以实现很多有意思的拓扑,比如图3(同样来自陈璟同学)。

    ExampleOfReplicationHA

    图3.利用复制分发写数据,同时实现高可用性

 

    通过图3这种方式,分发了写压力,同时相同的读库实现了负载均衡以及高可用性,当某个读库宕机后,会有足够的时间进行修复。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
2月前
|
SQL 数据库
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
103 12
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
|
12天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
12天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
27天前
|
存储 数据挖掘 数据库
数据库数据恢复—SQLserver数据库ndf文件大小变为0KB的数据恢复案例
一个运行在存储上的SQLServer数据库,有1000多个文件,大小几十TB。数据库每10天生成一个NDF文件,每个NDF几百GB大小。数据库包含两个LDF文件。 存储损坏,数据库不可用。管理员试图恢复数据库,发现有数个ndf文件大小变为0KB。 虽然NDF文件大小变为0KB,但是NDF文件在磁盘上还可能存在。可以尝试通过扫描&拼接数据库碎片来恢复NDF文件,然后修复数据库。
|
28天前
|
算法 大数据 数据库
云计算与大数据平台的数据库迁移与同步
本文详细介绍了云计算与大数据平台的数据库迁移与同步的核心概念、算法原理、具体操作步骤、数学模型公式、代码实例及未来发展趋势与挑战。涵盖全量与增量迁移、一致性与异步复制等内容,旨在帮助读者全面了解并应对相关技术挑战。
37 3
|
2月前
|
SQL 关系型数据库 MySQL
创建包含MySQL和SQLServer数据库所有字段类型的表的方法
创建一个既包含MySQL又包含SQL Server所有字段类型的表是一个复杂的任务,需要仔细地比较和转换数据类型。通过上述方法,可以在两个数据库系统之间建立起相互兼容的数据结构,为数据迁移和同步提供便利。这一过程不仅要考虑数据类型的直接对应,还要注意特定数据类型在不同系统中的表现差异,确保数据的一致性和完整性。
35 4
|
1月前
|
SQL 缓存 大数据
C#高效处理大数据的批次处理,以及最好的数据库设计
C#高效处理大数据的批次处理,以及最好的数据库设计
61 0
|
1月前
|
大数据 关系型数据库 数据库
python 批量处理大数据写入数据库
python 批量处理大数据写入数据库
106 0
|
1月前
|
存储 机器学习/深度学习 分布式计算
大数据技术——解锁数据的力量,引领未来趋势
【10月更文挑战第5天】大数据技术——解锁数据的力量,引领未来趋势
|
9天前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
70 7