搜尋
首頁資料庫mysql教程复制选项的规划_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

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
MySQL中有哪些不同的存儲引擎?MySQL中有哪些不同的存儲引擎?Apr 26, 2025 am 12:27 AM

mysqloffersvariousStorageengines,每個suitedfordferentusecases:1)InnodBisidealForapplicationsNeedingingAcidComplianCeanDhighConcurncurnency,supportingtransactionsancions and foreignkeys.2)myisamisbestforread-Heavy-Heavywyworks,lackingtransactionsactionsacupport.3)記憶

MySQL中有哪些常見的安全漏洞?MySQL中有哪些常見的安全漏洞?Apr 26, 2025 am 12:27 AM

MySQL中常見的安全漏洞包括SQL注入、弱密碼、權限配置不當和未更新的軟件。 1.SQL注入可以通過使用預處理語句防止。 2.弱密碼可以通過強制使用強密碼策略避免。 3.權限配置不當可以通過定期審查和調整用戶權限解決。 4.未更新的軟件可以通過定期檢查和更新MySQL版本來修補。

您如何確定MySQL中的慢速查詢?您如何確定MySQL中的慢速查詢?Apr 26, 2025 am 12:15 AM

在MySQL中識別慢查詢可以通過啟用慢查詢日誌並設置閾值來實現。 1.啟用慢查詢日誌並設置閾值。 2.查看和分析慢查詢日誌文件,使用工具如mysqldumpslow或pt-query-digest進行深入分析。 3.優化慢查詢可以通過索引優化、查詢重寫和避免使用SELECT*來實現。

如何監視MySQL Server的健康和性能?如何監視MySQL Server的健康和性能?Apr 26, 2025 am 12:15 AM

要監控MySQL服務器的健康和性能,應關注系統健康、性能指標和查詢執行。 1)監控系統健康:使用top、htop或SHOWGLOBALSTATUS命令查看CPU、內存、磁盤I/O和網絡活動。 2)追踪性能指標:監控查詢每秒數、平均查詢時間和緩存命中率等關鍵指標。 3)確保查詢執行優化:啟用慢查詢日誌,記錄並優化執行時間超過設定閾值的查詢。

比較和對比Mysql和Mariadb。比較和對比Mysql和Mariadb。Apr 26, 2025 am 12:08 AM

MySQL和MariaDB的主要區別在於性能、功能和許可證:1.MySQL由Oracle開發,MariaDB是其分支。 2.MariaDB在高負載環境中性能可能更好。 3.MariaDB提供了更多的存儲引擎和功能。 4.MySQL採用雙重許可證,MariaDB完全開源。選擇時應考慮現有基礎設施、性能需求、功能需求和許可證成本。

MySQL的許可與其他數據庫系統相比如何?MySQL的許可與其他數據庫系統相比如何?Apr 25, 2025 am 12:26 AM

MySQL使用的是GPL許可證。 1)GPL許可證允許自由使用、修改和分發MySQL,但修改後的分發需遵循GPL。 2)商業許可證可避免公開修改,適合需要保密的商業應用。

您什麼時候選擇InnoDB而不是Myisam,反之亦然?您什麼時候選擇InnoDB而不是Myisam,反之亦然?Apr 25, 2025 am 12:22 AM

選擇InnoDB而不是MyISAM的情況包括:1)需要事務支持,2)高並發環境,3)需要高數據一致性;反之,選擇MyISAM的情況包括:1)主要是讀操作,2)不需要事務支持。 InnoDB適合需要高數據一致性和事務處理的應用,如電商平台,而MyISAM適合讀密集型且無需事務的應用,如博客系統。

在MySQL中解釋外鍵的目的。在MySQL中解釋外鍵的目的。Apr 25, 2025 am 12:17 AM

在MySQL中,外鍵的作用是建立表與表之間的關係,確保數據的一致性和完整性。外鍵通過引用完整性檢查和級聯操作維護數據的有效性,使用時需注意性能優化和避免常見錯誤。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。