精华内容
下载资源
问答
  • windows elasticsearch mysql 同步数据怎么整 网上的都是废话 jijiji
  • elasticsearch-jdbc实现MySQL同步ElasticSearch深入详解

    万次阅读 多人点赞 2016-06-16 20:43:07
    1.如何实现mysqlelasticsearch的数据同步?逐条转换为json显然不合适,需要借助第三方工具或者自己实现。核心功能点:同步增、删、改、查同步。2、mysqlelasticsearch同步的方法有哪些?优缺点对比?目前该领域...

    Elasticsearch 最少必要知识实战教程直播回放

    1.如何实现mysql与elasticsearch的数据同步?

    逐条转换为json显然不合适,需要借助第三方工具或者自己实现。核心功能点:同步增、删、改、查同步。

    2、mysql与elasticsearch同步的方法有哪些?优缺点对比?

    目前该领域比较牛的插件有:

    1)、elasticsearch-jdbc,严格意义上它已经不是第三方插件。已经成为独立的第三方工具。https://github.com/jprante/elasticsearch-jdbc
    2)、elasticsearch-river-mysql插件 https://github.com/scharron/elasticsearch-river-mysql
    3)、go-mysql-elasticsearch(国内作者siddontang) https://github.com/siddontang/go-mysql-elasticsearch

    1-3同步工具/插件对比:

    go-mysql-elasticsearch仍处理开发不稳定阶段。
    为什么选择elasticsearch-jdbc而不是elasticsearch-river-mysql插件的原因?(参考:http://stackoverflow.com/questions/23658534/using-elasticsearch-river-mysql-to-stream-data-from-mysql-database-to-elasticsea)
    1)通用性角度:elasticsearch-jdbc更通用,
    2)版本更新角度:elasticsearch-jdbc GitHub活跃度很高,最新的版本2.3.3.02016年5月28日兼容Elasticsearch2.3.3版本。
    而elasticsearch-river-mysql 2012年12月13日后便不再更新。
    综上,选择elasticsearch-jdbc作为mysql同步Elasticsearch的工具理所当然。

    elasticsearch-jdbc的缺点与不足(他山之石):

    1)、go-mysql-elasticsearch作者siddontang在博客提到的:
    elasticsearch-river-jdbc的功能是很强大,但并没有很好的支持增量数据更新的问题,它需要对应的表只增不减,而这个几乎在项目中是不可能办到的。
    http://www.jianshu.com/p/05cff717563c
    2)、
    博主leotse90在博文中提到elasticsearch-jdbc的缺点:那就是删除操作不能同步(物理删除)!
    http://leotse90.com/2015/11/11/ElasticSearch与MySQL数据同步以及修改表结构/

    我截止2016年6月16日没有测试到,不妄加评论。

    这里写图片描述

    3、elasticsearch-jdbc如何使用?要不要安装?

    3.1 和早期版本不同点

    elasticsearch-jdbcV2.3.2.0版本不需要安装。以下笔者使用的elasticsearch也是2.3.2测试。
    操作系统:CentOS release 6.6 (Final)
    看到这里,你可能会问早期的版本有什么不同呢?很大不同。从我搜集资料来看,不同点如下:
    1)早期1.x版本,作为插件,需要安装。
    2)配置也会有不同。

    3.2 elasticsearch-jdbc使用(同步方法一)

    前提:
    1)elasticsearch 2.3.2 安装成功,测试ok。
    2)mysql安装成功,能实现增、删、改、查。
    可供测试的数据库为test,表为cc,具体信息如下:

    mysql> select * from cc;
    +----+------------+
    | id | name |
    +----+------------+
    | 1 | laoyang |
    | 2 | dluzhang |
    | 3 | dlulaoyang |
    +----+------------+
    3 rows in set (0.00 sec)
    

    第一步:下载工具。
    址:http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch-jdbc/2.3.2.0/elasticsearch-jdbc-2.3.2.0-dist.zip
    第二步:导入Centos。路径自己定,笔者放到根目录下,解压。unzip elasticsearch-jdbc-2.3.2.0-dist.zip
    第三步:设置环境变量。

    [root@5b9dbaaa148a /]# vi /etc/profile
    export JDBC_IMPORTER_HOME=/elasticsearch-jdbc-2.3.2.0

    使环境变量生效:
    [root@5b9dbaaa148a /]# source /etc/profile
    第四步:配置使用。详细参考:https://github.com/jprante/elasticsearch-jdbc
    1)、根目录下新建文件夹odbc_es 如下:

    [root@5b9dbaaa148a /]# ll /odbc_es/
    drwxr-xr-x 2 root root 4096 Jun 16 03:11 logs
    -rwxrwxrwx 1 root root 542 Jun 16 04:03 mysql_import_es.sh

    2)、新建脚本mysql_import_es.sh,内容如下;

    [root@5b9dbaaa148a odbc_es]# cat mysql_import_es.sh
    ’#!/bin/sh
    bin=$JDBC_IMPORTER_HOME/bin
    lib=$JDBC_IMPORTER_HOME/lib
    echo '{
    "type" : "jdbc",
    "jdbc": {
    "elasticsearch.autodiscover":true,
    "elasticsearch.cluster":"my-application", #簇名,详见:/usr/local/elasticsearch/config/elasticsearch.yml
    "url":"jdbc:mysql://10.8.5.101:3306/test", #mysql数据库地址
    "user":"root", #mysql用户名
    "password":"123456", #mysql密码
    "sql":"select * from cc",
    "elasticsearch" : {
      "host" : "10.8.5.101",
      "port" : 9300
    },
    "index" : "myindex", #新的index
    "type" : "mytype" #新的type
    }
    }'| java \
      -cp "${lib}/*" \
      -Dlog4j.configurationFile=${bin}/log4j2.xml \
      org.xbib.tools.Runner \
      org.xbib.tools.JDBCImporter
    

    3)、为 mysql_import_es.sh 添加可执行权限。
    [root@5b9dbaaa148a odbc_es]# chmod a+x mysql_import_es.sh
    4)执行脚本mysql_import_es.sh
    [root@5b9dbaaa148a odbc_es]# ./mysql_import_es.sh

    第五步:测试数据同步是否成功。
    使用elasticsearch检索查询:

    [root@5b9dbaaa148a odbc_es]# curl -XGET 'http://10.8.5.101:9200/myindex/mytype/_search?pretty'
    {
      "took" : 4,
      "timed_out" : false,
      "_shards" : {
      "total" : 8,
      "successful" : 8,
      "failed" : 0
      },
      "hits" : {
      "total" : 3,
      "max_score" : 1.0,
      "hits" : [ {
      "_index" : "myindex",
      "_type" : "mytype",
      "_id" : "AVVXKgeEun6ksbtikOWH",
      "_score" : 1.0,
      "_source" : {
      "id" : 1,
      "name" : "laoyang"
      }
      }, {
      "_index" : "myindex",
      "_type" : "mytype",
      "_id" : "AVVXKgeEun6ksbtikOWI",
      "_score" : 1.0,
      "_source" : {
      "id" : 2,
      "name" : "dluzhang"
      }
      }, {
      "_index" : "myindex",
      "_type" : "mytype",
      "_id" : "AVVXKgeEun6ksbtikOWJ",
      "_score" : 1.0,
      "_source" : {
      "id" : 3,
      "name" : "dlulaoyang"
      }
      } ]
      }
    }
    

    出现以上包含mysql数据字段的信息则为同步成功。

    4、 elasticsearch-jdbc 同步方法二

    [root@5b9dbaaa148a odbc_es]# cat mysql_import_es_simple.sh
    #!/bin/sh
    bin=$JDBC_IMPORTER_HOME/bin
    lib=$JDBC_IMPORTER_HOME/lib
      java \
      -cp "${lib}/*" \
      -Dlog4j.configurationFile=${bin}/log4j2.xml \
      org.xbib.tools.Runner \
      org.xbib.tools.JDBCImporter statefile.json
    
    [root@5b9dbaaa148a odbc_es]# cat statefile.json
    {
    "type" : "jdbc",
    "jdbc": {
    "elasticsearch.autodiscover":true,
    "elasticsearch.cluster":"my-application",
    "url":"jdbc:mysql://10.8.5.101:3306/test",
    "user":"root",
    "password":"123456",
    "sql":"select * from cc",
    "elasticsearch" : {
      "host" : "10.8.5.101",
      "port" : 9300
    },
    "index" : "myindex_2",
    "type" : "mytype_2"
    }
    }
    

    脚本和json文件分开,脚本执行前先加载json文件。
    执行方式:直接运行脚本 ./mysql_import_es_simple.sh 即可。

    5、Mysql与elasticsearch等价查询

    目标:实现从表cc中查询id=3的name信息。
    1)MySQL中sql语句查询:

    mysql> select * from cc where id=3;
    +----+------------+
    | id | name |
    +----+------------+
    | 3 | dlulaoyang |
    +----+------------+
    1 row in set (0.00 sec)
    

    2)elasticsearch检索:

    [root@5b9dbaaa148a odbc_es]# curl http://10.8.5.101:9200/myindex/mytype/_search?pretty -d '
    {
    "filter" : { "term" : { "id" : "3" } }
    }'
    {
      "took" : 3,
      "timed_out" : false,
      "_shards" : {
      "total" : 8,
      "successful" : 8,
      "failed" : 0
      },
      "hits" : {
      "total" : 1,
      "max_score" : 1.0,
      "hits" : [ {
      "_index" : "myindex",
      "_type" : "mytype",
      "_id" : "AVVXKgeEun6ksbtikOWJ",
      "_score" : 1.0,
      "_source" : {
      "id" : 3,
      "name" : "dlulaoyang"
      }
      } ]
      }
    }
    

    常见错误:

    错误日志位置:/odbc_es/logs
    日志内容:
    [root@5b9dbaaa148a logs]# tail -f jdbc.log
    [04:03:39,570][INFO ][org.xbib.elasticsearch.helper.client.BaseTransportClient][pool-3-thread-1] after auto-discovery connected to [{5b9dbaaa148a}{aksn2ErNRlWjUECnp_8JmA}{10.8.5.101}{10.8.5.101:9300}{master=true}]

    Bug1、[02:46:23,894][ERROR][importer.jdbc ][pool-3-thread-1] error while processing request: cluster state is RED and not YELLOW, from here on, everything will fail!
    原因:
    you created an index with replicas but you had only one node in the cluster. One way to solve this problem is by allocating them on a second node. Another way is by turning replicas off.
    你创建了带副本 replicas 的索引,但是在你的簇中只有一个节点。

    解决方案:
    方案一:允许分配‘它们’到第二个节点。

    方案二:关闭副本replicas(非常可行)。如下:

    curl -XPUT 'localhost:9200/_settings' -d '
    {
      "index" : {
      "number_of_replicas" : 0
      }
    }
    

    Bug2、[13:00:37,137][ERROR][importer.jdbc ][pool-3-thread-1] error while processing request: no cluster nodes available, check settings {autodiscover=false, client.transport.ignore_cluster_name=false, client.transport.nodes_sampler_interval=5s, client.transport.ping_timeout=5s, cluster.name=elasticsearch,
    org.elasticsearch.client.transport.NoNodeAvailableException: no cluster nodes available, check
    解决方案:
    见上脚本中新增:
    “elasticsearch.cluster”:“my-application”, #簇名,和/usr/local/elasticsearch/config/elasticsearch.yml 簇名保持一致。

    参考:
    http://stackoverflow.com/questions/11944915/getting-an-elasticsearch-cluster-to-green-cluster-setup-on-os-x

    ——————————————————————————————————
    更多ES相关实战干货经验分享,请扫描下方【铭毅天下】微信公众号二维码关注。
    (每周至少更新一篇!)

    这里写图片描述
    和你一起,死磕Elasticsearch
    ——————————————————————————————————
    2016-6-16 思于家中床前

    作者:铭毅天下
    转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/51694519
    如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!

    展开全文
  • go-mysql-elasticsearch实现mysqlelasticsearch实时同步深入详解
                         

    引言:

    go-mysql-elasticsearch 是国内作者开发的一款插件。测试表明:该插件优点:能实现同步增、删、改、查操作。不足之处(待完善的地方):
    1、仍处理开发、相对不稳定阶段;
    2、没有日志,不便于排查问题及查看同步结果。
    本文深入详解了插件的安装、使用、增删改查同步测试。

    1. go-mysql-elasticsearch 插件安装

    步骤1:安装go

    yum install go

    步骤2:安装godep

    go get github.com/tools/godep

    步骤3:获取go-mysql-elastisearch插件

    go get github.com/siddontang/go-mysql-elasticsearch

    步骤4:安装go-mysql-elastisearch插件

    cd $GOPATH/src/github.com/siddontang/go-mysql-elasticsearch
    make

    2.go-mysql-elasticsearch 插件使用

    2.1修改配置文件

    [root@5b9dbaaa148a etc]# cat river.toml# MySQL address, user and password# user must have replication privilege in MySQL.my_addr = "192.168.1.1:3306"my_user = "root"my_pass = "password@!"# Elasticsearch addresses_addr = "192.168.1.1:9200"# Path to store data, like master.info, and dump MySQL data data_dir = "./var"# Inner Http status addressstat_addr = "192.168.1.1:12800"# pseudo server id like a slave server_id = 1# mysql or mariadbflavor = "mysql"# mysqldump execution pathmysqldump = "mysqldump"# MySQL data source[[source]]schema = "test"# Only below tables will be synced into Elasticsearch.# "test_river_[0-9]{4}" is a wildcard table format, you can use it if you have many sub tables, like table_0000 - table_1023# I don't think it is necessary to sync all tables in a database.tables = ["cc"]# Below is for special rule mapping#[[rule]]#schema = "test"#table = "cc"#index = "go_river"#type = "go_rivert"    # title is MySQL test_river field name, es_title is the customized name in Elasticsearch #   [rule.field]    # This will map column title to elastic search my_title  #  title="es_title"    # This will map column tags to elastic search my_tags and use array type   # tags="my_tags,list"    # This will map column keywords to elastic search keywords and use array type    #keywords=",list"# wildcard table rule, the wildcard table must be in source tables [[rule]]schema = "test"table = "cc"index = "gocc"type = "gocc_t"    # title is MySQL test_river field name, es_title is the customized name in Elasticsearch    [[rule.fields]]    mysql = "mysql101"    elastic = "es_mysql101"
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61

    2.2执行同步操作

    cd $GOPATH/src/github.com/siddontang/go-mysql-elasticsearch
    ./bin/go-mysql-elasticsearch -config=./etc/river.toml

    3. go-mysql-elasticsearch 插件同步测试结果

    3.1插入Insert操作实时同步验证(验证ok)

    3.1.1Mysql端插入操作

    mysql> insert into cc(id,name) values(12, ‘test12’);
    Query OK, 1 row affected (0.06 sec)

    3.1.2Mysql执行insert后查询结果

    mysql> select * from cc where id =12;
    +—-+——–+——–+———————+
    | id | name   | status | modified_at         |
    +—-+——–+——–+———————+
    | 12 | test12 | ok     | 2016-06-24 02:27:29 |
    +—-+——–+——–+———————+
    1 row in set (0.02 sec)

    3.1.3ES端能查询到新增的value字段。

    [root@5b9dbaaa148a bin]# curl -XGET http://192.168.1.1:9200/gocc/_search?pretty -d '> {"query":> {"term":> {"id":12}}}'{  "took" : 402"timed_out" : false"_shards" : {    "total" : 8,    "successful" : 8,    "failed" : 0  },  "hits" : {    "total" : 1,    "max_score" : 1.0,    "hits" : [ {      "_index" : "gocc",      "_type" : "gocc_t",      "_id" : "12",      "_score" : 1.0,      "_source" : {        "id" : 12,        "modified_at" : "2016-06-24T02:27:29+01:00",        "name" : "test12",        "status" : "ok"      }    } ]  }}
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    3.2修改Update操作实时同步验证(验证ok)

    3.2.1mysql执行更新操作

    mysql> update cc set name = 'test12_001' where id = 12;Query OK, 1 row affected (0.05 sec)Rows matched: 1  Changed: 1  Warnings: 0
    • 1
    • 2
    • 3

    3.2.2mysql执行修改后查询

    Mysql查询修改后结果:

    mysql> select * from cc where id = 12;+----+------------+--------+---------------------+| id | name       | status | modified_at         |+----+------------+--------+---------------------+| 12 | test12_001 | ok     | 2016-06-24 02:27:29 |+----+------------+--------+---------------------+1 row in set (0.00 sec)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.2.3 ES查询修改结果

    [root@5b9dbaaa148a bin]# curl -XGET http://192.168.1.1:9200/gocc/_search?pretty -d '{"query":{"term":{"id":12}}}'{  "took" : 59"timed_out" : false"_shards" : {    "total" : 8,    "successful" : 8,    "failed" : 0  },  "hits" : {    "total" : 1,    "max_score" : 1.0,    "hits" : [ {      "_index" : "gocc",      "_type" : "gocc_t",      "_id" : "12",      "_score" : 1.0,      "_source" : {        "id" : 12,        "modified_at" : "2016-06-24T02:27:29+01:00",        "name" : "test12_001",        "status" : "ok"      }    } ]  }}
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    3.3删除操作实时同步验证

    3.3.1Mysql执行删除操作

    mysql> delete from cc where id = 12;Query OK, 1 row affected (0.04 sec)
    • 1
    • 2

    3.3.2删除后查询表

    mysql> select * from cc;+----+--------------------+--------+---------------------+| id | name               | status | modified_at         |+----+--------------------+--------+---------------------+|  1 | laoyang360         | ok     | 0000-00-00 00:00:00 ||  2 | test002            | ok     | 2016-06-23 06:16:42 ||  3 | dlllaoyang360      | ok     | 0000-00-00 00:00:00 || 11 | test11             | ok     | 2016-06-24 02:09:15 ||  5 | jdbc_test_update08 | ok     | 0000-00-00 00:00:00 ||  7 | test7              | ok     | 0000-00-00 00:00:00 ||  8 | test008            | ok     | 0000-00-00 00:00:00 ||  9 | test009            | ok     | 0000-00-00 00:00:00 || 10 | test10             | ok     | 2016-06-24 02:08:14 |+----+--------------------+--------+---------------------+9 rows in set (0.02 sec)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    3.3.3ES查询删除后结果

    [root@5b9dbaaa148a bin]# curl -XGET http://192.168.1.1:9200/gocc/_search?pretty -d '{"query":{"term":{"id":12}}}'{  "took" : 40"timed_out" : false"_shards" : {    "total" : 8,    "successful" : 8,    "failed" : 0  },  "hits" : {    "total" : 0,    "max_score" : null,    "hits" : [ ]  }}
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    4小结

    验证发现:
    (1)go-mysql-elasticsearch插件可以实现同步insert、update、delete操作。
    (2)可视化做的不好,没有打印日志。
    (3)go-mysql-elasticsearch尚不大稳定,出现过无法同步成功的情况,但没有报错。不便于排查。

    ——————————————————————————————————
    更多ES相关实战干货经验分享,请扫描下方【铭毅天下】微信公众号二维码关注。
    (每周至少更新一篇!)

    这里写图片描述
    和你一起,死磕Elasticsearch
    ——————————————————————————————————
    作者:铭毅天下 
    转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/51771483
    如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!

               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • elasticsearch mysql数据同步

    千次阅读 2016-10-24 20:36:36
    elasticsearch安装完之后就该考虑与mysql数据同步了,此处采用elasticsearch-jdbc插件 环境centos+elasticsearch-2.3.3 +elasticsearch-jdbc-2.3.3.02、

    elasticsearch安装完之后就该考虑与mysql数据同步了,此处采用elasticsearch-jdbc插件

    1、环境

    centos+elasticsearch-2.3.3 +elasticsearch-jdbc-2.3.3.0

    2、下载地址

    jdbc github下载地址
    https://github.com/jprante/elasticsearch-jdbc
    注:注意版本要对应

    3、centos安装

    上传到centos服务器上(先用maven进行编译打包)
    ①解压

    unzip elasticsearch-jdbc-2.3.3.0-dist.zip
    ②配置环境变量

    vi /etc/profile

    这里写图片描述

    四、脚本编写

    #!/bin/sh
    bin=/es/elasticsearch-jdbc-2.3.3.0/bin
    lib=/es/elasticsearch-jdbc-2.3.3.0/lib
    page=$1             #此处采用分页
    page1=$[$1-1]  
    page2=$[page1*10000]
    pageSize=10000          #每页条数
    echo '{
    "type" : "jdbc",
    "jdbc": {
    "elasticsearch.autodiscover":true,
    "elasticsearch.cluster":"my-application",#elasticsearch集群名字
    "url":"jdbc:mysql://192.168.*.*:3306/test",#数据库地址
    "user":"test", #数据库用户名
    "password":"test",#数据库密码
    "sql":"select *,gifId as _id from tb_gif_info limit '$page2',10000",  #把主键重命名为_id,elasticsearch以_id为主键,若没有,则elasticsearch自动生成
    "elasticsearch" : {
      "host" : "*.*.*.*",#elasticsearch服务器地址
      "port" : 9300      #默认端口号
    },
    "index" : "index_name",#等同与数据库名
    "type" : "type_name"   #等同于数据表,
    }
    }'| "/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.111-0.b15.el6_8.x86_64/bin/java" \#jdk路径
      -cp "${lib}/*" \
      -Dlog4j.configurationFile=${bin}/log4j2.xml \
      org.xbib.tools.Runner \
      org.xbib.tools.JDBCImporter
    
    

    注elasticsearch-jdbc以JDK1.8为准
    給import_info.sh副执行权限
    chmod a+x import_info.sh

    五、python
    pythonfor循环分页插入数据

    import os
    a = 0
    for i in range(2,200):
    a += (i+1);
    os.system(‘./import_info.sh ’ +str(i))
    print a

    展开全文
  • Windows使用go-mysql-elasticsearch工具同步Mysql数据到ElasticSearch go-mysql-elasticsearch简介 1.go-mysql-elasticsearch是一个将MySQL数据自动同步Elasticsearch的服务。它首先使用mysqldump获取原始数据,...

    Windows使用go-mysql-elasticsearch工具同步Mysql数据到ElasticSearch


    go-mysql-elasticsearch简介

    1.go-mysql-elasticsearch是一个将MySQL数据自动同步到Elasticsearch的服务。它首先使用mysqldump获取原始数据,然后用binlog增量地同步数据。
    2. 这里有几点注意事项:
    Mysql的binlog必须是ROW模式,不然启动会报错。
    连接Mysql的用户权限需要大一些。

    安装

    1.Go安装包下载

    #Windows安装
    https://studygolang.com/dl //Go下载地址
    #打开Cmd
    #安装godep
    go get github.com/tools/godep
    #下载go-mysql-elastisearch插件
    go get github.com/siddontang/go-mysql-elasticsearch
    #切换目录到
    C:\Users\MarLonBrando\go\src\github.com\siddontang\go-mysql-elasticsearch\cmd\go-mysql-elasticsearch
    #编译
    go build
    
    #linux获取安装包
    yum install -y go
    #安装godep
    go get github.com/tools/godep
    #下载go-mysql-elastisearch插件
    go get github.com/siddontang/go-mysql-elasticsearch
    #进入对应目录,比如我使用的如下目录/root/go/src/github.com/siddontang/go-mysql-elasticsearch
    cd /root/go/src/github.com/siddontang/go-mysql-elasticsearch
    #编译
    make
    

    Windows编译成功后会返回一个.exe文件如下
    在这里插入图片描述
    2.配置开启binlog

    • Windows

    需要在mysql中开启binlog,首先查询一下是否开启了binlog
    Windows在打开my.ini文件,在mysqld下面添加,保存文件,重启mysql服务

       log_bin=mysql-bin
       binlog-format=ROW
       server-id=1
    

    • linux
      接下来需要在mysql中开启binlog,首先查询一下是否开启了binlog。
    #进入mysql
    mysql -uroot -p
    #输入密码,然后输入如下命令查看binlog开启状态
    show variables like '%log_bin%';
    #,ON为开启了,如果没有开启的话为OFF。
    

    如果没有开启的话,需要在my.cnf配置中添加如下配置(其中server-id可以根据情况设置,这里设置为1,log-bin为日志位置,一定要给日志写的权限,不然会报错,binlog_format为模式,这里必须为ROW):

    # MySQL address, user and password
    # user must have replication privilege in MySQL.
    my_addr = "127.0.0.1:3306"
    my_user = "root"
    my_pass = "1234"
    my_charset = "utf8"
    # Set true when elasticsearch use https
    #es_https = false
    # Elasticsearch address
    es_addr = "127.0.0.1:9200"
    # Elasticsearch user and password, maybe set by shield, nginx, or x-pack
    es_user = ""
    es_pass = ""
    # Path to store data, like master.info, if not set or empty,
    # we must use this to support breakpoint resume syncing. 
    # TODO: support other storage, like etcd. 
    data_dir = "./var"
    # Inner Http status address
    stat_addr = "127.0.0.1:12800"
    stat_path = "/metrics"
    # pseudo server id like a slave 
    server_id = 1001
    # mysql or mariadb
    flavor = "mysql"
    # mysqldump execution path
    # if not set or empty, ignore mysqldump.
    mysqldump = "mysqldump"
    # if we have no privilege to use mysqldump with --master-data,
    # we must skip it.
    #skip_master_data = false
    # minimal items to be inserted in one bulk
    bulk_size = 128
    # force flush the pending requests if we don't have enough items >= bulk_size
    flush_bulk_time = "200ms"
    # Ignore table without primary key
    skip_no_pk_table = false
    # MySQL data source
    [[source]]
    # 需要同步的数据库
    schema = "bigdatacar"
    # Only below tables will be synced into Elasticsearch.
    # "t_[0-9]{4}" is a wildcard table format, you can use it if you have many sub tables, like table_0000 - table_1023
    # I don't think it is necessary to sync all tables in a database.
    #tables = ["t", "t_[0-9]{4}", "tfield", "tfilter"]
    tables = ["t_user"]
    [[rule]]
    schema = "bigdatacar"
    table ="t_user"
    index = "bigdatacar"
    type = "t_user"
    [rule.field]
    # Map column `id` to ES field `es_id`
    id="es_id"
    # Map column `tags` to ES field `es_tags` with array type 
    tags="es_tags,list"
    # Map column `keywords` to ES with array type
    keywords=",list"
    # Only sync following columns
    #filter = ["id", "name"]
    # The es doc's id will be `id`:`tag`
    # It is useful for merge muliple table into one type while theses tables have same PK 
    #id = ["id", "tag"]
    
    运行程序进行数据同步在这里插入图片描述
    C:\Users\MarLonBrando\go\src\github.com\siddontang\go-mysql-elasticsearch\cmd\go-mysql-elasticsearch>
    
    go-mysql-elasticsearch.exe -config=C:\Users\MarLonBrando\go\src\github.com\siddontang\go-mysql-elasticsearch\etc\river.toml
    

    Es查看索

    http://localhost:9200/_cat/indices?v
    
    展开全文
  • elasticsearchlogstash同步mysql数据到elasticsearch ******************************** logstash管道配置 从mysql读取数据,输出到控制台、elasticsearch input { jdbc { jdbc_connection_string => ...
  • 本文介绍如何使用go-mysql-elasticsearch同步mysql数据库信息到ElasticSearch。 1.go-mysql-elasticsearch简介 go-mysql-elasticsearch是一个将MySQL数据自动同步Elasticsearch的服务。 它首先使用mysqldump获取...
  • ElasticSearch同步MySql

    千次阅读 热门讨论 2016-07-01 09:07:45
    ElasticSearch同步Mysql的插件选择了elasticsearch-jdbc,理由是活跃度高,持续更新,最新版本兼容elasticsearch-2.3.3.一、下载下载地址:https://github.com/jprante/elasticsearch-jdbc 下载后解压,里面有bin、lib...
  • 主要用到了一个 JDBC importer for Elasticsearch的库。 想要增量同步,有一些先决条件。首先数据库中要维护一个update_time的时间戳,这个字段表示了该记录的最后更新时间。然后用上面的那个库,定时执行一个...
  • 一个将MySQL的数据同步ElasticSearch的工具。首次初始导入基于mysqldump,增量同步基于MySQL的binlog机制,采用Python语言开发。 标签:数据同步
  • Elasticsearch(ES)可用于全文检索、日志分析、指标分析、APM等众多场景,而且搭建部署容易,后期弹性扩容、故障处理简单。ES在一定程度上实现了一套系统支持多个场景的希望,大幅度降低使用多套专用系统的运维成本...
  • 但很多情况下,我们的需求是:现在的数据存储在mysql、oracle等关系型传统数据库中,如何尽量不改变原有数据库表结构,将这些数据的insert,update,delete操作结果实时同步elasticsearch(简称ES)呢? 本文基于以上...
  • mysql5.7 elasticsearch数据同步前提1.下载 go-mysql-elasticsearch2. 配置文件 river.toml3.运行执行 前提 mysql 5.7 (开启 binlog row) go环境 es环境安装` es 环境安装参考github:es-head docker 安装 1....
  • 基于运河的Mysql的与Elasticsearch实时同步的的JavaWeb服务。 canal是阿里巴巴mysql数据库binlog的增量订阅和消费组件。 工作原理 全量 暴露的Http接口(接口定义见 ),待调用后开启后台线程,通过主键分批同步指定...
  • 问题描述:logstash在同步mysql数据到elasticsearch上时,跟踪的column是时间变量,因为mysql 用的时区是东八区时间,而经过logstash到es上全部会转成是零时区时间,记录的:sql_last_value 时间也可能会产生时间差...
  • 注意:同步时,只有增加和修改数据库的数据时会同步Elasticsearch,删除记录时不会将Elasticsearch中的纪录删除。所以,在应用程序中,需要删除数据库中的纪录后,使用API清除ES中的缓存数据。 1.创建数据库表 ...
  • go-mysql-elasticsearch 同步mysql 遇到的问题
  • elasticsearch-2.3.2.tar.gz和elasticsearch-jdbc-2.3.2.0-dist.zip,可以进行mysql数据库数据同步到es中,亲测有效。详见博客http://www.cnblogs.com/zhongshengzhen/
  • 使用Logstash将MySQL数据同步elasticsearch: input { stdin { } jdbc { jdbc_driver_library => "mysql-connector-java-5.1.46-bin.jar" jdbc_driver_class => "...
  • 首先安装Elasticsearch,参考https://blog.csdn.net/letterss/article/details/91361205 同步我们需要用到logstash工具,下载logstash 将下载的logstash-7.2.0.tar解压 tar -zxvflogstash-7.2.0.tar 将mysql的...
  • jdbc.rar elasticsearchmysql 同步所需要jar包jdbc.rar

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,664
精华内容 665
关键字:

elasticsearchmysql同步

mysql 订阅