mysql集群

通过构建微服务来学习Docker

别来无恙 提交于 2019-12-08 23:57:58
如果你正在寻找练手机会以便深入学习Docker,那么本文就是你最好的选择。在本文中,我将展示Docker是如何工作的,以及应用Docker完成构建一个基本的微服务开发任务。 我们将使用一个简单的Node.js服务与一个MySQL后端为例,实现从本地运行的代码迁移到容器化运行的微服务和数据库。 什么是Docker? 它的核心就是:Docker是一个允许你创建镜像(这包含了很多步骤,就像在虚拟机的模板一样)并且让这个镜像的实例运行在容器中的软件。 Docker维护着一个巨大的镜像资源库,我们称之为Docker Hub,我们可以使用它作为我们自己镜像存储的出发点。可以按照Docker,选择任意我们希望使用的镜像,然后在一个容器中执行这个镜像的实例。 安装Docker 为了继续学习和使用本文章的以下内容,第一步你需要安装Docker。 以下是基于你的平台的安装指南docs.docker.com/engine/installation. 假如是在使用Mac或者Windows,那么你可以考虑使用虚拟机。在Mac OS X上用的是Parallels来运行Ubuntu以支持大多数的开发活动。这种方式对于在各种实验中拍摄快照,中断以及恢复时是非常方便的。 试验开始 输入以下命令: docker run - it ubuntu 很快你就将会看到以下的命令提示符: root @719059da250d

抄来的,占个位儿【百度架构师是怎样搭建MySQL分布式集群】

孤人 提交于 2019-12-08 22:04:32
1、准备集群搭建环境 使用6台虚拟机来搭建 MySQL分布式集群 ,相应的实验环境与对应的MySQL节点之间的对应关系如下图所示: 管理节点(MGM):这类节点的作用是管理MySQLCluster内的其他节点,如提供配置数据,并停止节点,运行备份等。由于这类节点负责管理其他节点的配置,应该在启动其他节点之前启动这类节点。MGM节点是用命令“ndb_mgmd”启动的; 数据节点(NDB):这类节点用于保存Cluster的数据,数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点,没有必要设定过多的副本,在NDB中数据会尽量的保存在内存中。数据节点使用命令“ndb”启动的; SQL节点:这是用来访问Cluster数据的节点,对于MySQL Cluster,客户端节点是使用NDB Cluster存储引擎的传统MySQL服务器。通常,SQL节点使用命令“mysqld-ndbcluster”启动的; 2、准备安装包 在官网上下载mysql的安装包: mysql-cluster-gpl-7.4.11-Linux-glibc2.5-x86_64.tar.gz,并进行解压。 3、集群搭建流程 1]将上述安装包解压出来的文件都移到/usr/local/mysql下; 2]运行script目录下的mysql-install-db.sh脚本

单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构

天涯浪子 提交于 2019-12-08 18:18:57
此文是根据杨尚刚在【QCON高可用架构群】中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处。 杨尚刚,美图公司数据库高级DBA,负责美图后端数据存储平台建设和架构设计。前新浪高级数据库工程师,负责新浪微博核心数据库架构改造优化,以及数据库相关的服务器存储选型设计。 前言 MySQL数据库大家应该都很熟悉,而且随着前几年的阿里的去IOE,MySQL逐渐引起更多人的重视。 MySQL历史 1979年,Monty Widenius写了最初的版本,96年发布1.0 1995-2000年,MySQL AB成立,引入BDB 2000年4月,集成MyISAM和replication 2001年,Heikki Tuuri向MySQL建议集成InnoDB 2003发布5.0,提供了视图、存储过程等功能 2008年,MySQL AB被Sun收购,09年推出5.1 2009年4月,Oracle收购Sun,2010年12月推出5.5 2013年2月推出5.6 GA,5.7开发中 MySQL的优点 使用简单 开源免费 扩展性“好”,在一定阶段扩展性好 社区活跃 性能可以满足互联网存储和性能需求,离不开硬件支持 上面这几个因素也是大多数公司选择考虑MySQL的原因。不过MySQL本身存在的问题和限制也很多,有些问题点也经常被其他数据库吐槽或鄙视

MySQL大表优化方案

坚强是说给别人听的谎言 提交于 2019-12-08 18:12:14
当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在 千万级 以下,字符串为主的表在 五百万 以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量: 字段 尽量使用 TINYINT 、 SMALLINT 、 MEDIUM_INT 作为整数类型而非 INT ,如果非负则加上 UNSIGNED VARCHAR 的长度只分配真正需要的空间 使用枚举或整数代替字符串类型 尽量使用 TIMESTAMP 而非 DATETIME , 单表不要有太多字段,建议在20以内 避免使用NULL字段,很难查询优化且占用额外索引空间 用整型来存IP 索引 索引并不是越多越好,要根据查询有针对性的创建,考虑在 WHERE 和 ORDER BY 命令上涉及的列建立索引,可根据 EXPLAIN 来查看是否用了索引还是全表扫描 应尽量避免在 WHERE 子句中对字段进行 NULL 值判断,否则将导致引擎放弃使用索引而进行全表扫描 值分布很稀少的字段不适合建索引,例如"性别"这种只有两三个值的字段 字符字段只建前缀索引 字符字段最好不要做主键 不用外键,由程序保证约束 尽量不用 UNIQUE

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

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

MySQL海量数据分布式存储

