数据库集群

MySQL集群(PXC)

别说谁变了你拦得住时间么 提交于 2019-12-15 01:03:41
一、目标和方式 1.目标:    1)大型互联网应用的架构设计和业务处理   2)掌握PXC集群MySQL方案的原理   3)掌握PXC集群的强一致性   4)掌握PXC集群的高可用方案 2.分析方式 :由浅入深,循序渐进;案例有小到大,逐步扩展 二、硬件环境需求 1.win /Linux/ MacOS 2.Docker虚拟机 3.内存8GB以上 三、单节点数据库的弊端 1.大型互联网程序用户群里庞大,所以架构必须要特殊设计 2.单节点的数据库无法满足性能上的要求,就像校园网查成绩的时候,如果1万人同时查,你可能拿到就是一个白屏,无论你是收费的还是免费的数据库,单节点都满足不了这种并发需求 3.单节点的数据库没有冗余设计,无法满足高可用,一旦这个机器出现问题,没有其他节点的数据库顶替,那网站将无法正常访问 单节点数据库测试,5000个连接,5000个并发查询,平均就1个连接1个查询,安装好数据库,配置好环境变量,[mysqld]下面配置最大连接量为6000(max_connections=6000),执行下面的命令: mysqlslap -hlocalhost -uroot -pabc123456 -P3306 --concurrency=5000 --iterations=1 --auto-generate-sql --auto-generate-sql-load-type

微服务之数据同步Porter

萝らか妹 提交于 2019-12-11 21:26:58
Porter是一款数据同步中间件,主要用于解决同构/异构数据库之间的表级别数据同步问题。 背景 在微服务架构模式下深刻的影响了应用和数据库之间的关系,不像传统多个服务共享一个数据库,微服务架构下每个服务都要有自己的数据库。如果你想获得微服务带来的好处,每个服务独有一个数据库是必须的,因为微服务强调的就是松耦合。我们希望数据库就和服务一样,要有充分的独立性、可以和服务一起部署、一起扩展、一起重构。同时,还需要兼顾数据中心的数据聚合、DBA的多种数据库备份、报表中心的业务报表等等矛盾问题。因此便产生了「Porter」项目。 微服务改造过程中,无法避免的一个坎,那就是垂直拆库,根据不同的子服务,把过去的「一库多服」拆分成「一库一服」。 一库多服还是一库一服? 不管是否是微服务架构,应用的各个模块之间都需要频繁的通信、协作、共享数据,实现系统的整体价值。区别点在于单体应用是通过本地方法调用来完成;在微服务中是通过远程API调用完成。 而共享数据最贱的方式就是采用共享数据库模式,也就是单体应用中最常用的方式,一般只有一个数据库,如图一库多服和一库一服的方式: 一库多服的架构模式通常会被认为是微服务架构下的反范式,它的问题在于: 稳定性:单点故障,一个数据库挂掉,整批服务全部停止。服务独立性被扼杀? 耦合性:数据在一起,会给贪图方便的开发或者DBA工程师编写很多数据间高度依赖的程序或者工具;

apollo集群部署

限于喜欢 提交于 2019-12-11 18:27:40
apollo集群部署 1. 准备工作 1.1. 服务器准备(配置根据情况调整) 准备好安装apollo的三台服务器 配置4CPU,4G内存,20GB硬盘 假设三台服务器IP为 172.16.10.208 172.16.10.209 172.16.10.210 修改相应hostname apollo-1 apollo-2 apollo-3 1.2. 安装jdk1.8 rpm -ivh jdk-8u231-linux-x64.rpm 在配置好后,可以通过如下命令检查: java -version 样例输出: java version "1.8.0_231" Java ( TM ) SE Runtime Environment ( build 1.8.0_231-b11 ) Java HotSpot ( TM ) 64-Bit Server VM ( build 25.231-b11, mixed mode ) 创建安装目录 mkdir -p /opt/server/apollo 3. 初始化MySQL数据 版本要求:5.6.5+ SHOW VARIABLES WHERE Variable_name = 'version' ; ±--------------±-----------+ | Variable_name | Value | ±--------------±----------

Redis之集群高可用与安全控制

别来无恙 提交于 2019-12-11 14:58:26
Redis 之集群高可用和安全控制 一、 Redis 的主从复制 1.1. 为什么使用主从 单个 Redis 如果因为某种原因宕机的话,可能会导致 Redis 服务不可用,可以使用主从复制实现一主多从,主节点负责写的操作,从节点负责读的操作,主节点会定期将数据同步到从节点中,保证数据一致性的问题。 1.2. 主从的方式 最少需要3个节点。 第一种: 第二种: 优先选择第二种,第一种方式主节点向从节点同步数据压力大。 1.3. 主从复制配置: 将编译之后的 Redis 中的 bin 目录中全部内容 角色 端口 配置文件 主节点 6379 redis_6379.conf 从节点 6380 redis_6380.conf 从节点 6381 redis_6381.conf 从节点 6382 redis_6382.conf 相关目录结构 内存有限,我们只模拟不同端口下的 Redis 主从复制。我模拟了一主三从,采用树状结构: 核心配置:主节点 # ip监控 bind 0.0.0.0 protected-mode no # requirepass 123456 # 端口 port 6379 # 后台运行 daemonize yes # 工作目录 dir ./ # pid pidfile "/var/run/redis_6379.pid" # 日志名 logfile "redis_6379

Mysql-cobar集群安装部署手册

