>

读写分离,文章目录

- 编辑:www.bifa688.com -

读写分离,文章目录

SQL Server系列: 

在实际CITRIX平台中,不论是XenDesktop、XenApp,我们都知道会一个Data Store 的角色,而此角色后台数据库可是小型Access数据库,也可以是MSDE或是SQL的其他版本,当然也可以是Oracel88bifa必发唯一官网,DB2。而在很多环境中SQL Server 是用的最多的。而以前的SQL Server 2000,如果要实现高可用(HA),我们只能创建Cluster模式,而Cluster在搭建过程中有比较多的局限性。如:
1、必须要有共享数据存储
2、必须是在同一子网、局域网中,不可跨WAN.
3、数据存储依然存在单点故障

一、背景

高可用方案:

搭建域服务器和DNS

搭建Windows故障转移群集

SQL Server Alwayson概念总结

SQL Server AlwaysOn搭建

SQL Server Alwayson读写分离配置

SQL Server2016 Alwayson新增功能

SQL Server Alwayson创建代理作业注意事项

SQL Server Alwayson配置两个节点加共享文件夹仲裁见证

SQL Server Alwayson可用性副本会话期间的可能故障

SQL Server Alwayson上使用内存表"踩坑"

SQL Server 修改Alwayson共享网络位置

Windows Server2012 故障转移集群之动态仲裁(Dynamic Quorum)

Windows Server2012 搭建域错误“本地Administraor账户不需要密码”

SQL Server 数据库镜像

SQL Server 事务日志传输

SQL Server 复制订阅

SQL Server 事务复制原理

SQL Server 2016 快照代理过程分析

而至从SQL Server 2005 SP1发布后,另一个“数据库镜像”概念引入,使其更加的提高了灵活性及可用性。
数据库镜像工作过程:就是把SQL事务日志传输复制的过程(一份事务日志在两个SQL 实例中各进行写入到数据文件.MDF),在微软的说话是“预写事务日志”机制。其目的就是为了提高性能与可恢复性(如:事务日志回滚),而在微软的其他产品此套工作机制还应用在DHCP、DNS、AD、Exchange的数据库当中。

  在复制的运用场景中,事务发布是使用最为广泛的,我遇到这样一个场景:在YangJiaLeClub数据库中有表、存储过程、视图、用户定义函数,需要提供给其它程序读取放入缓存,程序需要比较及时的获取到这些数据,需要从权限和性能控制的角度出发,我采用了SQL Server的事务复制技术和timestamp,下面只讲述事务复制的搭建过程;

索引与存储:

SQL Server 使用全文索引进行页面搜索

SQL Server 执行计划缓存

SQL Server 重新组织生成索引

SQL Server 深入解析索引存储(非聚集索引)

SQL Server 深入解析索引存储(堆)

SQL Server 深入解析索引存储(聚集索引)

SQL Server 索引和表体系结构-包含列索引

SQL Server 索引和表体系结构-非聚集索引

SQL Server 索引和表体系结构-聚集索引

而今天所共享的是一套微软推荐的最高级别的SQL Server高可用方法:
拓扑如下:  

 

数据库管理:

SQL Server 自动循环归档分区数据脚本

SQL Server profile性能监控

SQL Server 锁

SQL Server Cast、Convert数据类型转换

SQL Server 变更数据捕获(CDC)

SQL Server 权限管理

SQL Server 触发器

SQL Server 存储过程的运用

SQL Server 对比两字段的相似度(函数算法)

SQL Server 查询分解

SQL Server 容易忽略的错误

SQL Server 事务隔离级别详解

SQL Server 数据库设计规范

SQL Server 系统数据库恢复

SQL Server 备份迁移策略

SQL Server 数据库备份还原和数据恢复

SQL Server 理解copyonly备份操作

SQL Server 禁用扩展存储过程

SQL Server 审计操作概念

SQL Server 创建服务器和数据库级别审计

SQL Server 加密案例解析

SQL Server Service Broker创建单个数据库会话(消息队列)

SQL Server TempDB

88bifa必发唯一官网 1   

二、实现过程

windows系列:

FTP文件服务搭建与同步传输

Windows cmd基本命令

 

 

  

