mysql数据迁移到ES

下载安装包时注意下载到指定文件夹 这里我放在OPT文件夹下
一:安装logstash
进入到opt文件夹打开终端 执行以下命令
wget -c https://artifacts.elastic.co/downloads/logstash/logstash-6.4.0.zip  
加上-c支持断点续传
二:解压logstash
unzip logstash-6.4.0.zip
三:进入到logstash bin目录
cd logstash-6.4.0/bin
四:安装logstash-jdbc
./logstash-plugin install logstash-input-jdbc
五:编写配置文件(jdbc.sql和jdbc.conf,建议在bin目录下vim jdbc.conf)
六:首先在bin目录下新建一个mysql目录,里面包含jdbc.conf,jdbc.sql文件,加入mysql的驱动
jdbc.conf内容:

 
 
  1. input {

  2. stdin {

  3. }

  4. jdbc {

  5. # 连接的数据库地址和哪一个数据库,指定编码格式,禁用SSL协议,设定自动重连

  6. jdbc_connection_string => "jdbc:mysql://数据库地址:端口号/数据库名?characterEncoding=UTF-8&useSSL=false&autoReconnect=true"

  7. # 你的账户密码

  8. jdbc_user => "账号"

  9. jdbc_password => "密码"

  10. # 连接数据库的驱动包,建议使用绝对地址

  11. jdbc_driver_library => "mysql/mysql-connector-java-5.1.45-bin.jar"

  12. # 这是不用动就好

  13. jdbc_driver_class => "com.mysql.jdbc.Driver"

  14. jdbc_paging_enabled => "true"

  15. jdbc_page_size => "50000"

  16. #处理中文乱码问题

  17. codec => plain { charset => "UTF-8"}

  18. #使用其它字段追踪,而不是用时间

  19. use_column_value => true

  20. #追踪的字段

  21. tracking_column => testid

  22. record_last_run => true

  23. #上一个sql_last_value值的存放文件路径, 必须要在文件中指定字段的初始值

  24. last_run_metadata_path => "mysql/station_parameter.txt"

  25. jdbc_default_timezone => "Asia/Shanghai"

  26. statement_filepath => "mysql/jdbc.sql"

  27. #是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录

  28. clean_run => false

  29. # 这是控制定时的,重复执行导入任务的时间间隔,第一位是分钟

  30. schedule => "*/5 * * * *"

  31. type => "jdbc"

  32. }

  33. }

  34. filter {

  35. json {

  36. source => "message"

  37. remove_field => ["message"]

  38. }

  39. }

  40. output {

  41. elasticsearch {

  42. # 要导入到的Elasticsearch所在的主机

  43. hosts => "192.168.105.180:9200"

  44. # 要导入到的Elasticsearch的索引的名称

  45. index => "db_anytest"

  46. # 类型名称(类似数据库表名)

  47. document_type => "table_anytest"

  48. # 主键名称(类似数据库主键)

  49. document_id => "%{testid}"

  50. # es 账号

  51. user => elastic

  52. password => changeme

  53. }

  54. stdout {

  55. # JSON格式输出

  56. codec => json_lines

  57. }

  58. }

jdbc.sql里面就直接写sql语句就行了

全量同步sql语句就不要写testid了 增量同步就加上where条件 where testid > :sql_last_value
七:开始导入(需要用root账户启动)
./logstash -f mysql/jdbc.conf

猜你喜欢

转载自blog.csdn.net/viola8104/article/details/118189559