sql2005主从数据库同步配置

网站规模到了一定程度之后,该分的也分了,该优化的也做了优化,但是还是不能满足业务上对性能的要求;这时候我们可以考虑使用主从库。主从库是两台服务器上的两个数据库,主库以最快的速度做增删改操作+最新数据的查询操作;从库负责查询较旧数据,做一些对实效性要求较小的分析,报表生成的工作。这样做将数据库的压力分担到两台服务器上从而保证整个系统响应的及时性。如果还无法满足业务需求,我们就要考虑创建服务器群,这里我们不做考虑!

1. 打开sql server企业管理器,在对象资源管理器里面选择复制à本地发布,右键选择新建发布

  2. 打开新建发布向导,点下一步,选择发布数据的数据库

3. 我们选择Test数据库,并点击下一步,选择发布类型

4. 点击下一步,选择要发布的对象,这里我们只对表进行发布

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. 以订单为例,通常超过三个月的订单就不会再有变化了,假定我们把订单号设计为日期格式时,根据订单号去查询订单时就可以根据订单号来决定该访问主库还是从库。

举了几个适用的场景,我们以第三个场景为例,写一段简单的示意代码看下

 

public OrderInfo GetOrder(string orderNo) {string connString = ConnStringGetter.GetForOrder(orderNo);using (SqlConnection conn = new SqlConnection(connString)){...}}public class ConnStringGetter{public 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.ConnectionStrings["CONN_Slave"].ConnectionString; return ConfigurationManager.ConnectionStrings["CONN_Master"].ConnectionString; } }

 

转载:http://blog.csdn.net/wanmdb/article/details/7515277

正确的使用主从库,可以很好的提升系统的性能。使用主库还是从库的选择权决定在业务逻辑的手里。

SQL Server 2008 R2 主从数据库同步设置:http://www.cnblogs.com/webapi/p/5283866.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

InceptionV2----Batch Normalization层

一、BN层的操作 1.BN层的操作位置:在非线性映射之前,目的是为了减少梯度消失和梯度爆炸。 1.对输入的x做归一化 2.增加2个参数,提高模型表达能力 3.理想情况下E和Var应该是针对整个数据集的,但显然这是不现实的。因此,…

前端技术之_CSS详解第五天

前端技术之_CSS详解第五天 一、行高和字号 1.1 行高 CSS中&#xff0c;所有的行&#xff0c;都有行高。盒模型的padding&#xff0c;绝对不是直接作用在文字上的&#xff0c;而是作用在“行”上的。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu…

pxe装机dhcp获取不到_关于PXE服务器环境搭建流程中遇到的问题及解决方法

环境准备中遇到的问题首先需要将系统镜像挂载到 /mnt&#xff1a;#mount /dev/sdd2 /mnt/usb_disk 将U盘挂载#cp rhel-server-7.6-x86_64-dvd.iso /home 系统镜像拷到本地#mount -o loop rhel-server-7.6-x86_64-dvd.iso /mnt问题&#xff1a;ifconfig命令未找到解决&#xff1…

一小时包教会 —— webpack 入门指南

什么是 webpack&#xff1f; webpack是近期最火的一款模块加载器兼打包工具&#xff0c;它能把各种资源&#xff0c;例如JS&#xff08;含JSX&#xff09;、coffee、样式&#xff08;含less/sass&#xff09;、图片等都作为模块来使用和处理。 我们可以直接使用 require(XXX) 的…

java 简单图片浏览器_Java实现简单的图片浏览器

第一次写博客&#xff0c;不喜勿喷。最近一个小师弟问我怎么用Java做图片浏览器&#xff0c;感觉好久没玩Java了&#xff0c;就自己动手做了一下。学校的教程是用Swing来做界面的&#xff0c;所以这里也用这个来讲。首先要做个大概的界面出来&#xff0c;eclipse有一个很好用的…

60. Spring Boot写后感【从零开始学Spring Boot】

从2016年4月15日到2016年7月20日经历长达3个月的时间&#xff0c;【从零开始学习Spring Boot】系列就要告一段落了。国内的各种资源都比较乱或者是copy 来copy去的&#xff0c;错了也不加以修正下&#xff0c;导致通过百度找到的资源可能都是错误的&#xff0c;正是由于这么一种…

五角星

import turtle turtle.setup(600,400,0,0) turtle.bgcolor(red) turtle.color(yellow) turtle.fillcolor(yellow) turtle.begin_fill() for i in range(5):turtle.forward(200)turtle.right(144) turtle.end_fill()turtle.done()转载于:https://www.cnblogs.com/Paris-YY/p/900…

java customerservlet_顾客管理系统java+servlet