心不动则不痛 提交于 2019-12-08 18:09:06
 本文只是一个概念,具体配置太多,这里不做细节描述。   1、分布式应用的概念和优势   分布式数据库是指利用高速网络将物理上分散的多个数据 存储 单元连接起来组成一个逻辑上统一的数据库。分布式数据库的基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获得更大的存储容量和更高的并发访问量。近年来,随着数据量的增长,分布式数据库技术也得到了快速的发展,传统的关系型数据库开始从集中式模型向分布式存储,从集中式计算走向分布式计算。   分布式数据库系统的主要目的是容灾、异地数据备份,并且通过就近访问原则,用户可以就近访问数据库节点,这样就实现了异地的负载均衡。同时,通过数据库之间的数据传输同步,可以分布式保持数据的一致性,这个过程完成了数据备份,异地存储数据在单点故障的时候不影响服务的访问,只需要将访问流量切换异地镜像就行。   分布式数据库应用的优势如下:   (1)适合分布式数据管理,能够有效提高系统性能。   (2)系统经济性和灵活性好。   (3)系统的可靠性和可用性强。   2、mysql分布式应用的主要技术   (1)mysql数据切割   数据切割(sharding)是指通过某种特定的条件,将存放在同一数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。数据切分还可以提高系统的总体可用性,因为单台crash之后

【转载】数据库水平切分的实现原理解析

一曲冷凌霜 提交于 2019-12-07 16:30:55
这篇文章很不错。对 数据库水平扩展技术的前因后果讲解得比较透。转载来与大家分享(原始出处我已经找不到了,应该是来自于阿里的同学们)。 ------------------------------------------ 1 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。水平切分数据库,可以降低单台机器的负载,同时最大限度的降低了了宕机造成的损失。通过负载均衡策略,有效的降低了单台机器的访问负载,降低了宕机的可能性;通过集群方案,解决了数据库宕机带来的单点数据库不能访问的问题;通过读写分离策略更是最大限度了提高了应用中读取(Read)数据的速度和并发量。目前国内的大型互联网应用中,大量的采用了这样的数据切分方案,Taobao,Alibaba,Tencent,它们大都实现了自己的分布式数据访问层(DDAL)。以实现方式和实现的层次来划分,大概分为两个层次(Java应用为例):JDBC层的封装,ORM框架层的实现。就JDBC层的直接封装而言,现在国内发展较好的一个项目是被称作“变形虫”(Amoeba)的项目,由阿里集团的研究院开发,现在仍然处于测试阶段(beta版)

数据库的选择(一)

不打扰是莪最后的温柔 提交于 2019-12-07 15:55:01
数据库如何选择 常用的数据库一般是分为五种: ( 一 ) 、 Access( 二 )SqlServer( 三 )MySQL( 四 )Oracle( 五 )SQLite ,那么,用户想做一个网站,到底 哪一种数据库是适合自己的呢 ? 以下给大家介绍一下常用的数据库有什么区别或是功能方面。 1 、 Access Access 是由微软发布的一款关联式数据序管型系统 , 常被用来开发 Web 应用程序这些应用程序都利用 Asp 技术在 IIs 上运行。不 过中于 Access 是小型数据库,商着根本的使用局限性,在数据库过大或者访间量高的时候性能会急剧下降。 2 、 Mysql MySQL 是一个小型关系型数据库管理系统,开发者为瑞典 MySQLAB 公司,在 2008 年 1 月 16 号被 Sun 公司收购。 MySQL 被广泛 地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为 了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。 3 、 SqlServer SqlServer 的特点是真正的客户 / 服务器体系结构 , 并且出十是图形化的用户界面,使数据库管理方式更加直观和简单。它还提供 了丰富的编程接口工具 为用户进行程序设计提供了更大的选择余 。 4 、 Oracle Oracle

MySQL大表优化方案

☆樱花仙子☆ 提交于 2019-12-07 15:07:34
当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在 千万级 以下,字符串为主的表在 五百万 以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量: 字段 尽量使用 TINYINT 、 SMALLINT 、 MEDIUM_INT 作为整数类型而非 INT ,如果非负则加上 UNSIGNED VARCHAR 的长度只分配真正需要的空间 使用枚举或整数代替字符串类型 尽量使用 TIMESTAMP 而非 DATETIME , 单表不要有太多字段,建议在20以内 避免使用NULL字段,很难查询优化且占用额外索引空间 用整型来存IP 索引 索引并不是越多越好,要根据查询有针对性的创建,考虑在 WHERE 和 ORDER BY 命令上涉及的列建立索引,可根据 EXPLAIN 来查看是否用了索引还是全表扫描 应尽量避免在 WHERE 子句中对字段进行 NULL 值判断,否则将导致引擎放弃使用索引而进行全表扫描 值分布很稀少的字段不适合建索引,例如"性别"这种只有两三个值的字段 字符字段只建前缀索引 字符字段最好不要做主键 不用外键,由程序保证约束 尽量不用 UNIQUE

Mariadb galera cluster 安装配置

吃可爱长大的小学妹 提交于 2019-12-07 13:34:54
MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力,集群部署是必不可少的。 MariaDB Galera Cluster 介绍 MariaDB集群是MariaDB同步多主机集群。它仅支持XtraDB/ InnoDB存储引擎(虽然有对MyISAM实验支持 - 看wsrep_replicate_myisam系统变量)。 主要功能: 同步复制 真正的multi-master,即所有节点可以同时读写数据库 自动的节点成员控制,失效节点自动被清除 新节点加入数据自动复制 真正的并行复制,行级 用户可以直接连接集群,使用感受上与MySQL完全一致 优势: 因为是多主,所以不存在Slavelag(延迟) 不存在丢失事务的情况 同时具有读和写的扩展能力 更小的客户端延迟 节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的 技术: Galera集群的复制功能基于Galeralibrary实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。 Galera插件保证集群同步数据,保持数据的一致性,靠的就是可认证的复制,工作原理如下图: 当客户端发出一个commit的指令,在事务被提交之前