仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 824|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL编程:快照复制

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:25:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
“MySQL实际上是一个数据库家族,你可以从选择一个并将其配置成可以满足你的大多数情况,”开源顾问公司Ethiqa的总裁如此表示,“因此,你可以在开始的时候选择一个小巧的版本产品,以后再根据需要来对其进行性能或大小上的扩展。”16.3.1快照复制概述
快照复制就是在某一时候对出书数据举行一次“拍照”,天生一个形貌出书数据库中数据瞬时形态的静态文件,最初在划定工夫将其复制到订购者数据库。快照复制其实不像事件复制那样要不休地监督、跟踪在出书数据库中产生的数据变更,它所复制的内容不是INSERT、UPDATE、DELETE语句(事件复制的特性),也不是仅限于那些被修正数据(兼并复制的特性)。它实践上是对订购数据库举行一次阶段性的表革新,把一切出书数据库中的数据从源数据库送至方针数据库,而不单单是那些产生了变更的数据。假如论文很年夜,那末要复制的数据就良多,因而对收集资本需求较高,不但要有较快的传输速率,并且要包管传输的牢靠性。
快照复制是最为复杂的一种复制范例,可以在出书者和订购者之间包管事件的潜伏分歧性。快照复制一般利用在以了局合:不必要及时数据时,如在举行决议撑持、查询静态表信息时;只读订购者(订购者不合错误出书数据举行修正),而且不必要比来的数据;利用当即更新订购者时对数据库的修正次数和数据量较少。
快照复制的实行仅必要快照代办署理和分发代办署理。快照代办署理筹办快照文件(包含出书表的数据文件和形貌文件)并将其存储在分发者的快照文件夹中,除此以外快照代办署理还要在分发者的分发数据库中跟踪同步功课。分发代办署理将在分发数据库中的快照功课分发至订购者服务器的目标表中。分发数据库仅用于复制而不包含任何用户表。
每次快照代办署理实行时,都要创立将被分发至订购者的数据文件和形貌文件(也称为同步汇合)。快照代办署理次要经由过程以下几步来完成这一事情(见6-24)。

(1)从分发者到出书者的毗连并在出书物论文中的一切表上加了共享锁。共享锁是为了确保快照数据的分歧性,由于共享锁将避免一切的别的用户对表举行修正。快照代办署理应当被布置在数据库举动较少时代实行。

(2)快照代办署理又创建从出书者到分发者的毗连,并将每个表的表形貌拷贝至分发者上的一个.sch文件中,该文件存储在分发数据库事情目次下的一个子目次。假如出书物中包含索引和声明的参考完全性,则快照代办署理将一切被选择的索引写进分发者的.idx文件中。

(3)快照代办署理对出书者的出书表的数据实行一次快照,并把这些数据写进分发者上的一文件傍边。该文件存储在分发数据库的事情目次下的一个子目次中,假如订购者有SQLServer,则快照被做为.bcp文件存储;假如一个或多个订购者是异构数据库源,则快照被做为字符形式的.txt文本文件存储同步汇合包含.sch和.bcp文件,出书物中每篇论文都有一个同步汇合。

(4)快照代办署理向分发数据库的Msrepl_commands和Msrepl_trnsactions表中拔出新行。Msrepl_command表中的每一个纪录是指明同步汇合和出书者等地位的命令,Msrepl_trnsactions表中的每笔记录是援用订购者同步义务的命令。

(5)快照代办署理最初开释在每个论文上的共享锁。

每次为快照代办署理运转的分发代办署理将数据和形貌文件分发给订购者。分发代办署理经由过程以下几步来完成该义务:
(1)分发代办署理从其地点的服务器向分发者服务器创建毗连,关于推订购,分发代办署理位于分发者服务器上;关于拉订购,分发代办署理位于订购者上。

(2)分发代办署理反省分发者的分发数据库中的Msrepl_commands和Msrepl_trnsactions表从第一个表,读取同步汇合的地位并从这两个表读取订购者的同步义务。

