数据库集群

MySQL数据库分库分表策略

不打扰是莪最后的温柔 提交于 2019-12-01 16:40:18
第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。 水平切分数据库:可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失; 负载均衡策略:可以降低单台机器的访问负载,降低宕机的可能性; 集群方案:解决了数据库宕机带来的单点数据库不能访问的问题; 读写分离策略:最大限度了提高了应用中读取数据的速度和并发量; 第2章 基本原理和概念 什么是数据切分 "Shard" 这个词英文的意思是"碎片",而作为数据库相关的技术用语,似乎最早见于大型多人在线角色扮演游戏中。"Sharding" 姑且称之为"分片"。Sharding 不是一个某个特定数据库软件附属的功能,而是在具体技术细节之上的抽象处理,是水平扩展(Scale Out,亦或横向扩展、向外扩展)的解决方案, 其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。 通过一系列的切分规则将数据水平分布到不同的DB或table中,在通过相应的DB路由或者table路由规则找到需要查询的具体的DB或者table,以进行Query操作。“sharding”通常是指“水平切分”

Spring整合Quartz分布式定时任务

醉酒当歌 提交于 2019-12-01 13:48:39
概述 虽然单个Quartz实例能给予你很好的Job调度能力,但它不能满足典型的企业需求,如可伸缩性、高可靠性满足。假如你需要故障转移的能力并能运行日益增多的 Job,Quartz集群势必成为你应用的一部分了。使用 Quartz 的集群能力可以更好的支持你的业务需求,并且即使是其中一台机器在最糟的时间崩溃了也能确保所有的 Job 得到执行。 Quartz 中集群如何工作 一个 Quartz 集群中的每个节点是一个独立的 Quartz 应用,它又管理着其他的节点。意思是你必须对每个节点分别启动或停止。不像许多应用服务器的集群,独立的 Quartz 节点并不与另一其的节点或是管理节点通信。Quartz 应用是通过数据库表来感知到另一应用的。 图:表示了每个节点直接与数据库通信,若离开数据库将对其他节点一无所知 创建Quartz数据库表 因为Quartz 集群依赖于数据库,所以必须首先创建Quartz数据库表。Quartz 包括了所有被支持的数据库平台的 SQL 脚本。在 <quartz_home>/docs/dbTables 目录下找到那些 SQL 脚本,这里的 <quartz_home> 是解压 Quartz 分发包后的目录。 这里采用的Quartz 2.2.3版本,总共11张表,不同版本,表个数可能不同。数据库为mysql,用tables_mysql_innodb.sql创建数据库表

MongoDB集群

a 夏天 提交于 2019-12-01 09:56:15
目的:使用三个docker虚拟容器创建mongoDB集群 1、拉取镜像 可配置阿里云的 镜像加速器 > sudo mkdir -p /etc/docker > sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://test.mirror.aliyuncs.com"] } EOF > sudo systemctl daemon-reload > sudo systemctl restart docker 2、创建docker-compose文件 注意,docker-compost的文件名需要是 docker-compost.yml 这里采用的mongo4.0的镜像,每个容器最大内存限制为4G version: '2' services: db0: image: mongo:4.0 restart: always mem_limit: 4G volumes: - /workspace/mongo-alpha/db0:/data/db - /workspace/mongo-alpha/common:/data/common environment: TZ: Asia/Shanghai ports: - "27018:27017" command: mongod --replSet rs0

PXC集群的概述及搭建

久未见 提交于 2019-12-01 09:51:15
目录 PXC集群的概述及搭建 PXC集群的简介 PXC集群主要由两部分组成: PXC的特性和优点: PXC的局限和劣势: PXC原理描述 mysql实例端口 在Centos部署基于Mysql高可用方案操作过程 新增节点加入Galera集群 PXC集群的概述及搭建 PXC集群的简介 Percona XtraDB Cluster(下文简称PXC集群)提供了MySQL高可用的一种实现方法。PXC集群以节点组成(推荐至少3节点,便于故障恢复,后面会讨论两节点的情况),每个节点都是基于常规的 MySQL/Percona Server,意味着你可以从集群中分离出某节点单独使用。集群中每个节点都包含完整的数据。 PXC集群主要由两部分组成: Percona Server with XtraDB和Write Set Replication patches(使用了Galera library,一个通用的用于事务型应用的同步、多主复制插件)。 PXC的特性和优点: ​ 1、同步复制 ​ 2、支持多主复制 ​ 3、支持并行复制 ​ 4、作为高可用方案,相比其他方案其结构和实施相对简单明了 PXC的局限和劣势: 1) 版本(5.6.20)的复制只支持InnoDB引擎,其他存储引擎的更改不复制。然而,DDL(Data Definition Language) 语句在statement级别被复制,并且

