elasticsearch 冷热数据的读写分离

步骤

一、冷热分离集群配置

比如三个机器共六个node的es集群。

每个机器上各挂载一个ssd 和 一个sata。每个机器需要启动两个es进程、每个进程对应不同类型的磁盘。

关键配置:

node.max_local_storage_nodes: 2   #允许每个机器启动两个es进程

path.data: /home/centos/es/elasticsearch-2.1.0/data/ssd   #需要显示指定es对应的数据目录

启动命令中需要指定node tag

./elasticsearch -d -Des.path.conf=/home/centos/es/elasticsearch-2.1.0/config/ssd -d --node.tag=ssd
./elasticsearch -d -Des.path.conf=/home/centos/es/elasticsearch-2.1.0/config/sata -d --node.tag=sata

启动以后节点如下:

二、创建索引模板

http://192.168.126.132:9200/_template/hottest/    PUT

{
    "order": 1,
    "template": "hottest*",
    "settings": {
        "index": {
            "number_of_shards": "3",
            "number_of_replicas": "1",
            "refresh_interval": "1s",
            "routing.allocation.require.tag": "ssd"
        }
    },
    "mappings": {
        "_default_": {
            "properties": {
                "userid": {
                    "index": "not_analyzed",
                    "type": "string"
                },
                "username": {
                    "index": "not_analyzed",
                    "type": "string"
                },
                "sex": {
                    "index": "not_analyzed",
                    "type": "string"
                },
                "address": {
                    "index": "no",
                    "type": "string"
                }
            },
            "_all": {
                "enabled": false
            }
        }
    },
    "aliases": {
        "hottest": {}
    }
}
"routing.allocation.require.tag": "ssd"  指定默认写入到 ssd 节点。

三、插入数据

http://192.168.126.132:9200/hottest_20170805/def/100001/  PUT

{
    "userid": "100001",
    "username": "zhangsan",
    "sex": "1",
    "address": "beijing"
}

在head 中看到数据全部保存在的 ssd 节点。

四、定时迁移老数据到 sata

http://192.168.126.132:9200/hottest_20170805/_settings/  PUT

{
    "index.routing.allocation.require.tag": "sata"
}

在head中看到数据移动到了 sata 节点

解决了两个问题

一、使用有限的ssd节点资源来实现同时支持高并发读写和大数据量的存储。

通过配置使最新的数据保存在ssd磁盘节点上,较老的数据自动迁移到廉价sata节点。

二、用户做一次大的查询,大量的读io和聚合操作导致集群load升高,阻塞新数据的写入,能做到一定程度的读写分离。

时间: 2024-10-11 01:45:41

elasticsearch 冷热数据的读写分离的相关文章

Spring和MyBatis实现数据的读写分离

1.Spring实现数据库的读写分离 现在大型的电子商务系统,在数据库层面大都采用读写分离技术,就是一个Master数据库,多个Slave数据库.Master库负责数据更新和实时数据查询,Slave库当然负责非实时数据查询.因为在实际的应用中,数据库都是读多写少(读取数据的频率高,更新数据的频率相对较少),而读取数据通常耗时比较长,占用数据库服务器的CPU较多,从而影响用户体验.我们通常的做法就是把查询从主库中抽取出来,采用多个从库,使用负载均衡,减轻每个从库的查询压力. 采用读写分离技术的目标

MySQL Proxy实现数据的读写分离

做MySQL读写分离实验之前,先要搭建MySQL主从复制,可以参考我之前的两篇文章: MySQL主从配置:http://msiyuetian.blog.51cto.com/8637744/1697288 部署搭建分层次LAMP架构(最后一章节):http://msiyuetian.blog.51cto.com/8637744/1740236 实现了主从复制后,下面我们进行读写分离的安装与配置.环境说明: Linux发行版本:centos 6.7 x86_64 (三台) Hostname IP 备

net.sz.framework 框架 轻松搭建数据服务中心----读写分离数据一致性,滑动缓存

前言 前文讲述了net.sz.framework 框架的基础实现功能,本文主讲 net.sz.framework.db 和 net.sz.framework.szthread; net.sz.framework.db 是 net.sz.framework 底层框架下的orm框架,仿照翻译了hibernate实现功能,虽然不足hibernate强大:但在于其功能实现单一高效和高可控性: net.sz.framework.szthread 是 net.sz.framework 底层框架下的线程控制中

阿里云RDS读写分离数据查询延迟解决

mysql使用RDS做数据主从读写分离.在使用的过程中发现部分业务对其他服务以来严重.但是由于系统不是采用微服务的架构,造成部分数据插入数据库后,后续操作读取数据库没有查询到前面插入的数据.查看阿里云服务器找到了一个解决方案:即在sql语句前增加/*FORCE_MASTER*/ 注释.rds就会自动读主库.详细介绍如下: 阿里云内部网络会确保同步日志在主实例和只读实例间的实时传输,正常情况下只读实例不会有延迟产生.但受限于 MySQL 本身的复制机制,若同步日志的应用时间较久,会产生数据同步的延

mysql-poxy 实现mysql主从架构读写分离

在高并发系统设计中,后端数据库的性能往往会成为系统的瓶颈,这时候就需要进行合理的设计,以分摊后端数据库的压力,比如在数据层前面构建缓存层.数据文件存放在RAID这样的设备.对数据进行分库分表分区存放.合理利用索引.进行数据的读写分离等.mysql-proxy提供了mysql数据库的读写分离能力,mysql-proxy通过Lua脚本能分析得出用户的sql请求,如果发现在是read请求,则会转化到master-slave模型的slave中,如果是write请求,则会转发到master中,以达到读写分

基于Mycat实现的mysql的读写分离

mycat就相当于一个调度器,具有数据库分片功能,本身不存储数据, 其功能是对后端的真实数据库的数据,进行数据划分和数据整合,方便管理 HOW-Mycat-Read&&write separation 现在让我们通过mycat实现数据库的读写分离 本实验中其他配置文件,参见            基于mysql的主从复制之Mycat简单配置和高可用 定义读,写节点 vim   schema.xml 19                 <table name="employ

2-17-MySQL读写分离-mysql-proxy

MYSQL读写分离的概述 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面.因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy/Amoeba)来提升数据库的并发负载能力 这样的方案来进行部署与实施的.读写分离工作原理:基本的原理是让主数据库处理事务性增.改.删操作(I

全文索引Sphinx+binlog日志+Grant用户授权+读写分离和主从复制

一.全文索引Sphinx 1.什么是Sphinx Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.它是基于C语言开发出来的.中文翻译为斯芬克司斯芬克司. Sphinx最好的应用操作系统是Linux 2.Sphinx的优势 Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索.Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Pytho

读写分离的概念(转)

随着一个网站的业务不断扩展,数据不断增加,数据库的压力也会越来越大,对数据库或者SQL的基本优化可能达不到最终的效果,我们可以采用读写分离的策略来改变现状.读写分离现在被大量应用于很多大型网站,这个技术也不足为奇了.ebay就做得非常好.ebay用的是Oracle,听说是用Quest Share Plex 来实现主从复制数据. 读写分离简单的说是把对数据库读和写的操作分开对应不同的数据库服务器,这样能有效地减轻数据库压力,也能减轻io压力.主数据库提供写操作,从数据库提供读操作,其实在很多系统中