mysql中间件

MySQL 主从理论知识+搭建主从

狂风中的少年 提交于 2019-12-10 14:53:43
什么是MySQL主从同步 数据是一个应用至关重要的一部分。 从目的出发,主从同步有那么点备份的意思,主库(Master)将自己库中的写入同时同步给自己的从库(Slave), 当主库发生某些不可预知的状况,导致整个服务器无法使用时,由于从库中也有一份数据,所以数据可以做到快速恢复,不造成或者减少造成数据的损失。 当然,这只是第一个层面,如果主从库的作用仅限于此,那么我个人认为没有必要分为两个数据库,只需要定期将数据库内容作为快照发送到另一台服务器,或者每次写入时将写入内容实时发送到另一台服务器不就好了吗,这样不但可以节约资源,也可以起到容灾备份的目的。 当然主从同步的作用绝不可能仅限于此,一旦我们配置了主从结构,我们通常不会让从节点仅仅只作为备份数据库,我们应该还会相应地配置上读写分离 (可以使用MyCat或者其它中间件,可以自己了解一下,关于MyCat我在下一篇博客中会说这个,篇幅可能会有点长,所以就再写一篇吧)。 在实际环境下,对于数据库的读操作数目远大于对数据库的写操作,所以我们可以让Master只提供写的功能,然后将所有的读操作都移到从库,这就是我们平时常说的读写分离, 这样不但可以减轻Master的压力,还可以做容灾备份,一举两得 。 MySQL主从同步的原理 说完了主从同步的概念,下面来说说主从同步的原理,其实原理也非常简单,没有Redis集群那么多的概念。

Mysql、ES 数据同步

混江龙づ霸主 提交于 2019-12-10 00:49:14
数据同步中间件 不足:不支持 ES6.X 以上、Mysql 8.X 以上 ime 标识最大时间 logstash全量、增量同步解决方案 https://www.elastic.co/cn/downloads/logstash jar 包下载地址 https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.31 驱动包的配置 将驱动程序Jar文件复制到<logstash_install_dir>/logstash-core/lib/jars/目录。 然后在配置文件中,然后在mysql.conf里的就不需要在设置jdbc驱动包的配置了 mysql.conf input{ jdbc{ # 要使用的驱动包类 jdbc_driver_class => "com.mysql.jdbc.Driver" # mysql数据库的连接信息 jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/blog" # mysql用户 jdbc_user => "root" # mysql密码 jdbc_password => "root" # 定时任务,多久执行一次查询,默认一分钟,如果想要没有延迟,可以使用 schedule => "* * * * * *" schedule =>

单表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

数据库的选择(一)

不打扰是莪最后的温柔 提交于 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

为 Java EE 应用提供的 9 种 Docker 方法

孤人 提交于 2019-12-07 14:34:59
原文地址: http://www.admin10000.com/document/6116.html 你想在 Java EE 应用中使用 Docker 吗?   一个典型的Java EE应用程序由应用服务器(例如: WildFly )和数据库(例如:Mysql)组成的。除此以外,你也许还需要一个前端负载:例如Apache,用于多台应用服务器的负载均衡,缓存:例如Infinispan,可以用于提高应用的整体性能。消息中间件:例如 ActiveMQ ,可以用于处理队列。缓存和消息组件可以用于集群的进一步扩展。   本文将先讲解一个简单 Docker 容器配置方法:包括应用服务器和数据库。接下来将讲解几个高级应用方法:包括前端负载、缓存、消息中间件和集群。   让我们开始吧!   如果你的机器之前没有安装过Docker,那么首先你需要安装Docker。你可以使用是最新版本的linux,它已经集成了Docker,或者使用安装命令: sudo apt-get install docker-io 在Mac和windows系统上,则需安装 boot2docker ,它是一个微内核的linux虚拟机包含Docker主机。同时你需要配置ssh秘钥和证书。   幸运的是, Docker Machine . 使用非常简单。你从头开始到创建完成一个Docker主机只需要一条指令

mysql在海量数据时的处理方案

爱⌒轻易说出口 提交于 2019-12-07 11:24:18
1.分区 2.缓存 3.一主多从分离读多写少的压力 4.写的压力:分库分表 4.1分分表 水平切分: 数据库的垂直切分:按照 表功能和数据关联密切程度;表太多造成的海量数据考虑按业务逻辑划分;能缓解数据量和访问量造成的问题但不能根治; 表的垂直切分:可以分到多库中,不遵守范式 表的水平切分:解决单表数据量太大的问题、提高了稳定性和负载能力、应用端改造少 无论那种切分缺点都有分布式事务、节点join、跨节点合并排序分页、多数据源管理问题 5.中间件 1.作用:解析sql、读写分离、从库读的负载均衡、支持分库分表操作、支持垮裤关联、支持事务、主键ID生成、多数据源管理 2.类型:客户端模式(sharding-jdbc TDDL)、服务端代理模式(mycat cobar atlas heinsberge vitess kingshard) 6.分片优点 1.减少增量数据写入时的锁对查询的影响,减少长时间查询造成的表锁、锁竞争、排队时间开支 2.单表查询的基数变小、io减少、时延变短 7.实际粒度的掌控 业务紧密程度和表的数据量 7.1 表关系紧密且数据量不大、增速缓慢,则放在一起,无需水平切分; 7.2若划归到一起的表增速迅猛 则需要分库再分表 垂直分表:按照业务功能的使用频次,分成主次表 8.拆分原则 8.1能不拆就不拆 8.2提前规划好切分规则 8

Mysql访问中间件--Atlas初探

帅比萌擦擦* 提交于 2019-12-05 22:36:47
Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性,目前该项目在360公司内部得到了广泛应用。 Atlas主要有以下功能 读写分离 从库负载均衡 IP过滤 自动分表(目前只支持在同一个库中进行分表) DBA可平滑上下线DB 自动摘除宕机的DB Atlas相对于官方MySQL-Proxy有以下优势 将主流程中所有Lua代码用C重写,Lua仅用于管理接口 重写网络模型、线程模型 实现了真正意义上的连接池 优化了锁机制,性能提高数十倍 下面就一步一步带大家去安装和使用Atlas数据库中间件 安装Atlas-sharding_1.0.1-el6.x86_64.rpm包 大家可以从++ https://github.com/Qihoo360/Atlas/releases++网站下载到最新的rpm包,推荐使用rpm包安装 加密应用访问mysql数据库访问密码 安装好Atlas的rpm包之后,进入到/usr/local/mysql-proxy/bin目录,使用下面命令对密码进行加密 ./encrypt tony ANDKNNypf4k= <--这个就是加密后的密码 配置Atlas配置文件(/usr/local/mysql

MySQL读写分离

旧时模样 提交于 2019-12-05 17:56:53
Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。 因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部署与实施的。 读写分离应用: mysql-proxy:Oracle,https://downloads.mysql.com/archives/proxy/ Atlas:Qihoo,https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md dbproxy:美团,https://github.com/Meituan-Dianping/DBProxy Cetus:网易乐得,https://github.com/Lede-Inc/cetus Amoeba:https://sourceforge.net/projects/amoeba/ Cobar:阿里巴巴,Amoeba的升级版 Mycat:基于Cobar, http://www.mycat.io/ ProxySQL:https://proxysql.com/ ProxySQL ProxySQL: