mysql集群

mysql数据库高可用解决方案

故事扮演 提交于 2019-12-06 22:18:00
MySQL数据库作为最基础的数据存储服务之一,在整个系统中有着非常重要的地位,因此要求其具备 高可用性 是无可厚非的。有很多解决方案能实现不同的 SLA (服务水平协定),这些方案可以保证 数据库服务器 在硬件或软件出现故障时服务继续可用。 高性能性需要解决的主要有两个问题,即如何实现 数据共享 或同步数据,另一个是如何处理failover,数据共享一般的解决方案是通过SAN(Storage Area Network)来实现,而 数据同步 可以通过 rsync 软件或 DRBD 技术来实现;failover的意思就是当服务器死机或出现错误时可以自动切换到其他备用的服务器,不影响服务器上业务系统的运行。本文重点介绍一下目前比较成熟的Mysql高性能解决方案。 1、主从复制解决方案 这是MySQL自身提供的一种高可用解决方案,数据同步方法采用的是MySQL replication技术。MySQL replication就是一个日志的复制过程,在复制过程中一个服务器充当主服务器,而一个或多个其他服务器充当从服务器,简单说就是从服务器到主服务器拉取二进制日志文件,然后再将日志文件解析成相应的SQL在从服务器上重新执行一遍主服务器的操作,通过这种方式保证数据的一致性。 MySQL replication技术仅仅提供了日志的同步执行功能,而从服务器只能提供读操作,并且当主服务器故障时

Kubernetes权威指南 第一章:Kubernetes入门

时光毁灭记忆、已成空白 提交于 2019-12-06 14:34:41
Kubernetes是什么 官网 https://kubernetes.io/ 中文版: https://kubernetes.io/zh/ Kubernetes是谷歌十几年大规模容器管理经验的成果 是Borg的一个开源版本 基于容器技术的分布式架构方案 Service简介 Kubernetes以Service为核心,Service有如下特征 唯一名称 拥有一个虚拟ip和端口 提供某种远程服务能力 被映射到提供这种服务能力的一组容器应用上 Pod简介 Pod运行在Node主机中 Pod是Kubernetes管理的最小运行单元 通常一个Node运行上百个Pod 每个Pod有一个特殊的Pause容器,负责网络栈和Volume挂载卷 只有提供服务的那组Pod才会被映射为一个服务 为什么要使用Kubernetes 一旦搭建好Kubernetes环境后,后续对于应用的部署与运维,使用Kubernetes就非常方便了 Hello World Kubernetes的安装先不讲了 现在要做的事情是 使用Kubernetes部署MySQL与JavaWeb程序 JavaWeb可以访问Kubernetes 基本步骤 MySQL副本集 MySQL Service JavaWeb副本集 JavaWeb Service 下面的几个yaml文件在 https://github.com/nbcoolkid

Kubernetes 应用部署实战

天大地大妈咪最大 提交于 2019-12-06 14:25:50
Kubernetes 应用部署实战 2018-08-08 19:44:56 wuxiangping2017 阅读数 3084 收藏 更多 分类专栏: linux运维与架构师 简介 伙计们,请搬好小板凳坐好,下面将是一段漫长的旅程,期望你能够乐在其中。 我将基于 Kubernetes [1] 部署一个分布式应用。我曾试图编写一个尽可能真实的应用,但由于时间和精力有限,最终砍掉了很多细节。 我将聚焦 Kubernetes 及其部署。 让我们开始吧。 应用 TL;DR 该应用本身由 6 个组件构成。代码可以从如下链接中找到: Kubenetes 集群示例 [2]。 这是一个人脸识别服务,通过比较已知个人的图片,识别给定图片对应的个人。前端页面用表格形式简要的展示图片及对应的个人。具体而言,向 接收器 [3] 发送请求,请求包含指向一个图片的链接。图片可以位于任何位置。接受器将图片地址存储到数据库 (MySQL) 中,然后向队列发送处理请求,请求中包含已保存图片的 ID。这里我们使用 NSQ [4] 建立队列。 图片处理 [5] 服务一直监听处理请求队列,从中获取任务。处理过程包括如下几步:获取图片 ID,读取图片,通过 gRPC [6] 将图片路径发送至 Python 编写的 人脸识别 [7] 后端。如果识别成功,后端给出图片对应个人的名字。图片处理器进而根据个人 ID 更新图片记录

简单入门Kubernetes