节点说明:

(一) 环境信息

A:双节点Cluster(SQL实例名:Sqlserver02)(主体服务器群集,包括Citrix-05;Citrix-06)

 

B:双节点Cluster(SQL实例名:SqlServer3)(镜像服务器群集, 包括Citrix-03;Citrix-04)

操作系统

C:双节点Cluster(SQL实例名:SqlCluster)(见证服务器群集,包括Citrix-01;Citrix-02)  

IP

88bifa必发唯一官网 2 
总共6台服务器。

服务器名称

 

数据库版本

 前提条件:

数据库名称

Windows Server 2003 Enterprise Edition

数据库帐号信息

SQL Server 2005 Enterprise/Standard Edition SP1以上或更高版本。

发布服务器

Active Directory(域环境)

Windows 10 企业版 

双网卡(PubicPrivate)

192.168.2.100

共享存储(两块磁盘以上:仲裁盘、数据盘)

DESKTOP-SDIK64J

Windows Server Cluster

SQL Server 2008 R2

注:如果SQL Server 2005未安装SP1以上补丁,在创建镜像数据时会报以下错误信息:
88bifa必发唯一官网 3

YangJiaLeClub

基本的双节点Windows Cluster 与SQL Cluster真的太简单,且网上的文档也太多。在此,不作过多介绍。以下步骤均是在已创建好SQL Cluster前提下实现镜像数据库方法,其实与3节点的镜像数据库配置方法一样。
setp1:
在主体群集创建Database

sa/bwl

创建一个需要Mirorring 的数据库。
88bifa必发唯一官网 4
数据库名为"Test_mirorr2"
88bifa必发唯一官网 5

reg/bwl

设备恢复模式为(完整)

分发服务器

88bifa必发唯一官网 6 
备份刚刚创建的数据库,当然,你也可以在备份前,前创建一个备份设备(推荐做法)  

与发布服务器同一台机器

88bifa必发唯一官网 7

订阅服务器1

在此,我选择为备份到磁盘。

Windows Server 2008r2 Enterprise

 

192.168.2.117

88bifa必发唯一官网 8 
备份完成。  

Win-DB-Slave1

 

SQL Server 2008 R2

在镜像服务器群集中还原Database

YangJiaLeClub

把备份数据库文件复制到镜像服务器上。

sa/bwl

注意:备份数据库文件需要复制到对应SQL Cluster公用存储中,否则将会找不到所备份文件。

订阅服务器2

88bifa必发唯一官网 9 
选择“还原数据库”  

Windows Server 2008r2 Enterprise

88bifa必发唯一官网 10 
源设备来自文件(添加),刚刚复制过来的备份文件。

192.168.2.118

88bifa必发唯一官网 11 88bifa必发唯一官网 12 
注意:此处一定要选择"NORECOVERY",这就是我刚刚提到的预写日志的功能。  

Win-DB-Slave2

88bifa必发唯一官网 13 
恢复成功,但此时数据是不能被访问的,因为我选择的是NORECOVERY,就是说此数据库还可以还原其他时间点的事务日志。功能很强大。  

SQL Server 2008 R2

88bifa必发唯一官网 14 
恢复后的数据库应为“正在还原”状态,说明是正常的。  

YangJiaLeClub

配置数据库Mirorring

切换到主体Cluster数据库:

 

88bifa必发唯一官网 15 88bifa必发唯一官网 16 
点击“配置安全性”  

88bifa必发唯一官网 17 88bifa必发唯一官网 18 88bifa必发唯一官网 19 88bifa必发唯一官网 20 
选择主体服务器名(SQL Cluster名称)

88bifa必发唯一官网 21 
选择镜像服务器名(SQL Cluster名称)

88bifa必发唯一官网 22

选择见证服务器名(SQL Cluster名称)

88bifa必发唯一官网 23 
输入服务账户  

88bifa必发唯一官网 24 88bifa必发唯一官网 25 88bifa必发唯一官网 26

点击“开始镜像”此时,镜像服务开始工作。

88bifa必发唯一官网 27 

此时,你会发现刚刚数据库,现显示为已同步。
88bifa必发唯一官网 28

回到镜像服务器上查看时:  