送分小仙女□ 提交于 2019-12-10 15:33:09
本文档以 mysql5.6.17-1 rhel 版本为例,介绍 mysql 一机多实例,以两台机器各两个实例,实现机器间的 mysql 实例主主复制功能。并将 4 个 mysql 实例纳入到 cobar 集群,实现 mysql 的分布式部署。部署结构图如下: 一. Mysql RPM 包多实例安装以及双主复制配置 1. 检测是否有历史版本存在,命令为: rpm –qa|grep –iE mysql ; 2. 卸载历史版本,命令为: rpm -e –nodeps 包名。包名为步骤一中所查询的结果; 3. 删除历史版本的文件和库,查找命令为: find / -name mysql ,然后利用 rm –rf “ 路径 ” 来删除; 4. 删除配置文件, my.cnf 一般存在于 /etc/my.conf 下面或者 /usr/bin 下面,需要手动删除。 5. Mysql RPM 包 5.6 以后会自动建立 mysql 用户组与用户,安装前可以卸载到原有的 mysql 用户,命令: userdel –rf mysql ; 6. Mysql 基本功能仅需要安装 MySQL-server-community.*.rpm 和 MySQL-client-community.*.rpm ,以 root 用户登录后, 执行 rpm –ivh “MySQL-*.rmp” 完成 mysql

主从复制同步

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-10 15:12:44
day12 部署集群环境 IP 规划 • redis 服务器 ip 地址及端口规划 – redisA 192.168.4.51 6351 – redisB 192.168.4.52 6352 – redisC 192.168.4.53 6353 – redisD 192.168.4.54 635 4 – redisE 192.168.4.55 6355 – redisF 192.168.4.56 6355 拓展图 集群工作原理 创建 Redis 集群 装包 • 在 6 台主机上做如下配置 , 并运行 redis 服务 #yum -y install gcc gcc-c++ #tar -zxvf redis-4.0.8.tar.gz #cd redis-4.0.8/ #make #make install #./utils/install_server.sh • 修改配置文件 #vim /etc/redis/redis.conf bind IP 地址 // 只写物理接口 IP 地址 daemonize yes // 守护进程方式运行 port xxxx // 端口号不要使用默认的 6379 cluster-enabled yes // 开启集群 cluster-config-file nodes.conf // 集群的配置文件不要使用默认的名称 cluster-node

Ubuntu下PostgreSQL数据库集群(PL/Proxy)配置方法

本小妞迷上赌 提交于 2019-12-09 18:41:37
数据库集群: N 个数据库堆到一起,找一个当个头头,管理所有的数据库并让它们协同工作。当然了,要不要找个头头,找几个头头,如何协作等等问题这些都可以商量和约定,因此,也就形成了不同的数据库集群。 如果数据库系统是 PostgreSQL ,这个集群就是 PostgreSQL 数据库集群。 PostgreSQL 数据库管理集群的方法有很多,有人提出了 PL/Proxy 方式的集群(这才是本文的重点)。这个 PL/Proxy 方式的集群是这样的:有很多安装了 PostgreSQl 数据库的计算机,有台计算机是头头,我们把这个头头叫做 proxy ,其他的叫做 database0 , database1 ……。 以三台机器的集群为例子,看看 PostgreSQL 集群的架构是什么。 proxy 节点: proxy 节点实际上也是一个 PostgreSQL 数据库 节点,但是所有数据均不存放到 proxy 节点上,主要做三件事情: 1. 接受用户的 sql 查询; 2. 分析用户的 sql 查询并转换成集群上执行的 SQL 语句; 3. 合并集群执行 sql 的结果,然后返回给用户。 说白了,就是把用户的 sql 语句交给 database0 , database1 去执行,然后合并执行结果返回给用户。 database1 节点和 database2 节点: 就是普通的数据库节点,接收

nacos安装

妖精的绣舞 提交于 2019-12-09 17:34:40
nacos的安装 下载: 官网地址 https://nacos.io/zh-cn/ 安装 将下载好的文件解压后,上传至服务器。 启动 在服务器有对应版本JDK的情况下,无需更改任何配置,运行文件中bin/startup.sh cd到…/nacos/bin/目录下,命令为sh startup.sh 稍等一会,此时不要shutdown,可能会引起nacos服务崩溃。 如果一切顺利,访问#ip:8848/nacos 可以进入登陆界面 默认账户、密码都是 nacos 集群部署 数据库及相关部署 • 1.安装数据库,版本要求:5.6.5+ • 2.初始化mysql数据库 • 3.数据库运行sql文件建表:sql文件位置在/nacos/conf/nacos-mysql.sql • 4.修改nacos/conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。 在文末添加 spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

分库分表

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

mysql 海量数据的存储和访问解决方案

白昼怎懂夜的黑 提交于 2019-12-08 18:11:08
第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互 联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已 经成为架构研发人员首选的方式。 水平切分数据库,可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失。通过负载均衡策略,有效的降低了单台机 器的访问负载,降低了宕机的可能性;通过集群方案,解决了数据库宕机带来的单点数据库不能访问的问题;通过读写分离策略更是最大限度了提高了应用中读取 (Read)数据的速度和并发量 。目前国内的大型互联网应用中,大量的采用了这样的数据切分方案,Taobao,Alibaba,Tencent,它们大都实现了自己的分布式数据访问层(DDAL)。以实现方式和实现的层次来划分,大概分为两个层次(Java应用为例):JDBC层的封装,ORM框架层的 实现。就JDBC层的直接封装而言,现在国内发展较好的一个项目是被称作“变形虫”(Amoeba)的项目,由阿里集团的研究院开发,现在仍然处于测试阶 段(beta版),其运行效率和生产时效性有待考究。就ORM框架层的实现而言,比如Taobao的基于ibatis和Spring的的分布式数据访问 层,已有多年的应用,运行效率和生产实效性得到了开发人员和用户的肯定