MongoDB 走马观花(全面解读篇)

喜夏-厌秋 提交于 2019-12-01 09:32:28
目录 一、简介 二、基本模型 BSON 数据类型 分布式ID 三、操作语法 四、索引 索引特性 索引分类 索引评估、调优 五、集群 分片机制 副本集 六、事务与一致性 一致性 小结 一、简介 MongoDB 是一款流行的开源文档型数据库,从它的命名来看,确实是有一定野心的。 MongoDB 的原名一开始 来自于 英文单词"Humongous", 中文含义是指"庞大" ,即命名者的意图是可以处理大规模的数据。 但笔者更喜欢称呼它为 "芒果"数据库,除了译音更加相近之外,原因还来自于这几年使用 MongoDB 的两层感觉: 第一层感受是"爽",使用这个文档数据库的特点是几乎不受什么限制,一方面Json文档式的结构更容易理解,而无Schema约束也让DDL管理更加简单,一切都可以很快速的进行。 第二层感受是"酸爽",这点相信干运维或是支撑性工作的兄弟感受会比较深刻,MongoDB 由于入门体验"太过于友好",导致一些团队认为用好这个数据库是个很简单的事情,所以开发兄弟在存量系统上埋一些坑也是正常的事情。 所谓交付一时爽,维护火葬场.. 当然了,这句话可能有些过。 但这里的潜台词是:与传统的RDBMS数据库一样,MongoDB 在使用上也需要认真的考量和看护,不然的化,会遇到更多的坑。 那么,尽管文档数据库在选型上会让一些团队望而却步,仍然不阻碍该数据库所获得的一些支持,比如 DB

分片集群

戏子无情 提交于 2019-12-01 07:25:21
目录 mongodb分片+副本集方式部署集群 介绍 一、配置准备 二、启动分片节点和配置节点 三、配置节点构成副本集 四、分片节点构成副本集 五、启动路由节点、并增加分片 六、设置数据库启用分片,启用索引。 七、写入数据测试。 七、手动预先分片 使用脚本的方式启动集群: mongodb分片+副本集方式部署集群 介绍 背景:mongodb集群搭建方式有三种,1、主从(官方已经不推荐),2、副本集,3、分片。这里介绍如何通过分片sharding方式搭建mongodb集群。sharding集群方式也基于副本集,在搭建过程中,需要对分片和配置节点做副本集。最后将做好的副本集的分片加入到路由节点,构成集群。 sharding方式的集群中,有三类角色,分别是shard,config,router。如下图所示。 一、配置准备 创建存放数据的文件夹 mkdir -p /usr/local/software/mongodb/mongo-cluster/data/shard01 mkdir -p /usr/local/software/mongodb/mongo-cluster/data/shard02 mkdir -p /usr/local/software/mongodb/mongo-cluster/data/shard21 mkdir -p /usr/local/software/mongodb

MongoDB 概述

半世苍凉 提交于 2019-12-01 07:05:02
一、概述:   1、NoSQL数据库(非关系型数据库)   2、文档存储   3、格式类似JSON,BSON   4、最终一致性(非ACID) , CAP定理(C 一致性,A 高可用,P 分区性)   5、高可扩展性(分片) 二、适用场景:   数据量大,无事务,非关系型,低价值的数据。 三、集群方式   1、复制集        缺点:     读写,都在主节点,性能不行。   2、分片(常用)      上图中主要有如下所述三个主要组件: Shard: 用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担,防止主机单点故障 Config Server: mongod实例,存储了整个 ClusterMetadata,其中包括 chunk信息。 Query Routers: 前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。 来源: https://www.cnblogs.com/chen--biao/p/11666195.html

MongDB