88bifa必发唯一官网 29

 

测试功能:
在主体服务器上创建新表A、B:

88bifa必发唯一官网 30

再模拟主体服务器故障:  

88bifa必发唯一官网 31 88bifa必发唯一官网 32 
镜像服务器正在转移......

88bifa必发唯一官网 33

镜像服务器已完成转移状态。  

查看镜像服务器刚刚在主体服务器上创建的表AB:  

88bifa必发唯一官网 34

创建的表都已成功复制过来。
以上操作,如果熟悉T-SQL语句,均可实现。
以上为整个配置过程。相信有此坚固的DATA STORE做后端,能给整个CITRIX环境起到更为高的可用性及可靠性。

本文出自 “Virtualization Now!” 博客

sa/bwl

1.发布服务器:

 1.1 在防火墙中设置入栈规则,开放1433和1434端口

      88bifa必发唯一官网 35

 

2.订阅服务器:

2.1.Sql Native Client 10配置(32位)新建别名:

88bifa必发唯一官网 36

 

 2.Host 服务器名与IP映射(由于发布订阅服务器名称必须是:服务器 “” 实例名访问)

 目录: C:WindowsSystem32driversetc

 88bifa必发唯一官网 37

3.控制面板用户帐户凭据管理器

    创建凭据

 88bifa必发唯一官网 38

 

 

(二) 搭建步骤

A. 发布服务器配置

  首先在发布数据库和订阅数据库上创建相同的帐号和密码(reg/bwl),并且设置YangJiaLeClub数据库的安全对象,设置这样的帐号的目的就是为了和程序连接到数据库的帐号区分开,可以做权限上的控制,方便问题的排查;

--更改安全对象的所有权

ALTER AUTHORIZATION ON DATABASE::[YangJiaLeClub] TO [reg]

在F盘目录下创建文件夹:F:DBNetReplData,并设置这个文件夹为共享目录,共享用户为biwl

88bifa必发唯一官网 39

 

(Figure1_1:文件夹权限)

这里需要设置SQL Server Agent登陆帐号为上面文件夹访问用户biwl(发布服务器和订阅服务器都需要建立biwl相同帐号和密码设置SQLServer代理服务)

88bifa必发唯一官网 40

 

(Figure1_2:SQL Server Agent登陆帐号)

88bifa必发唯一官网 41

 

(Figure2:配置分发-分发服务器)

  如果你设置快照文件夹路径为:F:DBNetReplData,即使你的发布服务器本身就是分发服务器,如果订阅服务器是另外一台机器,那么在请求(Pull)订阅(如果是推送(Push)订阅就没有这个限制)模式下订阅代理是无法访问到这个快照文件的;除非你发布服务器、分发服务器和订阅服务器都是同一台机器;你应该设置快照文件夹路径为:\DESKTOP-SDIK64JReplData;

88bifa必发唯一官网 42

 

(Figure3:快照文件夹)

88bifa必发唯一官网 43

(Figure4:数据库)

  • 快照发布:隔一段时间会覆盖订阅服务器的数据库,在订阅服务器上做的修改同样被覆盖;
  • 事务发布:是一种接近实时地从源到目标分发数据的方法;
  • 具有可更新订阅的事务发布:订阅服务器可更新发布服务器的数据;
  • 合并发布:发布服务器和订阅服务器的更新都会同步到对方,注意ID在合并发布上的冲突

88bifa必发唯一官网 44

(Figure5:事务发布)

注意表必须有主键才能进行复制,选择你必要的字段,这样可以减轻快照文件的大小和传输时间,而且在业务逻辑上更加安全,如果有需要,你还可以对记录进行过滤;

88bifa必发唯一官网 45

(Figure6_1:表字段)

 

(Figure6_2:存储过程)

 

(Figure6_3:视图)

 

(Figure6_4:用户定义函数)

88bifa必发唯一官网 46

(Figure7:快照代理)

88bifa必发唯一官网 47

(Figure8:安全设置)

使用上面创建好的ReplicationUser帐号作为连接到发布服务器的帐号和密码;

88bifa必发唯一官网 48

(Figure9:使用刚刚创建的帐号密码)

88bifa必发唯一官网 49

(Figure10:创建发布)