首先我先搭好网页的框架先写一个登陆的html&#xff0c;名字是login.html1)在js中跳转页面的方法&#xff0c;我这里用的是get提交&#xff0c;只传递了一个name。function mylogin() {var usernamedocument.getElementById("name").value;window.location.href"…

mysql给root开启远程访问权限,修改root密码

1.MySql-Server 出于安全方面考虑只允许本机(localhost, 127.0.0.1)来连接访问. 这对于 Web-Server 与 MySql-Server 都在同一台服务器上的网站架构来说是没有问题的. 但随着网站流量的增加, 后期服务器架构可能会将 Web-Server 与 MySql-Server 分别放在独立的服务器上, 以便得…

Qt_Window@Qt Command Prompt从命令行创建工程

#include <QApplication> #include <QLabel>int main(int argc, char *argv[]) {QApplication app(argc, argv);QLabel *label new QLabel("Hello Qt!");label->show();return app.exec(); }第1 行和第2 行包含了两个类的定义&#xff1a;QApplicat…

linux中的守护进程

一、守护进程守护进程&#xff0c;也叫精灵进程&#xff08;daemon&#xff09;它和普通后台进程的区别在于以下三点1、守护进程自成会话&#xff0c;而普通后台进程则不一定2、守护进程不受终端的控制3、守护进程就是后台进程&#xff0c;而后台进程不同于守护进程用ps axj命令…

mysql主从复制 lvs+ keepalived

2019独角兽企业重金招聘Python工程师标准>>> 一、环境 Master&#xff08;主机A&#xff09;&#xff1a;192.168.1.1 Slave&#xff08;主机B&#xff09; &#xff1a;192.168.1.2 W-VIP&#xff08;写入&#xff09; &#xff1a;192.168.1.3 R-VIP&#xff…

php 逗号编码,php有几种编码

当前 mbstring 模块支持以下的字符编码。这些字符编码中的任意一个都能指定到 mbstring 函数中的 encoding 参数。该 PHP 扩展支持的字符编码有以下几种&#xff1a;UCS-4*UCS-4BE (推荐学习&#xff1a;PHP视频教程)UCS-4LE*UCS-2UCS-2BEUCS-2LEUTF-32*UTF-32BE*UTF-32LE*UTF-…

jmeter命令行运行-分布式测试

秒秒开心jmeter命令行运行-分布式测试 上一篇文章我们说到了jmeter命令行运行但是是单节点下的&#xff0c; jmeter底层用java开发&#xff0c;耗内存、cpu&#xff0c;如果项目要求大并发去压测服务端的话&#xff0c;jmeter单节点难以完成大并发的请求&#xff0c;这时就需要…

ambari 自定义组件安装

借鉴&#xff1a;http://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari3/index.htmlAmbari 在启动的时候&#xff0c;会扫描 resource 目录下 Stack 下面的 service 配置。也就是每个 Service 的 metainfo.xml&#xff0c;同时会将这些配置信息放在自己的数据…

android 双向滑动 seekbar

实现原理&#xff1a;1、自定义View&#xff0c;在onDraw(Canvas canvas)中&#xff0c;画出2个Drawable滑动块&#xff0c;2个Drawable滑动条&#xff0c;2个Paint&#xff08;text&#xff09;2、监听onTouchEvent()事件&#xff0c;修改滑块和滑动条的坐标&#xff0c;调用i…

java开发区块链只需150行代码

本文目的是通过java实战开发教程理解区块链是什么。将通过实战入门学习&#xff0c;用Java自学开发一个很基本的区块链&#xff0c;并在此基础上能扩展如web框架应用等。这个基本的java区块链也实现简单的工作量证明系统。本文用一个java例子,演示了开发一个区块链应用的过程,涉…

按钮长按

2019独角兽企业重金招聘Python工程师标准>>> 用update来实现定时 //长按处理update: function (delta) {cc.log("update "delta);this.totalTimedelta;if(this.totalTime>TOUCH_LONG_TIMER_INVOKE){this.stopTimer();this.invokeTouchLong();}},stop…

Git-如何将已存在的项目提交到git

1.首先在码云或者github上创建一个不带README.md的项目&#xff0c;然后复制远程库的地址&#xff08;下面以码云为例&#xff09;&#xff1a;   2.进入本地已存在的项目目录&#xff1a;house    touch README.md //新建说明文件 git init //在当前项目目录中生成本地git…

ggplot2 theme相关设置—文本调整

在geom设置和scale设置之后&#xff0c;要想把图画的漂亮&#xff0c;theme设置是比不可少的 在theme 设置中element_text()是一项很重要的内容 element_text(family NULL, face NULL, colour NULL, size NULL, hjust NULL, vjust NULL, angle NULL, lineheight NULL) …