es怎么对应mysql es mysql( 二 )


根据上面的解释,以及 canal 提供的版本信息,我们在使用 canal 的时候 , 首选要安装一个 canal.deployer-1.1.4.tar.gz 进行解析 MySQL 的 binlog 日志 。
下载后,复制 canal.deployer-1.1.4.tar.gz 到 MySQL 主机上,比如放在 /usr/local/soft/目录下 。然后依次执行下面的命令:
然后修改 canal 的配置文件 vim conf/example/instance.properties
这三项改成你自己的,比如我的配置如下:
然后保存并退出 。(VI 模式下,按 Esc 输入 :wq 回车退出 。)
接着 , 我们检查一下 MySQL 的配置 。确定版本和是否开启了 binlog 日志,以及日志格式 。
canal 支持 binlog 格式为 ROW 的模式 。如果你没开启 binlog,并且格式是非 row 的,建议修改一下 mysql 的配置文件 。
执行 mysql –help | grep my.cnf 找到 mysql 的 my.cnf 文件 。
执行 vim /etc/my.cnf 命令 。添加下面 3 个配置 。
然后保存并退出 。
接着执行 sudo service mysqld restart 重启 MySQL 。
需要注意的是你的 mysql 用户,必须要有 REPLICATION SLAVE 权限 。该权限授予 slave 服务器以该账户连接 master 后可以执行 replicate 操作的权利 。
如果没有权限,则使用 root 账户登录进 MySQL,执行下面的语句,创建用户,分配权限 。
MySQL 启动后,就可以开启 canal 服务了 。
开启后 , 观察 canal 服务的日志,确保服务正常 。
查看 canal 的日志
确定没有问题后,开始编写我们的测试程序 。
pom.xml 中导入下面的依赖 。
使用JAVA进行测试
然后执行 main 方法 。你再修改修改 MySQL 中的数据,你会发现所有改变都同步过来了 。上面是使用的Java代码进行运行,如果想用canal.adapter来进行运行可以下载
放入服务器中,依次执行下面命令
然后修改配置文件 :
然后将需要运行存储到es的的yml文件放入到
目录下 。例如:
然后开启canal-adapter服务
/usr/local/soft/canal-adapter/bin/startup.sh
查看 canal-adapter 的日志,确定没有问题后修改数据 就可以同步到es了
注意:
1、canal-adapter自带mysql连接使用的5.x的,如果自己安装的是高版本的mysql需要自己去/usr/local/soft/canal-adapter/lib增加对应的jar包
2、因项目中同步es使用的sql中有数据库中没有的字段 , 导致原生程序一直报异常,后修改源码中
加了一个判断后才可以
3、es中使用的date字段类型和数据库中不一致,所以这里又修改了部分源码兼容我们项目中的类型
可以根据各自情况修改 。
es和mysql结合使用Elasticsearch和MySQL可以结合使用 , 主要是因为它们两个的定位和功能不同 。MySQL是一种关系型数据库 , 用于存储和管理结构化数据 , 而Elasticsearch则是一种搜索引擎和分析引擎,用于实时分析和搜索大量非结构化数据 。
将Elasticsearch和MySQL结合使用可以实现更好的搜索和分析功能 。比如 , 可以将MySQL中的结构化数据导入到Elasticsearch中建立索引,从而实现更快速、更准确的搜索和分析 。同时,Elasticsearch也可以将搜索结果与MySQL中的结构化数据进行关联,从而提供更丰富的搜索结果和分析报告 。
此外 , Elasticsearch还可以作为MySQL的缓存层,用于加速访问和查询速度 。将经常查询的数据存储在Elasticsearch中 , 可以大大减少MySQL的查询负载,提高系统性能和响应速度 。
总之,结合使用Elasticsearch和MySQL可以充分发挥它们各自的优势,实现更好的搜索和分析功能,同时提高系统性能和响应速度 。
MySQL和ES的索引对比 [toc]

推荐阅读