数据库集群

    集群的存在意义是为了保证高可用、数据安全、扩展性以及负载均衡。

什么是集群?

由二台或更多物理上独立的服务器共同组成的"虚拟"服务器称之为集群服务器。一项称做MicroSoft集群服务(MSCS)的微软服务可对集群服务器进 行管理。一个SQL Server集群是由二台或更多运行SQL Server的服务器(节点)组成的虚拟服务器。如果集群中的一个节点发生故障,集群中的另一个节点就承担这个故障节点的责任。认为一个 SQL Server集群能够给集群中的两个节点带来负载平衡,这是一种常见的误解。虽然这似乎很有用,但却是不正确的。这也意味着SQL Server集群不能真正提高性能,只能提供故障转移功能。故障转移就是当系统中的一台机器发生故障失去其功能时,另一台机器将接手运行它的SQL Server实例。这种功能失效可能是由于硬件故障、服务故障、人工故障或各种其它原因。

对于在SQL Server 2008\2008R2下安装SQLServer 实例的集群似乎有越来越多的问题。与2005相比安装方法要求每个节点都被独立执行。下面我我们一起看一下如何实现集群的部署。

部署

本篇针对Share-Disk架构的集群进行介绍,为了更好展现,我们假定一下几个场景(http://www.it165.net/admin/html/201403/2499.html--配置步骤):

有3台计算机作为节点,分别叫做NodeA, NodeB 和NodeC ,IP地址如下。

  • NodeA - IP Address 10.10.10.10
  • NodeB - IP Address 10.10.10.11
  • NodeC - IP Address 10.10.10.12.

三个节点是Windows集群SQLFAILSET01 (虚拟IP地址是10.10.10.20)的成员。在安装集群应用程序之前需要安装和配置这个基于Windows 集群的平台包括虚拟网络和IP。三个节点有独立的硬件(处理器,内存,NIC等等)和软件(操作系统)。安装两个新的SQLServer集群实例,使用唯 一的虚拟网络名称和实例名称。两个虚拟网络名称和虚拟IP地址如下:

  • SQLCLUST01 - Virtual IP Address 10.10.10.21
  • SQLCLUST02 - Virtual IP Address 10.10.10.22.

实例名:

  • INST1 (SQLCLUST01)
  • INST2 (SQLCLUST02)

为了实现集群按照以下文档部署(配置步骤请参考连接或者其他文献):

  • 虚拟网络名称: 与你的计算机在Windows域中的名称一样。它一定是唯一并且命名遵循常规的名称命名限制如字符长度和特殊字符的使用,
  • 虚拟IP地址: 与分配客户\公共网络IP一样。这是一种共享的IP节点,用来接收跟指定实例通信的IP。
  • 共享驱动器: 这些共享存储是典型的通过光纤通道或者iSCSI连接的逻辑单元。这些逻辑单元对所有的集群几点公开并且分配唯一的逻辑驱动字符。不要与本地驱动器(通常由物理磁盘直接附加到服务器上)混淆。
  • NIC: 网络接口卡。

如果你没有这样做,则需要将集群磁盘资源R、S和T故障转移部署到NodeA,同样也会安装软件组件和数据库到这些驱动器上。从在NodeA开启 SQLServer2008的安装开始,选择"New SQL Server failover cluster installation"。然后安装相关的基础选项配置以及许可。来到实例配置启动的安装部分。

从功能列表中选择你想去安装的项目。下一个屏幕就是你说提供的实例配置,由实例名称和虚拟网络名称组成。对于NodeA使用如下配置:

network name - SQLCLUST01

instance name - INST1

在下一个屏幕详细展示集群资源组和共享磁盘资源(分配给新实例的)。对于NodeA如下配置:

SQL Server data - R:

SQL Server logs - S:

SQL Server backups - T:

一旦这些信息被提交,系统将提示网络配置将使用之前选择的虚拟IP地址。剩下的安装明细包括了集群的安全策略,服务配置(服务账户明细)和数据库引擎配置 (包括账户配置、文件流设置和数据目录)。在数据目录的标签下,展示你选择的之前提供的驱动盘符--“驱动\目录” 结构。继续安装,只要安装成功你就会拥有第一个集群实例在NodeA上。

接下来是NodeB,需要将故障转移集群磁盘资源L,M和N部署到NodeB上准备安装。

现在在NodeB上开启SQLServer2008的安装并且再次点击"New SQL Server failover cluster installation"。根据之前的步骤安装,用网络名SQLCLUST02替换之前的,实例名称为INST2,逻辑磁盘驱动器为L(数据),M(日 志)和N(备份)。

此刻,我们已经有了两个故障转移实例,分别部署到了NodeA和NodeB上。两个实例使用完全不同的磁盘驱动器和盘符,不同的Windows2008程序组和独立的虚拟网络名称,实例名称和虚拟IP地址。激活节点的信息如下:

  • SQLCLUST01\INST1 active on NodeA.
  • SQLCLUST02\INST2 active on NodeB.

但是,目前对于每个实例都没有可以利用的故障转移服务器,现在来解决这个问题。为了让NodeC作为每个实例的转移节点,需要在NodeC上多次安装SQLServer实例。

首先在C上开启2008的安装,并且选择"Add node to a SQL Server failover cluster"。安装程序将完成多个选择和提示等关键信息。之后,安装将提示集群节点配置。在这里选择你希望加入的SQLServer实例 (SQLCLUST01\INST1)。继续完成安装,就有了NodeC作为SQLCLUST01\INST1的故障转移“搭档”。

接下来,第二次安装SQLServer 2008在NodeC上,选择"Add node to a SQL Server failover cluster"。再一次按照如上步骤,再一次按提示配置集群节点。选择(SQLCLUST02\INST2) 作为集群实例并且按照安装步骤完成。这是NodeC就成为了SQLCLUST02\INST2的故障转移“搭档”。

下面就是安装中心的截图以及选择的选项:

下面的截图展示的是安装定义加入实例的地方:

如上所示,安装已经完毕,整个流程更加易于管理。当然利用新的气流特性和集成服务包或累积更新来减少可以减少部署新SQL服务器实例的时间。这里就不展开讲了。

总结

本篇只是简单介绍了最简单的故障转移集群如何搭建。集群有很多种形式如本篇这种共享磁盘模式的数据库集群,以及实现负载均衡的集群等等,但是正如文章一开 始我提到的SQL Server集群不能真正提高性能。业务的应用场景各有不同还是需要不断地配置升级来完成匹配适应的集群。

简述SQL2008部署多实例集群(学习)的更多相关文章

  1. Kubernetes 学习笔记(二):本地部署一个 kubernetes 集群

    前言 前面用到过的 minikube 只是一个单节点的 k8s 集群,这对于学习而言是不够的.我们需要有一个多节点集群,才能用到各种调度/监控功能.而且单节点只能是一个加引号的"集群&quo ...

  2. ElasticSearch 5学习(6)——分布式集群学习分享1

    在使用中我们把文档存入ElasticSearch,但是如果能够了解ElasticSearch内部是如何存储的,将会对我们学习ElasticSearch有很清晰的认识.本文中的所使用的ElasticSe ...

  3. 使用Docker构建持续集成与自动部署的Docker集群

    为什么使用Docker " 从我个人使用的角度讲的话  部署来的更方便 只要构建过一次环境 推送到镜像仓库 迁移起来也是分分钟的事情 虚拟化让集群的管理和控制部署都更方便 hub.docke ...

  4. 001.Ansible部署RHCS存储集群

    一 前期准备 1.1 前置条件 至少有三个不同的主机运行monitor (MON)节点: 至少三个直接存储(非外部SAN硬件)的OSD节点主: 至少两个不同的manager (MGR)节点: 如果使用 ...

  5. Redis集群学习笔记

    Redis集群学习笔记 前言 最近有个需求,就是将一个Redis集群中数据转移到某个单机Redis上. 迁移Redis数据的话,如果是单机Redis,有两种方式: a. 执行redis-cli shu ...

  6. 手把手教你用Docker部署一个MongoDB集群

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的.支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引 ...

  7. K8S部署Redis Cluster集群

    kubernetes部署单节点redis: https://www.cnblogs.com/zisefeizhu/p/14282299.html Redis 介绍 • Redis代表REmote DI ...

  8. K8S部署Redis Cluster集群(三主三从模式) - 部署笔记

    一.Redis 介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理.它可以存储和操作高级数据类型,例如列表,地图,集合和排序 ...

  9. Docker 部署 RocketMQ Dledger 集群模式( 版本v4.7.0)

    文章转载自:http://www.mydlq.club/article/97/ 系统环境: 系统版本:CentOS 7.8 RocketMQ 版本:4.7.0 Docker 版本:19.03.13 一 ...

随机推荐

  1. ORA-01439: 要更改数据类型, 则要修改的列必须为空

    此方法有3处update操作,建议根据实际情况的数据量测试评估效率后选用. 思路:定义要更新数据类型的列为[col_old],数据类型为[datatype_old],临时列为[col_temp],数据 ...

  2. jdk线程池主要原理

    本文转自:http://blog.csdn.net/linchengzhi/article/details/7567397 正常创建一个线程的时候,我们是这样的:new thread(Runnable ...

  3. MyBatis入门基础(一)

    一:对原生态JDBC问题的总结 新项目要使用mybatis作为持久层框架,由于本人之前一直使用的Hibernate,对mybatis的用法实在欠缺,最近几天计划把mybatis学习一哈,特将学习笔记记 ...

  4. 工作流引擎Oozie(二):coordinator

    1. 简介 coordinator是workflow的定时提交器,基于时间条件与数据生成触发(based on time and data triggers).简单点说,coordinator按所定义 ...

  5. 2.简单的Code First例子(EF Code-First系列)

    现在假想,我们想要为讴歌学校创建一个应用程序,这个程序需要能够来添加或者更新学生,分数,教师还有课程信息. 代替之前我们的做法:先是创建数据库,现在我们不这么做,我们先来创建领域类,首先我来创建两个简 ...

  6. javascript设计模式实践之职责链--具有百叶窗切换图片效果的JQuery插件(三)

    在上一篇<javascript设计模式实践之模板方法--具有百叶窗切换图片效果的JQuery插件(二)>里,通过采用模板方法模式完成了切换效果对象的构建编写. 接下来就是完成各效果对象的调 ...

  7. jQuery点击图片弹出放大特效下载

    效果体验:http://hovertree.com/texiao/jqimg/1/ 效果图: 代码如下: <!DOCTYPE html> <html> <head> ...

  8. csharp:ASP.NET SignalR

    http://signalr.net/ https://github.com/SignalR/SignalR http://www.asp.net/signalr http://www.cnblogs ...

  9. 【python环境配置1】 环境变量与常用模块

    1. 安装python27 2. 配置环境变量 找到python.exe的安装文件夹,复制路径(C:\python27\Arcgis10.2): 将该路径粘贴到 "控制面板\系统和安全\系统 ...

  10. Home / Python MySQL Tutorial / Calling MySQL Stored Procedures in Python Calling MySQL Stored Procedures in Python

    f you are not familiar with MySQL stored procedures or want to review it as a refresher, you can fol ...