热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

[SqlServer03]

随着企业的业务扩展,企业应用所承载的访问需求也更加频繁及多元化,对于大多数企业应用来说,确保企业应用的高可用性(HA)是十分必要的。比如公共安全系统,电子商务支持系统、银联支付系统等等系统。高可用性分为两个主要的部分,一部分是应用程序(SOA服务

随着企业的业务扩展,企业应用所承载的访问需求也更加频繁及多元化,对于大多数企业应用来说,确保企业应用的高可用性(HA)是十分必要的。比如公共安全系统,电子商务支持系统、银联支付系统等等系统。高可用性分为两个主要的部分,一部分是应用程序(SOA服务

随着企业的业务扩展,企业应用所承载的访问需求也更加频繁及多元化,对于大多数企业应用来说,确保企业应用的高可用性(HA)是十分必要的。比如公共安全系统,电子商务支持系统、银联支付系统等等系统。高可用性分为两个主要的部分,一部分是应用程序(SOA服务)的高可用性,另一个方面就是数据库的高可用性。企业应用服务的高可用性主要是通过网络负载均衡(NLB)来实现,这个在另外的章节我们再探讨,这一章节我们主要探讨sqlserver数据库的高可用性集群是如何满足高可用性需求的。

数据库有两大基础作用,一个是存储系统相关的数据,二是提供对数据的管理机制。管理机制很多时候比存储数据功能更重要。这套机制能够确保数据的一致性,合理性、提高读取性能等等方面,当然这些规则及特性支持可以实际情况进行手动开启或关闭,并且可以自定义一些规则来约束对数据的操作。基于数据安全性的考虑,通常需要在另外一个物理位置对数据进行备份,避免数据因为一些特殊原因丢失而造成无法挽回的损失。这种情况下,确保两个数据库的数据一致性就很重要,如何将针对其中一个数据库的操作准确无误地反映到另外一个备份数据库上是一个重要的课题。其实这也是数据库HA最需要解决的问题。具体来说有以下几种方式:

1)数据库复制

数据库复制不是数据库备份和还原。数据库复制是通过发布和订阅来实现的。主数据库和备份数据库之间是发布和订阅的关系,一旦主库数据进行了修改,那么从库也做相应的动作,但主从数据库并不是实时同步的,一般会有延时,因为订阅数据库在一定时间内(通常5sec)会扫面主数据库是否有更改。这种方式是通过日志进行同步操作的,效率也还可以接受。但有一点是不接受DDL语句,即主数据库表结构的变动无法反应到从数据库,必须手动来同时更改库结构再同步。

2)数据库镜像

数据库镜像顾名思义是数据库的实时备份镜像。不同于发布订阅,数据库镜像的镜像数据库是不可读也不可写的。也就是说,如果应用程序希望通过访问镜像数据库来获取数据从而分担主数据库的压力这种方案是行不通的。必须对镜像数据库做数据库快照才可以访问。做数据库镜像的时候对数据库有一些要求,如必须在Full Recovery 模式下才能做数据库镜像,对版本也有一定的要求。

3)数据库快照

数据库快照是给数据库的拍的照片,这个不是实时的备份,很多的应用需求不能被满足。相比于通过日志进行的同步,性能损耗比较大,尤其是当数据量比较大。通常是通过数据库快照恢复数据。

这三种方式中数据库复制订阅支持多个数据往一个数据库进行同步。对于单向数据复制的需求能够很好地满足。比如有多个录入系统,数据入库进入本地数据库,本地数据库与服务端的数据库进行发布订阅,本地数据库发布数据库,服务端数据库订阅数据库,每一个录入端都发布数据库,服务端数据库订阅每一个服务端,这样每个录入端的数据就能够及时进入服务端,服务端就能够对所有客户端的数据进行汇总,统计,分析等等。优点是无论是订阅端还是发布端数据都是可读的(客户端当然是可写的),原则上订阅端的数据时不可写的,因为订阅端的更改不会反应到发布端,因为发布订阅是单向的。

通常数据库镜像是由三个物理数据库组成,一个是Principle,一个是Mirror, 还有一个Witness,Witness数据库是监测Principle 和 Mirror 的状态,实际并不存储数据,通常Witness 会承担其他任务,比如 Reporting Service。Principle 和 Mirror 之间传递着一个 Message. 这个Heart Beat是主从数据库角色转换的依据,一旦从数据库收不到主数据的Heart Beat 信息,从数据库立即响应数据库访问请求,从数据库立即转变成主数据库,主数据库理解转换成从数据库。主从数据库之间的数据同步是通过日志来实现的,并且有High PerformanceHigh Safety 两种模式,前者是理解响应访问请求,然后再将数据更改反应到从数据库,后者是先将数据更改反应到从数据库,再响应访问请求。因为将数据更改反应到从数据库的过程中可能fail掉。

