要求通过logstash从oracle中获取数据,然后相应的直接传入mysql中去。

基本测试成功的配置文件如下:

input { 
  stdin {
  }
  jdbc {
  jdbc_connection_string => "jdbc:oracle:thin:@//192.168.217.135:1521/orcl"
  jdbc_user => "root"
  jdbc_password => "123"
  jdbc_driver_library => "/usr/share/logstash/config/ojdbc6.jar"
  jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
  jdbc_paging_enabled => "true"
  jdbc_page_size => "50000"
  jdbc_default_timezone => "Asia/Shanghai"

  statement => "select date_time from PERSON"

  record_last_run => "true"
  use_column_value => "true"
  tracking_column_type => "timestamp"
  tracking_column => "create_datetime"
  last_run_metadata_path => "/usr/share/logstash/config/last_datetime/PERSON"
  clean_run => "false"
  lowercase_column_names => "false"
  }
}

output {
  jdbc {
  driver_jar_path => "/usr/share/logstash/config/mysql-connector-java-5.1.7-bin.jar"
  driver_class => "com.mysql.jdbc.Driver"
  connection_string => "jdbc:mysql://192.168.217.136:3306/orcl?autoReconnect=true&user=root&password=123"
  statement => ["insert into PERSON(date_time) values(?)","%{date_time}"]
  }
}

其中没有用到过滤方法,需求仅仅用了logstash-input-jdbc和logstash-output-jdbc插件来完成数据库数据导入的,安装插件的命令

./bin/logstash-plugin install logstash-input-jdbc

logstash启动后如果配置或者环境不正确,会有相应的报错,主要注意 [ ] 里的是哪方面的报错,里边会得到相应的报错信息

我排查了一些问题,没有记录日志,但是无非就是

配置文件出错,比如说JDBC连接数据库的url等等

sql没有写对,注意statement字段写获取的和插入的sql,mysql中要建立相同的字段

防火墙没有关闭

驱动包过旧

等等

其中遇到的最晚解决的问题是,从oracle获取的时间字段,传入不了mysql,想到了filter方法进行时间过滤,但是没有配置好,后来突然想到了给mysql改一下数据类型,改成varchar,oracle的date类型和mysql的是不一样的,这个需要注意,改成字符串类型完美的解决了这个问题,因为需求仅仅是灌入mysql,如果是主从复制或者数据库完全迁移就需要正确的思路了,这个思路虽然可行,但是加入数据库要进行迁移连接,web服务连接到mysql,那么在界面的输入可能会又变化,所以还是需要研究oracle如何匹配mysql的时间字段。

好的解决方案是相同数据库主从备份或ELK,但是这种也是可行的,也可以做到数据实时传输,类似于主从备份,上述的方法需要在目标库中建立相同的字段和数据类型,有时候数据类型的转换也是个问题,

更简单的方法是用navicat premium,缺点是仅仅数据迁移,无法实时更新数据

