网站首页 > 技术文章 正文
环境: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实时查看数据同步情况
也可以通过接口查看
猜你喜欢
- 2025-07-09 常见web安全问题,SQL注入、XSS、CSRF,基本原理以及如何防御
- 2025-07-09 Syslog 日志分析与异常检测技巧(syslog日志解析)
- 2025-07-09 低代码建模平台-数据挖掘平台(低代码开发平台是什么意思)
- 2025-07-09 mysql主从(MYsql主从老是失效)
- 2025-07-09 MyEclipse数据库教程:在MyEclipse中连接数据库
- 2025-07-09 oracle dblink的创建方式(oracle中dblink创建)
- 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全库备份
你 发表评论:
欢迎- 652℃几个Oracle空值处理函数 oracle处理null值的函数
- 644℃Oracle分析函数之Lag和Lead()使用
- 642℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 634℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 629℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 615℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 615℃【数据统计分析】详解Oracle分组函数之CUBE
- 590℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)