(3)分发代办署理将在订购数据库中使用在分发数据库的Msrepl_commands和Msrepl_trnsactions表中发明的命令,从而将数据文件和形貌文件复制到订购者服务器上。假如订购者不是SQLServer数据库,则分发代办署理将按请求转换数据范例。在出书物中的一切论文都将被同步并在各表中坚持事件和参考完全性。
当有良多的订购者时,应让分发代办署理运转在订购者服务器上,即便用拉订购。如许能够加重分发者负载,进步其功能。假如利用推订购,只需订购者订购出书物或在出书物创立时所计划的工夫光降,快照代办署理城市被实行。可是在快照代办署理实行的计划工夫光降时,只要那些没有被同步的订购者才会被同步。

16.3.2创立快照复制出书物在SQLServer中,使用CreatePublicationWizard能够指定哪一个数据库为出书数据库,选择表或存储历程来创立论文从而创立复制出书物。

注重:要创立复制出书物必需其有sysadmin服务器脚色。出书物不克不及跨多个用户数据库。

利用SQLServerEnterpriseManager创立复制出书物需实行以下步骤:
(1)启动SQLServerEnterpriseManager,选中出书者服务器。
(2)在主菜单当选择Tools,鄙人拉菜单当选择Replication,然后选择CreateandManagePublications选项,此时会翻开CreateandManagePublicationsOn‘publisher’对话框。如6-25所示:
(3)在DatabasesandPublications框当选择筹办出书的数据库然后中选择CreatePublication选项,翻开CreatePublicationWizard对话框,选中showadvancedoptioninWizard,如6-26所示。

(4)单击“下一步”,翻开ChoosePublicationDatabase对话框,如6-27所示。从Database框中能够选择将出书哪一数据库的表、视图或存储历程。

(5)选择指定的出书数据库后,单击“下一步”,翻开SelectPublicationType对话框,如6-28所示,从当选择所利用的复制范例。

(6)单击“下一步”,按钮翻开UpdatableSubscriptions对话框,如6-29所示。Immediateupdating选项暗示订购者在对复制数据更新后,当即将这些变更反应到出书者;Queuedupdating选项暗示订购者在对复制数据更新后,起首将这些更新事务包裹在动静中,并将这些动静存储在订购者和分发者的动静行列中,然后行列浏览代办署理将从分发者的动静行列中读取这些更新事务,并将其使用到分发者上。能够选择恣意一个选项,也能够将其都选中。假如不做出选择,则单击“下一步”以后将翻开TransformPublishedData对话框与(Imme-diateupdating和Queuedupdating复制选项和TransformPublishedData有关的成绩,我们将在“16.6复制选项”一节做具体先容)。在此我们选择Queuedupdating。

(7)单击“下一步”,翻开SpecifySubscriberTypes对话框,如6-30所示。SQLServer2000供应了三品种型订购者;SQLServer2000订购者,SQLServer7订购者和异构订购者。假如选择了SQLServer7订购者范例,则一些SQLServer2000的新增特征将没法利用。在这里我们选择ServerrunningSQLServer2000选项。

(8)单击“下一步”按钮,翻开SpecifyArticles对话框,如6-31所示在SQLServer2000中,出书物不但能够是表,存储历程,并且也能够是视图。左面的表格用来断定出书物包含哪些品种的数据库工具,好比您选中Table旁的复选框,则会在左面的表格中显现出书数据库中一切用户自界说的表,假如筹办让您的论文包含某个表就选中该表对应的复选框。Showunpublishedobjects复选框用来断定是不是在左面的表格中显现未被出书的数据库工具。

(9)单击表格中被出书的表右侧的方框按钮翻开论文属性对话框,如6-32所示,General标签页次要显现论文(表)的基础信息,包含论文名,有关论文的形貌、出书表的一切者、表名和方针表的一切者。

(10)选择Snapshot标签,如6-33所示。