logstash-input-jdbc and logstash-ouput-jdbc的更多相关文章

  1. (三)ELK logstash input

    一,input模块 input 插件官方详解: https://www.elastic.co/guide/en/logstash/current/input-plugins.html Logstash ...

  2. [课本]JDBC课程6--使用JDBC的DAO模块化--完成数据库的增删查改_工具类JDBCTools四个(Preparedstatement)功能模块的敲定版

    (课本P273-任务九) /**DAO: Data Access Object * 为什么用: 实现功能的模块化,更有利于代码的维护和升级 * 是什么: 访问数据信息的类,包含对数据的CRUD(cre ...

  3. 解决 01-Jul-2016 10:49:05.875 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [ROOT] registered the JDBC driver [com.mysql.jdbc.D

    01-Jul-2016 10:49:05.875 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoade ...

  4. MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. DBUtils开源JDBC类库,对JDBC简单封装(作用是:简化编码工作量,同时不会影响程序的性能)

    DBUtils:提高了程序的性能,编程更加简便 架包 mysql-connector-java-jar commons-dbcp-1.4jar commons-pool-1.5.5jar common ...

  6. Hibernate 抓取策略fetch-2 (批量抓取batch-size以及hibernate.jdbc.fetch_size、hibernate.jdbc.batch_size)

    类关系: User N~1 Group 测试代码: System.out.println("1"); List stuList = session.createQuery(&quo ...

  7. SparkSQL使用之JDBC代码访问Thrift JDBC Server

    启动ThriftJDBCServer: cd $SPARK_HOME/sbin start-thriftserver.sh & 使用jdbc访问ThriftJDBCServer代码段: pac ...

  8. org.hibernate.service.classloading.spi.ClassLoadingException: Specified JDBC Driver com.mysql.jdbc.Driver class not found

    今天在使用hibernate搭建开发环境的时候出现了一个不可思议的问题: org.hibernate.service.classloading.spi.ClassLoadingException: S ...

  9. hibernate的速度问题--hibernate.jdbc.fetch_size和 hibernate.jdbc.batch_size

    hibernate的速度问题 这点我也疑惑过,最初应用hibernate的项目,我也感觉速度很慢,知道后来才知道问题的所在.       其实hibernate的速度性能并不差,比起jdbc来说,又是 ...

  10. 解决 Tomcat reload WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [] registered the JDBC driver [com.mysql.jdbc.Driver] but fail

    转自:http://www.cnblogs.com/interdrp/p/5632529.html 我的错误如下: 06-Sep-2016 18:57:10.595 WARNING [localhos ...

随机推荐

  1. 强大的Windows 10数字权利获取工具HWIDGEN

    前言: 每当windows 10 系统过期就是头疼的key激活,更奇怪的是每次激活的方式不同,上次有效下次就不知道有没有效了,今天发现一种更改数字权利的工具脚本,不要太牛逼!!! 安装之前的准备工作: ...

  2. 【luogu P3623 [APIO2008]免费道路】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3623 说是对克鲁斯卡尔的透彻性理解 正解: 先考虑加入水泥路,然后再考虑加入剩下必须要加入的最少鹅卵石路. ...

  3. Java中的IO流(四)

    上一篇<Java中的IO流(三)>把IO流中的文件及目录操作的对象File类记录了一下,本篇把本不属性IO流但又和IO流有关系的一个对象作一下记录,此对象本属于集合框架里的一个子集,即Pr ...

  4. 查询sqlserver 表结构呀

    SQL Server里查询表结构命令 对于SQL Server数据库有两种方法查询表结构 第一种方法 sp_help Accounts_Users     其中Accounts_Users 表示表名 ...

  5. 插入排序_c++

    插入排序_c++ GitHub 文解 插入排序的核心思想是针对于 N 个元素进行排序时,共进行 K = (N-1) 次排序,第 M 次排序时将第 M + 1 个元素插入前 M 个元素中进行排序. 图解 ...

  6. JavaScript-比较运算符

    一.概述 > 大于运算符 < 小于运算符 <= 小于或者等于运算符 >= 大于或者等于运算符 == 相等运算符 === 严格相等运算符 != 不相等运算符 !== 严格不相等运 ...

  7. Qt 项目主进程接收Alarm 后在GUI上显示,并且可以有选择性输出文件

    项目主进程接收报警后,将alarm msg 发送给代理, 并将其分发: else if (msg.name == "MesLCUalarmRep") { QString error ...

  8. JFinal DB.tx()事务回滚及lambda表达式应用

    JFinal DB.tx()事务回滚 在要往数据库操作多条数据时,就需要用到事务,JFinal中有封装好的事务应用 写法: Db.tx(new IAtom(){ @Override public bo ...

  9. linux ping命令实践

          ping 解析       Linux系统的ping命令是常用的网络命令,它通常用来检测与目标主机的连通性,经常说"ping以下机器,看是否开着,不能打开网页时候,可以ping ...

  10. Linux系统结构 详解(转)

    Linux系统一般有4个主要部分: 内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统.部分层次结构如图1-1所 ...