网站首页 > 技术文章 正文
环境:ElasticSearch7.8.0 + logstash7.8.0
- 方案1
方案:db + logstash + elasticsearch
优点:简单, 只需要简单配置即可。
缺点:
⑴ 有一定的延迟
⑵ 数据量大或是定时时间比较短那么会对数据库造成一定的压力。 - 方案2
方案:实时双写。
在业务系统中做业务保存或是更新操作时,同时向es中做保存或更新。
优点:实时性好
缺点:耦合性强,对业务系统性能有影响 - 方案3
方案:异步双写;
在业务系统中利用MQ将数据发送到队列,另起一个消费系统专门用来处理消息同步到MQ中。
优点:不影响业务系统。
缺点:
⑴ 有一定的延迟
⑵ MQ的引入使得整体的系统变复杂了
以上方案是我所了解的。也参考过网上说的利用canal,这个我不了解所以也没写。
接下来介绍 方案1
es与logstash安装配置
关于elasticsearch与logstash的配置请参考:
《Springboot整合ELK日志收集详解步骤》
准备文件
准备oracle驱动jar,ojdbc7-12.1.0.2.jar。
配置文件
在%logstash_home%\bin 下新建配置文件jdbc.conf,内容如下:
input {
jdbc {
jdbc_driver_library => "E:/12.1.0.2/ojdbc7-12.1.0.2.jar"
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
jdbc_connection_string => "jdbc:oracle:thin:@localhost:1521:orcl"
jdbc_user => "scott"
jdbc_password => "tigger"
statement => "SELECT * FROM (SELECT NP.*, ROWNUM RN FROM (SELECT * FROM PRODUCTS) NP) T WHERE T.CREATE_TIME BETWEEN to_date('2019-01-01', 'yyyy-mm-dd') AND to_date('2019-06-30', 'yyyy-mm-dd') AND RN > :sql_last_value "
record_last_run => "true"
use_column_value => "true"
tracking_column => "RN"
last_run_metadata_path => "E:/es/logstash-7.8.0/config/last_id"
clean_run => "false"
type => "es-jdbc"
}
}
output {
if [type] == "es-jdbc" {
elasticsearch {
hosts => "localhost:9200"
index => "p_users_index"
document_id => "%{id}"
}
}
}
jdbc_driver_library:你的驱动jar包位置
jdbc_driver_class:驱动类,注意Java::开头
jdbc_connection_string:jdbc连接url
jdbc_user:oracle用户名
jdbc_password:oracle密码
statement:执行的SQL;根据sql直接结果导入到es中
record_last_run:是否记录上次执行结果, 如果为真,将会把上次执行到的 tracking_column 字段的值记录下来,保存到 last_run_metadata_path 指定的文件中
use_column_value: 是否需要记录某个column 的值,如果record_last_run为真,可以自定义我们需要 track 的 column 名称,此时该参数就要为 true. 否则默认 track 的是 timestamp 的值
tracking_column: 如果 use_column_value 为真,需配置此参数. track 的数据库 column 名,该 column 必须是递增的. 一般是mysql主键,由于我们使用rownum也是递增的,可以在sql语句中查询出rownum作为这一列,sn是rownum别名
last_run_metadata_path:将最后运行的位置记录在指定的路径文件中。
启动logstash服务
%logstash_home%\bin\logstash -f jdbc.conf
查看数据
通过Kibana实时查看数据同步情况
也可以通过接口查看
猜你喜欢
- 2024-10-14 oralce用户的介绍 ora-01917:user or role
- 2024-10-14 查询所有用户的表,ORACLE下有三个视图
- 2024-10-14 Linux新手入门系列:linux下Oracle定时备份
- 2024-10-14 Oracle 设置RMAN备用用户 oracle rman全库备份
- 2024-10-14 oracle死锁介绍 oracle 死锁原因
- 2024-10-14 MySQL和Oracle相关 mysql和oracle的sql语句一样吗
- 2024-10-14 oracle账户被锁定怎么解锁 oracle账户已被锁定什么意思
- 2024-10-14 Python操作数据库(Oracle) python操作数据库的步骤
- 2024-10-14 Oracle数据库使用攻略 oracle数据库使用教程
- 2024-10-14 Oracle学习笔记三:PL/SQL developer工具安装
你 发表评论:
欢迎- 05-10如何优化数据库和前端之间的交互?
- 05-10前端代码优化小秘籍(前端优化24条建议)
- 05-10VS Code当中的15个神仙插件,值得收藏
- 05-10如何自己开发一个Google浏览器插件?
- 05-10前端流行框架Vue3教程:14. 组件传递Props效验
- 05-10吃了一年的SU,最好用的插件都在这了
- 05-10前端必看!这款神器让网站界面告别千篇一律
- 05-10程序员请收好:10个非常有用的 Visual Studio Code 插件
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端懒加载 (45)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle查询数据库 (45)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)