与世无争的帅哥 提交于 2019-12-06 12:52:34
什么是Kubernetes 官网 https://kubernetes.io/ 中文版: https://kubernetes.io/zh/ 个人理解 基于容器技术 分布式架构 弹性伸缩 隔离物理机 和谷歌的Borg有关系 用于部署、管理、运维我们的应用 Kubernetes核心概念 Kubernetes中的大部分概念,如:Node、Pod、Replication Controller、Service,都可以被视作一种资源对象。几乎所有的资源对象都可以通过Kubernetes提供的 kubectl 工具执行CRUD,并将其保存在etcd中进行持久化存储。 从这个角度看,Kubernetes是一个高度自动化的资源控制系统 它通过比较etcd中保存的资源期望值与当前环境的实际资源状态之间的差异,实现自动控制和自动纠错的高级功能 Service 拥有唯一的名称 拥有一个虚拟IP和端口号 能够提供某种远程服务能力 被映射到提供这种服务能力的一组容器应用上 Node 物理机 云上的虚拟机 反正就是一台机器就对了 通常一个节点运行几百个Pod Replication Controller 副本集 它能够保证Pod持续运行,并且在任何时候都有指定数量的Pod副本,在此基础上提供一些高级特性,比如滚动升级和弹性伸缩 RC会在每个节点上创建Pod,Pod上如果有相应的Images可以直接创建

mysql-两种方式安装

送分小仙女□ 提交于 2019-12-06 12:05:28
一、数据库版本 MySQL 常见版本 MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。 MySQL Enterprise Edition 企业版本,需付费,可以试用 30 天。 MySQL Cluster 集群版,开源免费。可将几个 MySQL Server 封装成一个 Server。 MySQL Cluster CGE 高级集群版,需付费. 二、MySQL 安装部署 1、源码包编译安装 1)mysql5.5版本及以后为了安全使用 cmake进行依赖检测,和额外配置,(在5.5版本之前使用 configure )常用选项。按需选择 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql ----指定安装路径 -DMYSQL_DATADIR=/data/mysql ----mysql 的数据文件路径 -DSYSCONFDIR=/etc ----配置文件路径 -DWITH_INNOBASE_STORAGE_ENGINE=1 ----使用 INNOBASE 存储引擎 -DWITH_MYISAM_STORAGE_ENGINE=1 ----安装 myisam 存储引擎 -DWITH_MEMORY_STORAGE_ENGINE=1 ----安装 memory 存储引擎 -DWITH_READLINE=1 ---

mysql的外键探讨

