热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

复制选项的规划_MySQL

复制选项的规划
SQL Server 2000 提供了比以前版本更多的复制选项,其中包括立即更新订购者,排 队更新,以排队更新作为热备份的立即更新,传递复制数据,过滤出版数据等。其中前三 个选项表示可在订购者处对复制数据进行修改,然后将修改以相应的方式反映到出版者那 里。如果在复制中使用这些复制选项,将使复制的配置和管理更为困难,所以很有必要对 这些复制选项有着更为清晰的认识和了解。

16.6.1 立即更新订购者
所谓立即更新订购者是指在复制时使用了立即更新选项。通常而言,快照复制和事务 复制都是单向数据复制即数据从出版者的源数据库复制到订购者的目标数据库。但是SQL Server 通过允许订购者来修改复制数据而增强了这种模式的功能。立即更新订购者选项允 许既可以在出版者也可以在订购者处对复制数据进行修改。立即更新是指对复制数据进行 修改的订购者与出版者之间保持数据的立即更新,即立即将订购者的修改反映到出版者那 里。并且提供了对其它订购者而言的潜在事务一致性,即订购者的修改在立即反映到出版 者那里之后,允许这一修改不必马上同步到其它订购者那里。在创建出版物时对该选项进 行设置。

应该强调的是,在对数据进行修改的订购者与出版者之间使用了两阶段提交协议,从 而要求当订购者对数据的修改在出版者那里被成功提交之后,这一修改才会在该订购者处 被提交。如果提交成功,然后出版者才会在分发代理执行时(如果是快照复制,则也可以 是在快照被刷新时),把这种修改分发到其它的订购者那里。

与完全的两阶段提交协议相比,立即更新订购者选项降低了复制的复杂性以及事务提 交失败的可能性。因为完全的两阶段协议要求所有参与事务的服务器之间必须有可靠的网 络连接,并且对数据的修改只有在所有的参与者中都被成功提交才会生效但当设置立即 更新订购者选项时,由于仅在对复制数据进行修改的订购者与出版者之间使用了二阶段提 交协议,所以事务的完整性仍得到很好的维护,而在出版者和其它订购者之间并不使用二 阶段提交协议,这样便取消了所有参与者必须保持数据同步的复杂性。
注意:合并复制不允许使用立即更新订购者选项。

在SQL Server 2000 中,若设置了立即更新订购者选项则,需要以下组件的支持;
触发器
存储过程
Microsoft 的分布式事务协调器MS DTC
冲突检测
环路检测

1 触发器
触发器位于订购者,被用来捕捉在订购者上发生的事务并利用远程过程调用将事务提 交给出版者。由于使用二阶段提交协议,从而保证事务在出版者被成功提交后才会在订购 者那里提交,如果提交失败,则订购者事务将回滚,从而使订购者数据库与出版者数据库 仍能保持同步。
2 存储过程
存储过程位于出版者上,如果自订购者上次接收复制数据以来,出版者数据库发生的 变化与订购者提交的事务不发生冲突,才允许在出版者提交这些来自订购者的事务。若有 冲突发生,则拒绝事务提交,两处的事务都将回滚。每篇论文都有为INSERT、 DELETE、 UPDATE 事务创建的存储过程。
3 Microsoft 的分布式事务协调器(MS DTC)
在触发器使用存储过程将订购者事务提交给出版者时,需要Microsoft 的分布式事务 协调器(MS DTC) 来管理出版者与订购者之间的两阶段提交。远程存储过程使用BEGIN DISTRIBUTED TRANSACTION 来对MS DTC 进行初始化操作。
4 冲突检测
出版数据库中的存储过程使用时间戳来进行检测,以确定某列被复制到订购者之后是 否又被修改。当订购者提交立即更新事务时,它会把某行的所有列(包括时间戳列)送回 到出版者,出版者利用存储过程将该行当前(属于出版者数据库)的时间戳值与从订购者 送回的时间戳值进行比较,如果相同,表明在复制给订购者之后没有发生修改,则接收事 务(用从订购者送回的行值来修改该行的当前值)。
5 环路检测
环路检测主要是基于以下考虑而被提出的,即如果订购者的立即更新事务在出版者和 订购者都被成功提交后,出版者要在以后的某一时刻将该事务复制到其它订购者,但是由 于提交立即更新事务的订购者已成功提交了该事务,因此也就没有必要再将此事务从出版 者那里复制给该订购者。如何解决该问题呢?环路检测就是用来确定一事务是否已在某订购者服务器处被成功提交,从而避免该事务又一次应用于订购者服务器,最终因破坏了完 整性约束(如向同一表中插入同一行)导致复制中止。