注重:由于快照复制是将出书数据包含表的布局形貌文件和数据文件经由过程当分发野生理复制到订购者,且订购者在初始同步时已在订购数据库中创立了同名、同布局的表,那末订购者是怎样吸收这些复制数据呢?可接纳以下几种体例:将表删除后再重修;删除那些与从出书者复制过去的数据相婚配的数据行,而保存不婚配的数据行;删除表中数据但保存表布局;不删除表和表中数据,而将数据增加到表中。
在NameConflict地区能够选择一种数据吸收体例,即名字抵触的办理体例。在Copyobjectstodestination地区设置在将主键索引拷贝到方针数据库的同时是不是也将复制别的选项,好比出书表上的聚簇索引或非聚簇索引、参照完全性束缚、用户自界说的触发器等。Convertuser_definedtobasedatatype复选框用来断定是不是将出书表顶用户和自界说数据范例在复制到方针表后转换成其源数据范例(SQLServer撑持的基础数据范例)。
(11)单击“断定”按钮,回到SpecifyArticle对话框,然后单击“下一步”按钮,翻开ArticleIssue对话框,如6-34所示。
(12)翻开SelectPublicationNameandDescription对话框,如6-35所示。在Publicationname文本框中输出出书物的称号;在Publicationdescription文本框中输出有关出书物的形貌笔墨。
我们倡议除默许了形貌信息外,应当输出别的一些信息,如许当在该出书数据上创立多个出书物不至于搅浑。

(13)单击“下一步”,翻开CustomizethePropertiesofthePublication对话框,如6-36所示。
可经由过程选中Yes或No选项来决意是不是对有关出书物的别的属性项举行自界说设置或利用SQLServer的默许设置。在滑动框内能够扫瞄出书物的默许属性。在这里我们选择Yes,Iwilldefinedatafilters…选项。

(14)单击“下一步”翻开FilterData对话框,如6-37所示。假如筹办进步使用程序功能,进步复制数据在收集上的传输速率,全力削减订购数据库存储和保护复制数据的数据量,则应依据各订购者对数据的详细请求选择得当的过滤范例,如垂直过滤或程度过滤。在这里我们将两个选项全体选中。

(15)单击“下一步”按钮,翻开FilterTableColumn对话框,如6-38所示。在Columnsinselectedtable下的表格内清空右边的复选框暗示出书论文中不包含该列。

注重:兼并复制不撑持表的垂直支解,即不克不及举行列过滤(只复制某些列),不同意论文件中不包含主键列。若设置了当即更新订购者选项,则不克不及同意论文中不包含不时戳(timestamp)列。
(16)单出“下一步”,翻开filtertablerows对话框,如6-39所示。从表格当选中要举行过滤的论文,然后单击该行最右侧的按钮,翻开specifyfileter对话框,如6-40所示。在该对话框的空缺地区输出过滤前提。在本例中利用以下前提:au_idlike20%.

注重:在空缺地区输出的不是全部select语句,也不用输出where关头字,只需在where关头字后输出前提表达式便可,前提表达中呈现的列必需包括在出书表中。
(17)单击“下一步”,翻开AllowAnonymousSubscribers对话框,如6-41所示,选择Yes暗示同意匿名订购者订购出书物;选择NO暗示只要那些被启用为订购者脚色的服务器才能够订购出书物。

注重:匿名订购者是对照出格的拉订购。由于一般情形下,出书者存储保护与订购者有关的信息,分发者存储保护与订购者功能有关的信息。为了不因存储保护这些信息而使体系负载太重,常利用匿名订购者,特别有多个订购者且经由过程Internet举行出书复制。
(18)单击“下一步”,弹出SetSnapshotAgentSchedule对话框,如6-42所示。假如选中Createthefirstsnapshotimmediately暗示在单击“下一步”按钮后会当即创立快照若不利用默许的快照代办署理实行工夫设置,可单击Change按钮举行设置。

(19)单击“下一步”,翻开创立出书物完成对话框,如6-43所示。在滑动窗口可扫瞄出书物的创立信息,若想变动某些设置,可按“上一步”,回到上个对话框。单击“Finish”,完成出书物创立。


16.3.3订购出书物
在创立完出书物以后,必需订购出书物才干完成数据的复制。在订购出书物之前应在订购者上创立订购数据库。在订购时要举行以下选项的设置:
由哪些订购者来订购出书物
选择方针(订购)数据库
订购属性
在SQLServerEnterpriseManager中,使用推(拉)订购导游来订购出书物需实行以下步骤:
(1)启动SQLServerEnterpriseManager,选中出书者服务器。
(2)在主菜单当选择Tools,鄙人拉菜单当选择Replication,然后选择PushSubscriptionstoOthers选项,此时会翻开CreateandManagePublicationsOn‘publisher’对话框。单击出书数据库旁的“+”,会显现以后出书数据库中的一切出书物。如6-44所示。
(3)选中将被订购的出书物,单击PushNewSubscription按钮,翻开WelcometothePushSubscriptionWizard对话框,选中showadvancedoptioninthewizard复选框。单击“下一步”翻开ChooseSubscribers对话框。如6-45所示。
(4)在EnabledSubscribers下选择已被启用的订购者,单击“下一步”翻开ChooseDestinationdatabases对话框,如6-46所示。
(5)在Subscriptiondatabasename下的编纂框中输出方针数据库称号,或单击Browseorcreate按钮,将会弹出Browsedatabases对话框。在空缺框中列出选中订购者上的一切数据,从当选择某个数据库来筹办吸收复制数据,也能够单击“CreateNew”来创立新订购数据库。