こ雲淡風輕ζ 提交于 2019-12-06 11:12:56
在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。 一,什么是foreign key,及其完整性 个人觉得,foreign key就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强。关于完整性,关连性我举个例子,大家就会明白了。 有二张表,一张是用户表,一张是订单表: 1,如果我删除了用户表里的用户,那么订单表里面根这个用户有关的数据,就成了无头数据了,不完整了。 2,如果我在订单表里面,随便插入了一条数据,这个订单在用户表里面,没有与之对应的用户。这样数据也不完整了。 如果有外键的话,就方便多了,可以不让用户删除数据,或者删除用户的话,通过外键同样删除订单表里面的数据,这样也能让数据完整 外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作; 二,使用foreign key,遵守以下几点规则 1,有外键约束的表,必须是innodb型 2,外键约束的二个表,本来就相关系的表,并且要有索引关系,如果没有,创建外键时也可以创建索引。 3,不支持对外键列的索引前缀。这样的后果之一是BLOB和TEXT列不被包括在一个外键中,这是因为对这些列的索引必须总是包含一个前缀长度。 4,mysql外键的名子在数据库内要是唯一的 三,创建foreign key的语法规则 外键的定义语法: [CONSTRAINT

MySQL集群高可用

佐手、 提交于 2019-12-06 10:39:56
目录 MySQL高可用 Galera Cluster Galera Cluster Galera Cluster特点 Galera Cluster 缺点 Galera Cluster工作过程 Galera Cluster官方文档 Galera Cluster包括两个组件 WSREP复制实现 PXC 原理 PXC最常使用如下4个端口号: PXC中涉及到的重要概念和核心参数: 实战案例:Percona XtraDB Cluster(PXC 5.7) 在PXC集群中加入节点 在PXC集群中修复故障节点 实现MariaDB Galera Cluster 复制的问题和解决方案 性能衡量指标 数据库服务衡量指标: 压力测试工具 常见MySQl压力测试工具 mysqlslap 常用参数 [options] 说明: mysqlslap示例 生产环境 my.cnf 配置案例 MySQL配置最佳实践 MySQL高可用 Galera Cluster Galera Cluster Galera Cluster:集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分别是Percona Xtradb Cluster及MariaDB Cluster,Galera本身是具有多主特性的,即采用multi-master的集群架构

第一章 mysql架构和历史

房东的猫 提交于 2019-12-06 07:44:53
1.1 mysql逻辑架构 客户端 连接/线程处理 查询缓存——解析器 优化器 存储引擎 1.1.1 连接管理与安全性 每个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只有在这个单独的线程中执行,该线程只能轮流在某个CPU核心或者CPU中运行。服务器会负责缓存线程,因此不需要为每一个新建的连接创建或销毁线程。 当客户端(应用)连接到mysql服务器时,服务器需要对其进行认证。认证基于用户名、原始主机信息和密码。 1.1.2 优化与执行 优化器会请求存储引擎提供容量或某个具体操作的开销信息,以及表数据的统计信息等。 对于select查询语句,在解析查询之前,服务器会先检查查询缓存(Query Cache),如果能够在其中找到对应的查询,服务器就不必再执行查询解析、优化和执行的过程,而是直接返回查询缓存中的结果集。 1.2 并发控制 1.2.1 读写锁 共享锁(shared lock)和排他锁(exclusive lock),也叫读锁(read lock)和写锁(write lock)。 1.2.2锁粒度 一种提高共享资源并发性的方式就是让锁定对象更有选择性。尽量只锁定需要修改的部分数据,而不是所有的资源。更理想的方式是,只对会修改的数据片进行精确的锁定。任何时候,在给定的资源上,锁定的数据量越少,则系统的并发程度越高,只要相互之间不发生冲突即可。 问题是加锁也需要消耗资源

MySQL高可用方案

假装没事ソ 提交于 2019-12-06 06:36:00
最近整理了目前的MySQL高可用方案。 MySQL 高可用方案包括3大类: 共享存储 同步复制 基于复制的冗余 下面分别看下每种方案。 1.共享存储 共享存储实现了数据库服务器和存储设备的解耦。 比较典型的是SAN共享存储和DRBD磁盘复制。 1.1 SAN SAN(Storage Area Network)存储如图所示。 SAN共享存储中,如果主库发生宕机,备库可以挂载相同的文件系统,保证主库和备库使用相同的数据。 1.2 DRBD DRBD(Distributed Replicated Block Device)是Linux内核模块实现的块级别的同步复制技术,可以与SAN达到相同的共享存储效果。 2.同步复制 同步复制的基本原理是,要求数据在集群中所有节点或大多数节点上提交。 同步复制的数据库高可用方案,主要包括3种: MySQL Cluster Galera Cluster MGR 2.1 MySQL Cluster MySQL Cluster 或NDB Cluster 是MySQL 官方集群部署方案,基于NDB(Network DataBase) 存储引擎的完整的分布式数据库系统。 MySQL cluster主要由3部分组成: SQL 层的 SQL 服务器节点 Storage 层的 NDB 数据节点 负责管理各个节点的 Manage 节点 2.2 Galera

pg总览

时间秒杀一切 提交于 2019-12-06 03:37:05
一、编译安装初始化等 ./configure --prefix=/release --with-openssl --without-ldap --with-libxml - -enable-thread-safety make -j4 make install initdb -D /home/postgres/postgres_5432/data -U postgres -W --wal-segsize=16 -E UTF8 # 注意事项: # 1、-D 类似于mysql的datadir,data目录必须是空目录(否则初始化失败),且权限必须是0700(否则无法重启) # 2、--wal-segsize=16 选项:默认的就是16M大小的wal日志,PostgreSQL11版本的一个重要调整是支持initdb和 pg_resetwal修改WAL文件大小,而11版本之前只能在编译安装PostgreSQL时设置WAL文件大小。这一特性能够方便WAL文件的管理。WAL日志文件大小默认为16MB,该值必须是1到1024之间的2的次方,增大WAL文件大小能够减少WAL日志文件的产生。类似于mysql的redolog pg_resetwal --wal-segsize=64 -D /home/postgres/postgres_5432/data PostgreSQL的默认用户名和数据库也是