混江龙づ霸主 提交于 2019-12-01 01:18:21
1.什么是MongoDB MongoDB是一个文档数据库,提供好的性能,领先的非关系型数据库。采用BSON存储文档数据。BSON()是一种类json的一种二进制形式的存储格式,简称Binary JSON.相对于json多了date类型和二进制数组。 2.MongoDB的优势有哪些 面向文档的存储:以 JSON 格式的文档保存数据。 任何属性都可以建立索引。 复制以及高可扩展性。 自动分片。 丰富的查询功能。 快速的即时更新。 3 什么是数据库   数据库可以看成是一个电子化的文件柜,用户可以对文件中的数据运行新增、检索、更新、删除等操作。数据库是一个所有集合的容器,在文件系统中每一个数据库都有一个相关的物理文件。 4.什么是集合(表) 集合就是一组 MongoDB 文档。它相当于关系型数据库(RDBMS)中的表这种概念。集合位于单独的一个数据库中。一个集合内的多个文档可以有多个不同的字段。一般来说,集合中的文档都有着相同或相关的目的。 5 什么是文档(记录)   文档由一组key value组成。文档是动态模式,这意味着同一集合里的文档不需要有相同的字段和结构。在关系型数据库中table中的每一条记录相当于MongoDB中的一个文 6 MongoDB和关系型数据库术语对比图 7.什么是非关系型数据库   非关系型数据库的显著特点是不使用SQL作为查询语言

MongoDB 分片

最后都变了- 提交于 2019-11-30 21:14:58
1.分片简介 分片是指将数据拆分,将其分散存在不同机器上的过程.有时也叫分区.将数据分散在不同的机器上,不需要功能 强大的大型计算机就可以存储更多的数据,处理更大的负载.使用几乎所有数据库软件都能进行手动分片,应用需要维护与若干不同数据库服务器的连接,每个连接 还是完全独立的.应用程序管理不同服务器上的不同数据,存储查村都需要在正确的服务器上进行.这种方法可以很好的工作,但是也难以维护,比如向集群添加节 点或从集群删除节点都很困难,调整数据分布和负载模式也不轻松. MongoDB支持自动分片,可以摆脱手动分片的管理.集群自动切分数据,做负载均衡. 2.MongoDB的自动分片 MongoDB分片的基本思想就是将集合切分成小块.这些块分散到若干片里面,每个片只负责总数据 的 一部分.应用程序不必知道哪片对应哪些数据,甚至不需要知道数据已经被拆分了,所以在分片之前要运行一个路由进程,进程名mongos,这个路由器知道所有数据的存放位置,所以应用可以连接它来正常发送请求.对应用来说,它仅知道连接了一个普通的mongod.路由器知道和片的对应关系,能够转发请求到正确的片上.如果请求有了回应,路由器将其收集起来回送给应用. 在没有分片的时候,客户端连接mongod进程,分片时客户端会连接mongos进程.mongos对应用隐藏了分片的细节. 从应用的角度看,分片和不分片没有区别

互联网公司分布式集群架构图入门解析(简单通俗易懂,超详细)

穿精又带淫゛_ 提交于 2019-11-30 19:42:50
一、小型公司网络架构 狗子是某大学计算机专业本科应届毕业生,由于自己的技术不错,再加上互联网产业的巨大利润的驱使,狗子决定走上创业这条路,于是,狗子联合了同学二黑,鸡子,狗蛋等人花费了几个月的时间写出了一套网站,是关于足球资讯的pc端网站加上手机APP客户端。现在产品测试成功了,准备发布了,狗子想到了两个问题: 1.网站需要服务器 狗子之前所有的代码测试都是在本地服务器或者局域网上进行的,现在需要把产品发布到外网上,让所有的人都能访问,因此再用自己的电脑当服务器显然很不现实,于是,狗子去买了一台服务器,在上面装了jdk,tomcat,mysql等必备环境,把网站搭了起来,又经过了很多测试,运行毫无问题了,通过网站的ip可以访问并且实现功能了,而且app的后台也在服务器上测试成功了,目前公司的架构如图所示: 那么问题又来了: 2.网站需要域名 显然,如果让各地的用户需要记住你服务器的ip地址才能访问你的网站的话,那是会被用户拿刀追着砍的。因此,狗子需要一个便于记住的域名,以后在浏览器输入这个域名就能够访问这个网站,所以,狗子拿着申请下来的各种资质,找到了域名贩卖商,一般是腾讯阿里巴巴这种代理贩卖商,花了一笔钱,从它们的手上购买了域名,彻底实现了网站通过域名就能访问的功能。这里需要讲解一下通过域名访问的原理: 域名访问原理 通过ip访问相当于用户直接访问输入的ip所指向的服务器