(6)单击“下一步”,翻开SetDistributionAgentSchedule对话框,如6-47所示。假如但愿出书者与订购者之间敏捷完成数据的分歧性,可选择Continuously选项,暗示分发代办署理处于不休的运转形态。选择Usingthefollowscheduling暗示在计划的工夫运转分发代办署理。
(7)单击“下一步”弹出InitializeSubscription对话框,如6-48所示,订购初始化是指快照代办署理入手下手运转并在订购者天生同步汇合(形貌文件和数据文件),随后分发代办署理将同步汇合分发到订购者。假如已举行手工同步,则不用举行订购初始化。Yes,initializetheschemaanddataatthesubscriber选项暗示由SQLServer来完成订购初始化事情。

(8)单击“下一步”,翻开UpdatableSubscription对话框,如6-49所示。其各选项的详细寄义请参看“16.6复制选项”一节。
(9)单击“下一步”,翻开StartRequiredService对话框,如6-50所示,在该对话框的表格内列出运转同步处置的服务。一切复制范例都必要启动SQLServerAgent,假如是当即更新订购者的快照复制和事件复制,则还必要MSDTC。若选中右边的复选框,则订购创立后该服务就会主动启动,不然必需今后手工启动。

(10)单击“下一步”,翻开CompletingthePushSubscriptionWizard对话框,如6-51所示。单击“完成”,停止订购创立操纵。


16.3.4办理出书物
在创立出书物停止以后,或在设置了拉或推订购以后,仍可对尽年夜多半复制选项举行从头设置。个中次要包含:论文的内容、订购的属性、快照文件的地位、具有存掏出版物的用户、复制更新相干选项等。并且也能够将出书物删除,从头创立新的出书物。在EnterpriseManager中,关于出书物相干的复制选项举行从头设置要实行以下步骤:
(1)单击Tools菜单项,鄙人拉菜单当选择Replication,然后再选择CreateandManagePublication选项,翻开对话框。
(2)在DatabasesandPublications当选中已创立的出书物,然后再单击PropertiesandSubscriptions按钮,翻开PublicationProperties对话框,如6-52所示。经由过程选中各相干标签页,能够从头对其属性举行设置,各选项的详细寄义请参看本章后面所作的先容。
由于在MySQL中有如此众多的额外功能可选,诸如存储引擎等,你可以选择最适合你公司的一个,或者尝试选用多个引擎。MySQL开始非常小巧,但是可以随着公司的成长而不断地变强大。
兰色精灵 该用户已被删除
沙发
发表于 2015-1-19 11:39:13 | 只看该作者
呵呵,这就是偶想说的
蒙在股里 该用户已被删除
板凳
发表于 2015-1-28 06:23:33 | 只看该作者
很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。
金色的骷髅 该用户已被删除
地板
发表于 2015-2-5 19:26:47 | 只看该作者
如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。
柔情似水 该用户已被删除
5#
发表于 2015-2-13 07:43:43 | 只看该作者
连做梦都在想页面结构是怎么样的,绝非虚言
飘灵儿 该用户已被删除
6#
发表于 2015-3-3 19:21:34 | 只看该作者
我们学到了什么?思考问题的时候从表的角度来思考问
冷月葬花魂 该用户已被删除
7#
发表于 2015-3-11 13:01:04 | 只看该作者
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
灵魂腐蚀 该用户已被删除
8#
发表于 2015-3-18 20:20:35 | 只看该作者
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
萌萌妈妈 该用户已被删除
9#
 楼主| 发表于 2015-3-26 15:24:21 | 只看该作者
对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-16 10:50

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表