88bifa必发唯一官网 50

(Figure11:发布名称)

88bifa必发唯一官网 51

 

(Figure12:查看复制情况)

 

B. 订阅服务器配置

创建完发布服务器(分发服务器也一起创建了),接下来就可以创建订阅服务器了,下面是具体的步骤:

88bifa必发唯一官网 52

 

(Figure13:查找发布服务器)

88bifa必发唯一官网 53

(Figure14:查找发布服务器)

88bifa必发唯一官网 54

(Figure15:选择发布)

88bifa必发唯一官网 55

(Figure16:请求订阅)

88bifa必发唯一官网 56

(Figure17:订阅数据库)

88bifa必发唯一官网 57

(Figure18:订阅连接)

88bifa必发唯一官网 58

(Figure19:帐号密码)

88bifa必发唯一官网 59

(Figure20:代理计划)

88bifa必发唯一官网 60

(Figure21:初始化订阅)

88bifa必发唯一官网 61

(Figure22:创建订阅)

88bifa必发唯一官网 62

(Figure23:订阅)

88bifa必发唯一官网 63

(Figure24:发布服务器上的订阅)

88bifa必发唯一官网 64

(Figure25:复制监视器)

88bifa必发唯一官网 65

(Figure26:订阅数据库新增的表)

88bifa必发唯一官网 66

(Figure27:表数据)

 

三、注意事项

  1. 在SQL SERVER下实现发布服务器和订阅服务器的通信正常(即可以互访),打开1433端口,在防火墙中设置入站规则;

  2. 发布服务器与订阅服务器的SQL Server Agent代理帐号必须设置的一样,否则不能互访;

3. 如果你希望在复制的过程中一并复制非聚集索引,可以对发布属性-项目进行如下设置,修改完之后需要重新生成快照;

88bifa必发唯一官网 67

(Figure28:非聚集索引复制)

  1. 复制代理:快照代理(snapshot agent) 分布式代理(Distribution agent)日志读代理(log Reader agent) 合并代理(Merge agent) 队列读代理(Queue Reader Agent)

  2. 适合使用复制的一些场景包括:

1) 负载均衡:通过将数据复制到其它数据库服务器来减少当前服务器的负载,比如说最典型的应用就是分发数据来分离OLTP和OLAP环境;

2) 分区:将经常使用的数据和历史数据隔离,将历史数据复制到其它数据库中;

3) 授权:将一部分数据提供给需要使用数据的人,以供其使用;

4) 数据合并:每个区域都有其各自的数据,将其数据进行合并。比如一个大公司,每个地区都有其各自的销售数据,总部需要汇总这些数据;

5) 故障转移:复制所有数据,以便故障时进行转移;

  1. 快照复制或事务复制生成快照文件的类型有:

架构 (.sch)、数据 (.bcp)、约束和索引 (.dri)、约束 (.idx)、触发器 (.trg)(只用于更新订阅服务器)、压缩的快照文件 (.cab)。

 

四、疑问

  1. SQL Server 只有在完整日志模式下才能使用复制嘛?

解惑:在简单模式下一样可以使用复制;

  1. 如果是跨网段(跨机房)的发布与订阅,有没办法实现?需要注意什么?

解惑:可以通过修改host文件的方式搭建复制,请参考:SQL Server跨网段(跨机房)复制

3. 如果说上面的情况可以在host设置,但是如果有端口映射的,host也无法设置吧?

解惑:在SQL Server配置管理器里建立别名,同样可参考:SQL Server跨网段(跨机房)复制

4. 订阅的形式可以选择推送订阅或者请求订阅,请求订阅降低分发服务器处理工作的开销,这个开销有多大呢?怎么计算影响?

解惑:只有在有很多订阅服务器的时候才比较明显,推送订阅与请求订阅更大的区别是在管理方面的不同;

 

五、参考文献

快照复制

SQL Server 复制

timestamp (Transact-SQL).aspx)

SQL Server 复制订阅与发布

SQL Server复制入门(一)----复制简介

SQL Server复制入门(二)----复制的几种模式

使用快照初始化订阅.aspx)

复制

本文由88bifa必发唯一官网发布,转载请注明来源:读写分离,文章目录