MSSqlServer中主从库的配置和使用介绍.doc_第1页
MSSqlServer中主从库的配置和使用介绍.doc_第2页
MSSqlServer中主从库的配置和使用介绍.doc_第3页
MSSqlServer中主从库的配置和使用介绍.doc_第4页
MSSqlServer中主从库的配置和使用介绍.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MS Sql Server 中主从库的配置和使用介绍作者:赵玉开出处:博客2010-08-31 10:02网站规模到了一定程度之后,该分的也分了,该优化的也做了优化,但是还是不能满足业务上对性能的要求;这时候我们可以考虑使用主从库。主从库是两台服务器上的两个数据库,主库以最快的速度做增删改操作+最新数据的查询操作;从库负责查询较旧数据,做一些对实效性要求较小的分析,报表生成的工作。这样做将数据库的压力分担到两台服务器上从而保证整个系统响应的及时性。SQL Server提供了复制机制来帮我们实现主从库的机制。我们看下如何在sql server 2005中实践:实践前需要新创建一个Test的数据库,这个库中建一个测试表。1. 打开sql server企业管理器,在对象资源管理器里面选择复制本地发布,右键选择新建发布2. 打开新建发布向导,点下一步,选择发布数据的数据库3. 我们选择Test数据库,并点击下一步,选择发布类型这里我们选择的是事务性发布,事务性发布保证数据在做更新之后尽可能快的分发到订阅服务器上。有关其他几种发布类型的使用场景请参考msdn4. 点击下一步,选择要发布的对象,这里我们只对表进行发布5. 点击下一步进入筛选数据设置,这里我们要复制表的所有数据所以不做设置6. 点击下一步,指定何时运行快照,我们选择初始话数据,并选择默认的运行快照频率7. 继续下一步,设置快照代理的运行账户,我们选择sql server agent账户8. 点击下一步选择创建发布,再次点击下一步设置发布的名称9. 点击完成,完成发布的设置,并创建发布,现在在本地发布出新添加了我们创建的发布现在成功创建了发布,我们还需要创建订阅:在本地订阅文件夹上右击新建订阅,通过向导可以很容易的创建订阅,创建订阅时可以选择以发布者推送或者订阅者主动的方式创建。具体步骤如下:1. 通过右键菜单打开新建订阅,点击下一步,选择我们刚刚创建的发布作为订阅源2. 选择是以推送还是以主动请求的方式同步数据,我们选择主动订阅3. 设置执行分发代理的账户4. 设置代理请求同步的频率5. 设定是否立即做数据的初始化操作6. 完成创建订阅创建完成之后,我们可以通过在主库表中插入n条数据,然后在从库中查询的方式验证复制是否成功。在Sql server2005中的复制创建起来很简单,我们需要根据业务需要设定复制的类型和同步的频率。下面我们具体看下主从库的几个使用场景和一个简单的小例子。主从库之间是一种发布订阅的关系,发布者和订阅者之间并非实时同步的,通常会有几分钟的延时,更有甚者会有几个小时的延时。所以我们需要通过合理的使用来避开有延时这个问题。我们希望主库尽可能的少参与查询,来提高写的及时性;同时要让从库在不影响读出数据的准确及时的前提下尽可能的分担主库的压力。主从两个库需要在配置文件中配置两个连接字符串,CONN_Master和CONN_Slave。我们需要设定一些规则决定当前的查询应该从主库查还是需要从从库查。这个规则没有定式,只能根据业务需要来确定。下面我举几个例子来说明:1. 以豆瓣读书书的详细页为假定场景,你可以点击这里看下页面的结构(我不是豆瓣的技术,在这里只是拿这个页面举例)我们来分析呈现这个页面需要的数据和这些数据的实效性要求1) 书的详细信息 时效性要求:要求及时2) 豆瓣成员的常用标签 实效性:不需要很及时3) 喜欢读这本书的人也喜欢读的书 属于分析数据,不需要很及时4) 最新书评 要求及时5) 读这本书的几个用户 及时性不高6) 喜欢这本书的人常去的小组 属于分析数据不需要很及时从上面的分析可以看出只有1),4)两项数据需要从主库读,而2),3),5),6)为非及时数据从从库读取即可。当然我们可以对这些实效性不高的数据做缓存处理。2. 以论坛帖子列表页面为假定场景,玩论坛的人都喜欢顶贴,把自己的帖子顶到第一页让更多的人关注,而对于50页之后的帖子则反读的人很少;我们可以根据这个业务逻辑特征来决定在用户访问前50页帖子列表数据时从主库读,而当用户访问超过50页之后的数据时则从从库进行查询。3. 以订单为例,通常超过三个月的订单就不会再有变化了,假定我们把订单号设计为日期格式时,根据订单号去查询订单时就可以根据订单号来决定该访问主库还是从库。举了几个适用的场景,我们以第三个场景为例,写一段简单的示意代码看下以下是代码片段:/orderNo 的格式为 20100528120105000001 即yyyyMMddHHmmss + 序号public OrderInfo GetOrder(string orderNo) string connString = ConnStringGetter.GetForOrder(orderNo);using (SqlConnection conn = new SqlConnection(connString).public class ConnStringGetterpublic static string GetForOrder(string orderNo) int year = int.Parse(orderNo.Substring(0,4);int money = int.Parse(orderNo.Substring(4,2);int date = int.Parse(orderNo.Substring(6,2);DateTime orderTime = new DateTime(year, money, date);TimeSpan ts = DateTime.Now - orderTime;/根据订单的时间决定使用主库还是从库if (ts.TotalDays 30) return ConfigurationManager.ConnectionStringsCONN_Slave.ConnectionString;return ConfigurationManager.ConnectionStringsCONN_Master.ConnectionString;正确的使用主从库,可以很好的提升系统的性能。使用主库还是从库的选择权决定在业务逻辑的手里。MySQL主从服务器复制同步设置分类:数据库2008-04-11 16:01269人阅读评论(0)收藏举报服务器mysql数据库fileuser主从服务器的复制,是通过主服务器的二进制日志实现。l开始前的准备在设置前先保证主从数据表的结构一致、数据一致,开始同步前的主数据日志偏移量。n同步前数据库的一致,可通过以下方法u数据文件的拷贝。拷贝时,除了拷贝DB的目录,还要拷贝DB根目录下的ibdata1文件u备份(mysqldump)恢复保持一致。n日志偏移量可以从当前主数据的进行查询uShow master status;l主数据库的设置n配置文件my.ini里,添加开启二进制日志及服务器IDmysqldlog-binserver-id=1n主数据添加复制用户,必须有文件权限:GRANT FILE ON *.* TO replicate127.0.0.1 IDENTIFIED BY password;也可以用rootl从服务器设置:n配置文件设置,添加服务器ID,一些连接设置mysqlddatadir=d:/mydata/dataport=3308log-bin=backlogserver-id=2master-host=localhostmaster-user=rootmaster-password=123#slave-skip-errors=all#master-port=3306#master-connect-retry=60#replicate-do-db=canaan#master_log_file=banybinlogl也可以通过命令修改复制参数:change master to MASTER_HOST=127.0.0.1, MASTER_USER=root, MASTER_PASSWORD=123, MASTER_LOG_FILE=banybinlog,RELAY_LOG_FI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论