16.6.2 排队更新订购者
排队更新选项是SQL Server 2000 的新增功能。与立即更新订购者一样,排队更新允 许快照复制或事务复制的订购者对复制数据的修改,然后将修改反映到出版者那里。但不 同的是,排队更新并不要求订购者与出版者之间的网络连接一直处于激活状态。
通常在创建出版物时对该复制选项进行设置,如果使用了排队更新选项,那么订购者 对复制数据的修改是保存在一个队列中。当订购者与出版者之间的网络连接恢复时,这些 队列中的事务将按先后顺序被应用到出版者。
由于订购者对复制数据的修改是以异步的方式反映到出版者那里的,所以,一旦同一 数据被出版者或其它的订购者修改,则容易出现复制数据的修改冲突。在创建出版物时, 我们通常也要决定冲突的解决策略,从而对可以出现的冲突提供解决方案,保证复制数据 的一致性。
如果用户经常读到数据,并且偶尔修改数据,则在该情况下推荐使用排队修改,这样 订购者即使在离线的情况下仍可以对复制数据进行修改。

在SQL Server 2000 中,若设置了立即更新订购者选项,则需要以下组件的支持:
触发器
队列
存储过程
队列阅读代理

1 触发
触发器依附在订购者的出版表上,当进行排队更新时,触发器用来捕捉订购者上执行 的事务,然后将这些事务包在消息中并传送到队列中。

2 存储过程
在创建出版物时,若指定了排队更新选项,则在出版数据库中对出版表执行插入、删 除、更新的存储过程将自动生成。队列阅读代理将调用存储过程在出版者上执行队列中的 事务,并进行冲突检,测如有必要则产生一些补充命令,这些命令首先传给分发数据库, 然后传送给订购者。除此之外,在出版者上仍要创建记录冲突信息,并将冲突信息传递给 相关订购者的存储过程,如果检测到冲突,这些存储过程将由队列阅读代理调用。

3 队列
队列主要用来存储包含订购者事务的消息,订购者与分发者都有一个消息队列。在网 络断开的情况下,包含订购者事务的消息首先存储在订购者消息队列,然后在网络接通时 被传送到分发者消息队列。队列阅读代理读到这些消息并将消息中的事务应用到出版者。

4 队列阅读代理
队列阅读代理运行在分发者上多线程代理,其主要任务就是从消息队列中读取信息并 将事务应用到出版者。

16.6.3 转换复制数据
转换复制数据是SQL Server 2000 新增的功能。用可转换订购(Transformable subscriptions) 来实现复制数据的转换。可转换订购主要是利用数据转换服务(DTS)所提供的 功能,如数据移动、传递映射、过滤等,从而可以根据每个订购者的具体要求来定制、发 送复制数据。它可以在快照复制和事务复制中使用。比如,在以下情况下我们应该使用转 换复制数据选项:

根据每一订购者对出版数据进行列或水平分割
在SQL Server 2000 以前的版本中,由于不同的订购者需要不同的数据(这里订购者 所需要的数据是指表在垂直或水平分割后的某一部分),所以必须把数据分割成不同的数 据块,从而在创建快照复制或事务复制时,也要分别为每一个订购者创建不同的出版物。 这给复制的管理和配置带来极大的不便,由此可增加系统的负担。但是在SQL Server 2000 中,可转换订购允许为同一出版物创建定制的数据分割(列或行分割),即同一出版物支 持多个订购,从而满足不同订购者对出版数据的不同需求。

创建数据转换,如数据类型匹配、列操作(如两列合成一列)、字符串操作、用 户自定义函数等。
使用可转换订购在出版者与订购者之间进行基本的、简单的数据转换和列操作主要包括以下几个方面:

改变数据类型(除主键列外)
重新命名某列
从某列提取子字符串或向某列添加额外的字符
对某列使用函数
在创建出版物时设置该选项。完成该选项设置后,将创建一个复制DTS 包,订购者将把该DTS 包作为出版物的一部分。
下面我们将介绍在Enterprise Manager 中如何创建可转换订购。
首先,在创建出版物时要设置Transform Published Data 选项,在创建出版物的step6

推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
author-avatar
会唱歌的高跟鞋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有