数据库响应请求分为读请求和写请求,由于数据库有物理读和逻辑读,读请求访问物理磁盘的几率较小,效率最低的是写请求。如果能够将读请求和写请求进行分离,能够大大地提高数据库集群的处理能力。于是SqlServer 2012 开始,提供了 SqlAlwaysOn组件。SqlServer 2012 组件让数据库的镜像能够可读。由数据库镜像来处理数据库的读请求,主数据库处理写请求。

还有非常重要的一点是SqlAlwaysOn能够对数据库进行分组。

下一个章节继续。






推荐阅读
  • 直播带货系统中的推流技术详解
    本文介绍了RTMP(实时消息传输协议)及其在直播带货系统中的应用,并详细探讨了带货直播系统的连麦方案,包括服务端合流和客户端合流的优势与劣势。 ... [详细]
  • 数据仓库ETL开发过程中,如何有效进行测试是一个关键问题。由于数据仓库通常包含大量数据,并且出于安全考虑,开发库和测试库的数据与生产库不完全一致,这给测试带来了挑战。本文将探讨适用于ETL开发的测试方法,包括单元测试、集成测试以及具体测试技术。 ... [详细]
  • MySQL Server 8.0.28 升级至 8.0.30 的详细步骤
    为了修复安全漏洞,本文档提供了从 MySQL Server 8.0.28 升级到 8.0.30 的详细步骤,包括备份数据库、停止和删除旧服务、安装新版本以及配置相关环境变量。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 在JavaWeb项目架构中,NFS(网络文件系统)的实现与优化是关键环节。NFS允许不同主机系统通过局域网共享文件和目录,提高资源利用率和数据访问效率。本文详细探讨了NFS在JavaWeb项目中的应用,包括配置、性能优化及常见问题的解决方案,旨在为开发者提供实用的技术参考。 ... [详细]
  • 本文探讨了使用Python进行微服务架构设计的合理性和适用性。首先,介绍了微服务的基本概念及其在现代软件开发中的重要性。接着,通过具体的业务场景,详细分析了Python在微服务架构设计中的优势和挑战。文章还讨论了在实际应用中可能遇到的问题,并提出了相应的解决方案。希望本文能够为从事Python微服务开发的技术人员提供有价值的参考和指导。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 解读中台架构:微服务与分布式技术的区别及应用
    中心化与去中心化是长期讨论的话题。中心化架构的优势在于部署和维护相对简单,尤其在服务负载较为稳定的情况下,能够提供高效稳定的性能。然而,随着业务规模的扩大和技术需求的多样化,中心化架构的局限性逐渐显现,如扩展性和故障恢复能力较差。相比之下,微服务和分布式技术通过解耦系统组件,提高了系统的灵活性和可扩展性,更适合处理复杂多变的业务场景。本文将深入探讨中台架构中微服务与分布式技术的区别及其应用场景,帮助读者更好地理解和选择适合自身业务的技术方案。 ... [详细]
  • 近年来,BPM(业务流程管理)系统在国内市场逐渐普及,多家厂商在这一领域崭露头角。本文将对当前主要的BPM厂商进行概述,并分析其各自的优势。目前,市场上较为成熟的BPM产品主要分为两类:一类是综合型厂商,如IBM和SAP,这些企业在整体解决方案方面具有明显优势;另一类则是专注于BPM领域的专业厂商,它们在特定行业或应用场景中表现出色。通过对比分析,本文旨在为企业选择合适的BPM系统提供参考。 ... [详细]
  • 如何在不同数据库中提取前N%的记录
    本文详细介绍了如何在SQL Server、Oracle和MySQL等不同数据库中提取前N%的记录。通过具体的示例和代码,帮助读者理解和掌握这些方法。 ... [详细]
  • Nacos 0.3 数据持久化详解与实践
    本文详细介绍了如何将 Nacos 0.3 的数据持久化到 MySQL 数据库,并提供了具体的步骤和注意事项。 ... [详细]
  • 本文介绍 DB2 中的基本概念,重点解释事务单元(UOW)和事务的概念。事务单元是指作为单个原子操作执行的一个或多个 SQL 查询。 ... [详细]
  • RocketMQ在秒杀时的应用
    目录一、RocketMQ是什么二、broker和nameserver2.1Broker2.2NameServer三、MQ在秒杀场景下的应用3.1利用MQ进行异步操作3. ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
author-avatar
阳光下的我们卍
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有