快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

ElasticSearch实时同步MySQL数据

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

ElasticSearch是当前可用于站点搜索和日志分析的最受欢迎的开源框架。

目前,我们计划基于ElasticSearch搜索或分页所有文章。它的”快速搜索速度,分词,突出显示和其他功能”非常吸引人。

通常,为了减轻MySQL的压力,我们可以尝试使用MySQL从ElasticSearch或Redis进行写入和读取。然后,我们需要解决的是如何将MySQL中的数据实时或近乎实时地同步到ElasticSearch。您可以使用MySQL的binlog,该binlog记录MySQL执行的SQL语句(查询语句除外),该语句可用于还原数据。

当前有一些开源框架使用binlog将mysql数据同步到es。本文介绍其中之一:go-mysql-elasticsearch,在mac上实践。

官方地址:https://github.com/siddontang/go-mysql-elasticsearch

1.下载

转到语言中文网站:https://studygolang.com/dl

下载\ gt; 1.9版对应的软件包,mac版可以直接下载后缀为pkg的执行文件,双击安装

您也可以直接下载压缩包,然后将其解压缩

2.配置环境变量

  1. 导出? PATH = $ PATH:/usr/local/go/bin
  2. 导出? GOPATH =/用户/liuyanzhao/go

分别执行以下三行命令(您也可以将上面的github资源地址直接克隆到本地)

去获取github.com/siddontang/go-mysql-elasticsearch

cd?

制作

1.MySQL配置

修改MySQL的my.cnf文件,该文件位于mac上的/etc/my.cnf上

  1. binlog_format = ROW
  2. log-bin = mysql-bin
  3. 服务器ID = 1

下面分别解释了三行配置

go-mysql-search限制binlog必须使用ROW模式,并且server-id与以下配置文件中的相同。

2.go-mysql-elasticsearch配置

修改go-mysql-elasticsearch/etc/river.toml

该文件是唯一的配置文件

  1. #? MySQL的?地址,?用户?和?密码
  2. #?用户?必须?有?复制?特权?在? MySQL的。
  3. my_addr? =? ” 127.0.0.1:3306″
  4. my_user? =? ” root”
  5. my_pass? =? ” 123456″
  6. my_charset? =? ” utf8″
  7. #?组? ?什么时候?弹性搜索?采用? https
  8. #es_https? =?
  9. #? Elasticsearch?地址
  10. es_addr? =? ” 127.0.0.1:9200″
  11. #? Elasticsearch?用户?和?密码,?也许?组?通过?屏蔽,? Nginx ,?要么? x包
  12. es_user? =? “”
  13. es_pass? =? “”
  14. #?路径?至?商店?数据,?喜欢? master.info ,? 如果?不?组?要么?空
  15. #?我们?必须?采用? ?至?支持?断点?恢复?正在同步。
  16. #?去做:?支持?其他?存储,?喜欢? etcd。
  17. data_dir? =? ” https://liuyanzhao.com/var”
  18. #?内? Http?状态?地址
  19. stat_addr? =? ” 127.0.0.1:12800″
  20. #?假的?服务器? ID?喜欢?一个?奴隶
  21. server_id? =? 1
  22. #? MySQL的?要么? mariadb
  23. 风味? =? ” mysql”
  24. #? mysqldump?执行?路径
  25. #? 如果?不?组?要么?空的?忽视? mysqldump。
  26. mysqldump吗? =? ” mysqldump”
  27. #? 如果?我们?有?没有?特权?至?采用? mysqldump?与?-主数据,
  28. #?我们?必须?跳跃?它。
  29. #skip_master_data? =?
  30. #?最少?项目?至?是?插入?在?一?批量
  31. bulk_size? =? 128
  32. #?力?冲洗?该?等待中?要求? 如果?我们?难道”没有?有吗?足够?项目?” =?bulk_size
  33. flush_bulk_time? =? ” 200ms”
  34. #?忽视?表?没有?主?键
  35. skip_no_pk_table? =?
  36. #? MySQL的?数据?来源
  37. [[源]]
  38. 模式? =? ” sens_blog”
  39. [[规则]]
  40. 模式? =? ” sens_blog”
  41. 表? =? ” sens_post”
  42. 索引? =? “博客”
  43. 类型? =? ” post”
  44. 过滤器? =? [” post_id” ,? ” user_id” ,? ” post_title” ,? ” post_summary” ,? ” post_thumbnail” ,? ” post_type” ,? ” post_status” ,? ” post_views” ” post_likes” ,? ” comment_size” ,? ” post_date” ]
  45. id? =? [” post_id” ]
  46. [rule.field]
  47. post_id? =? ” postId”
  48. user_id? =? ” userId”
  49. post_title? =? ” postTitle”
  50. post_summary? =? ” postSummary”
  51. post_thumbnail? =? ” postThumbnail”
  52. post_type? =? ” postType”
  53. post_status? =? ” postStatus”
  54. post_views? =? ” postViews”
  55. post_likes? =? ” postLikes”
  56. comment_size? =? ” commentSize”
  57. 发布日期? =? ” postDate”

该?上面的schema指的是MySQL数据库名称,表数据库中要同步的表名称,索引是ES索引,类型是ES类型。

上面的配置涉及将MySQL sens_blog数据库中的sens_post表同步到ES,并具有blog的索引和发布的类型。如果未创建索引,它将自动创建。如果创建了索引,则不会自动创建它。

建议创建自己的索引

放置? 127.0.0.1:9200/博客

  1. {
  2. “设置” :? {
  3. ” number_of_shards” :? 5
  4. ” number_of_replicas” :? 1
  5. },
  6. “映射” :? {
  7. ” post” :? {
  8. ” properties” :? {
  9. ” postId” :? {
  10. ” type” :? ” long”
  11. },
  12. ” userId” :? {
  13. ” type” :? ” long”
  14. },
  15. ” postTitle” :? {
  16. ” type” :? ” text”
  17. },
  18. ” postSummary” :? {
  19. ” type” :? ” text”
  20. },
  21. ” postThumbnail” :? {
  22. ” type” :? “关键字”
  23. },
  24. ” postType” :? {
  25. ” type” :? “关键字”
  26. },
  27. ” postStatus” :? {
  28. ” type” :? “整数”
  29. },
  30. ” postViews” :? {
  31. ” type” :? ” long”
  32. },
  33. ” postLikes” :? {
  34. ” type” :? ” long”
  35. },
  36. ” commentSize” :? {
  37. ” type” :? ” long”
  38. },
  39. ” postDate” :? {
  40. ” type” :? “日期”
  41. }
  42. }
  43. }
  44. }
  45. }

修改上述配置文件后,将其保存。

执行命令:

  1. https://liuyanzhao.com/bin/go-mysql-elasticsearch-config=https://liuyanzhao.com/etc/river.toml

然后,您可以开始同步。

打开es的头插件:http://127.0.0.1:9100来查看数据

如果您不小心删除了索引并想重新同步,但是发现以前的数据无法同步。

您可以删除go-mysql-elasticsearch/var/master.info来解决问题

相关推荐

咨询软件
 
QQ在线咨询
售前咨询热线
QQ1922638