网站首页 > 数据库 / 正文
环境: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实时查看数据同步情况
也可以通过接口查看
Tags:jdbc for oracle
猜你喜欢
- 2024-11-26 Spring boot管理系统,架构简单易懂,二次开发便捷
- 2024-11-26 Spring-Spring整合MyBatis详解
- 2024-11-26 如何使用JDBC操作数据库?一文带你吃透JDBC规范
- 2024-11-26 葵花宝典之数据库类面试真题10道(二)
- 2024-11-26 Mybatis的两个全局配置
- 2024-11-26 ShardingSphere-JDBC的功能
- 2024-11-26 解析-我们来看看Java应用中如何去使用Proxool
- 2024-11-26 开发应用程序:React、GraphQL、Spring Data JPA、UCP,Oracle
- 2024-11-26 Spring系列面试题
- 2024-11-26 「软帝学院」28道java基础面试题-下