分类: Mysql/postgreSQL
2011-04-07 21:29:55
sql 2005 读写分离
一、准备工作:
1.建立一个 WINDOWS 用户,设置为管理员权限,并设置密码,作为发布快照文件的有效访问用户。
2.在SQL SERVER下实现发布服务器和订阅服务器的通信正常(即可以互访)。打开1433端口,在防火墙中设特例
3.在发布服务器上建立一个共享目录,作为发布快照文件的存放目录。例如:在D盘根目录下建文件夹名为SqlCopy
4.设置SQL 代理(发布服务器和订阅服务器均设置)
打开服务(控制面板---管理工具---服务)
---右击SQLSERVER AGENT---属性---登录---选择“此帐户“
---输入或选择第一步中创建的WINDOWS 用户
---“密码“中输入该用户密码
5.设置SQL SERVER 身份验证,解决连接时的权限问题(发布、订阅服务器均设置)
步骤为:对象资源管理器----右击SQL实例-----属性----安全性----服务器身份验证------选“SQL Server和WINDOWS“,然后点确定
6.开启SQL Server 2005的网络协议TCP/IP和管道命名协议并重启网络服务。
7.在SQL Server中创建步骤1中对应的系统用户登陆名,作为发布数据库的拥有者(设置为dbo_owner和public)。
8.以系统超级用户sa登陆SQL Server建立数据库和表。
9.发布服务器和订阅服务器互相注册
步骤如下:视图----单击以注册服务器----右键数据库引擎----新建服务器注册-----填写要注册的远程服务器名称------身份验证选“SQL Server验证“-----用户名(sa) 密码------创建组(也可不建)-----完成。
10.对于只能用IP,不能用计算机名的,为其注册服务器别名
二、开始:
发布服务器配置(在发布服务器上配置发布和订阅)
1. 选择 复制 节点
2. 右键本地发布 ----下一步---------系统弹出对话框看提示----直到“指定快照文件夹“
----在“快照文件夹“中输入准备工作中创建的目录(指向步骤3所建的共享文件夹)------选择发布数据库-------选择发布类型-------选择订阅服务器类型-------选择要发布的对象------设置快照代理-------填写发布名称。
3. 右键本地订阅--------选择发布服务器-------选择订阅方式(如果是在服务器方订阅的话选择推送订阅反之选择请求订阅)-------填加订阅服务器--------选择代理计划(一般选择连续运行)---------其余选择默认项。
至此, SQL SERVER 2005 同步复制就完成了。使用复制技术,用户可以将一份客户端的数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性,就无需编程实现客户端和服务器端数据同步了!大大提高了工作效率!
在安装完Microsoft SQL Server 2005 后,发现从Microsoft SQL Server Management Studio 连接到服务器时,如果在服务器名称处填写的不是机器名,而是IP地址时,连接总是提示失败,提示信息为:
无法连接到10.114.*.*
其他信息:
已成功与服务器建立连接,但是在登录过程中发生错误。(provider:命名管道提供程序,error:0-管道的另一端上无任何进程。)(Microsoft SQL Server,错误:233)
解决方法:打开“开始—所有程序—Microsoft SQL Server 2005 —配置工具—SQL Server 配置管理器”,在弹出的窗体中,找到“SQL Server 2005 网络配置”,把“MSSQLSERVER的协议”下的“Named Pipes”和“TCP/IP”启用,然后重新启动SQL Server 即可。
一、 MSSQL2005复制(订阅,发布)的概念:
(关于MSSQL2005/2008复制的功能请查看:页面的目录,目录内包含了非常详见的复制的介绍,以及相关的例子。)
1) 复制的概念:
复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。
2) 复制的基本元素:出版服务器(也叫发布服务器—原服务器)、订阅服务器(目标服务器)、分发服务器(负责从原服务器中取数据、事务日志,并发送到目标服务器的服务器);
3) 复制的用途:实现多个数据库间的单向、双向同步,从而可实现MSSQL2005的集群,优化服务器集群的架构(例如:通过复制来实现——负载均衡,读写分离,系统按业务模块分库等)。
4) 复制的类型:
1. 快照复制(不断的更新所保存的快照内的内容,并将该快照全部复制到订阅服务器)。
2. 事务复制(普通事务复制,对等事务复制,双向事务复制),仅生成更新一次快照文件,之后将通过事务的方式更新订阅服务器,而不传递快照数据。
3. 合并复制,仅生成更新一次快照文件,之后定期合并数据。
5) 复制的前提:使用数据库快照,无论是任何类型的复制,均必须使用数据库快照,几种类型的不同之处在于,快照复制是
6) 复制功能中的代理类型:
1. 快照代理——应用于快照复制:
快照代理在分发者上创建并存储快照文件,任务是:在分发数据库中准备已发布表的架构和初始数据以及其他对象、存储快照文件并记录出版数据库和订阅服务器之间的同步信息,快照代理运行在分发者服务器上,并与出版者相连接。每一个出版物都有自己的快照代理。与各种类型的复制一起使用。
2. 日志阅读代理——应用于事务复制
日志读取器代理与事务性复制一起使用。它将发布服务器上的事务日志中标记为复制的事务移至分发数据库中。使用事务性复制发布的每个数据库都有自己的日志读取器代理,该代理运行于分发服务器上并与发布服务器连接(分发服务器与发布服务器可以是同一台计算机)。
3.分发代理——应用于快照复制,事务复制
分发代理与快照复制和事务性复制一起使用。它将初始快照应用于订阅服务器,并将分发数据库中保存的事务移至订阅服务器。分发代理既可以运行于分发服务器(对于推送订阅),也可运行于订阅服务器(对于请求订阅)。
4.合并代理——应用于合并复制
合并代理与合并复制一起使用。它将初始快照应用于订阅服务器,并移动和协调所发生的增量数据更改。每个合并订阅都有自己的合并代理,该代理同时连接到发布服务器和订阅服务器并对它们进行更新。合并代理既可以运行于分发服务器(对于推送订阅),也可以运行于订阅服务器(对于请求订阅)。默认情况下,合并代理将订阅服务器上的更改上载到发布服务器,然后将发布服务器上的更改下载到订阅服务器。
5. 队列阅读代理——应用于事务复制
队列读取器代理与包含排队更新选项的事务性复制一起使用。该代理运行于分发服务器,并将订阅服务器上所做更改移回至发布服务器。与分发代理和合并代理不同,只有一个队列读取器代理的实例为给定分发数据库的所有发布服务器和发布提供服务。
7) 复制的机制:请求订阅,推送订阅
1.请求订阅:将上面提到的代理运行于订阅服务器内,由订阅服务器向发布服务器发送复制请求(这个过程使用日志阅读代理),并将日志或者数据发送到订阅服务器内(这个过程使用分发代理)。
推送订阅:将上面提到的代理运行于分发服务器(或者发布服务器),由分发(发布服务器)连续的读取数据或日志(这个过程使用日志阅读代理),并将日志或者数据发送到订阅服务器(这个过程使用分发代理)。
注意:请求订阅与推送订阅各有优点:推送订阅使集中管理订阅同步变得更加简单。而请求订阅降低了分发服务器数据处理工作的开销,并使每个订阅服务器管理其订阅的同步。所以如果订阅服务器过多,请适用请求订阅的机制。
一、 快照复制:快照复制传递的是数据 1) 快照复制原理:发布服务器按预定的时间间隔向订阅服务器发送已发布数据的快照。 2) 快照复制实施步骤: 1. 先在发布服务器上建立针对全部/具体表,视图,存储过程,函数的发布本地发布。 2. 在订阅服务器内,右击《本地订阅》—》新建订阅。 3. 后面也就不叙述了。。很简单。 3) 快照复制的优点: 1.由于不是实时同步,所以可以大大提高订阅服务器与发布服务器的性能 2.在快照复制中,由于相邻两次复制数据的传递间隔时间较长,则允许订购者与出版者不必保持永久连接。 4) 快照复制的缺点: 1. 不是实时同步,会导致两台服务器见的数据库数据不一致,适合变更不频繁的业务。 2. 如订阅服务器中有10G的数据,而在一个快照复制的周期内,只有1M的数据发生了更改。此时发生快照复制的话,数据库系统会将10G的数据都传送到订阅服务器上。所以适合小数据量的同步。 3. 快照复制是单相的,无法实现两台机器的双向复制。 5)快照复制的适用范围: 1.适合小数据量的同步。 适合不需要实时数据的业务逻辑。(如:报表等) |
对等复制设计的初衷:是用来针对在不同时间, 只有对应时区有业务数据的情况,如果你是多个地方同时有数据发生变化或增加,那么一定会出现冲突。。。 注:MSSQL2005对等复制无法解决多台数据库服务器并发同步的问题,而在MSSQL2008中虽然加入了 对等复制的冲突检测功能,依然无法避免冲突的产生:以下情况均会产生冲突: ( 每个表中所有参与对等复制的行都使用主键值进行唯一标识。在将具有相同键值的行插入到多个节点时,会发生插入-插入冲突。 在多个节点上更新了同一行时发生。 在以下情况下发生:在一个节点上更新了某行,但是在另一个节点上删除了该行,然后又重新插入该行。 在以下情况下发生:在一个节点上删除了某行,但是在另一个节点上删除了该行,然后又重新插入该行。 在以下情况下发生:在一个节点上更新了某行,但是在另一个节点上删除了该行。 在多个节点上删除了同一行时发生。 ) 一、事务复制:在订阅服务器收到已发布数据的初始快照后,发布服务器将事务流式传输到订阅服务器。 1) 普通事务复制: 1. 普通事务复制原理:不介绍了 2. 普通事务复制实施步骤:不介绍了 3. 普通事务复制的优点: n 只传递事务日志文件,节省性能。 n 可连续实时的更新,也可设定具体的时间进行更新。 4. 普通事务复制的缺点: n 单向同步,而非双向同步。 n 连续传递,增加了数据库与网络的负载。 5. 适用范围:适用快照复制的业务均适用于普通事务复制 2) 对等事务复制: 1. 事务复制原理:不多介绍了 2. 对等事务复制实施步骤: 3. 对等事务复制的优点: ü 实时同步,千行插入同步时间在1秒以内(100m独享带宽)。 ü 可通过对等复制来实现 多系统的分库 以及 数据库的双向读写分离。 4. 对等事务复制的缺点: ü 对等复制是双向且连续的,所以会增加N台服务器的性能开销与带宽。 ü 出现数据间的冲突(不一致),因而需要一个合理的解决冲突的办法。 5. 适用范围:在未采购任何负载均衡硬件设备的前提下,可适用对等复制实现简单的负载均衡集群架构。 6. 如何为对等事务复制配置冲突检测: 1) 双向事务复制:比对等事务日志在性能方面更加优化。微软尚未发布具体实现步骤。 如何进行双向事务复制:请参见: |