Elasticsearch—用logstash增量導(dǎo)入Mysql數(shù)據(jù)

14.jpg

前言:

logstash是什么?為什么需要logstash搂橙?援引官網(wǎng)的介紹:Logstash 是開源的服務(wù)器端數(shù)據(jù)處理管道旦装,能夠同時從多個來源采集數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù)蓄氧,然后將數(shù)據(jù)發(fā)送到您最喜歡的 “存儲庫” 中函似。(我們的存儲庫當(dāng)然是 Elasticsearch。)

簡單來說喉童,logstash就是用于將不同來源的數(shù)據(jù)(如JDBC撇寞、http網(wǎng)絡(luò)、kafka堂氯、log4j日志等)統(tǒng)一管理蔑担,輸入到Elasticsearch中,以作為整個搜索引擎的數(shù)據(jù)源咽白。例如:存儲在Mysql中 的數(shù)據(jù)啤握,可以用JDBC來導(dǎo)入到Elasticsearch中(需要安裝logstash-input-jdbc插件),還可以設(shè)置定時任務(wù)晶框,支持增量導(dǎo)入等排抬。

本文主要介紹logstash-input-jdbc插件的安裝,以及簡單的.conf配置文件三妈,實(shí)現(xiàn)執(zhí)行定時任務(wù),從Mysql增量導(dǎo)入數(shù)據(jù)到Elasticsearch的簡單效果莫绣。


1.安裝logstash-input-jdbc

首先畴蒲,在安裝好Elasticsearch的環(huán)境中,裝logstash对室,下載按照官網(wǎng)的步驟來就可以模燥。logstash是一個數(shù)據(jù)導(dǎo)入工具,支持多種數(shù)據(jù)源導(dǎo)入到Elasticsearch中掩宜,導(dǎo)入不同的數(shù)據(jù)源需要用到不同的插件蔫骂,要想導(dǎo)入Mysql的數(shù)據(jù)到Elasticsearch,需要安裝插件——logstash-input-jdbc牺汤。

Elasticsearch辽旋、logstash下載地址:https://www.elastic.co/downloads
插件github地址:logstash-plugins/logstash-input-jdbc

安裝此插件以及依賴需要在ruby環(huán)境下,ruby默認(rèn)的鏡像在國外,所以很慢补胚,需要手動將鏡像網(wǎng)站https://rubygems.org/替換為國內(nèi)的https://gems.ruby-china.com/

具體步驟如下:(MacOS系統(tǒng))

1.1安裝gem

Gem是一個管理Ruby庫和程序的標(biāo)準(zhǔn)包码耐,MacOS系統(tǒng)自帶gem環(huán)境,可以用gem -v查看版本溶其,gems.ruby-china建議gem版本最好>2.6.x骚腥,如果版本較低,可以用 gem update --system更新

gem -v
gem update --system

1.2給gem更換網(wǎng)站源

添加源https://gems.ruby-china.com/瓶逃,刪除舊源https://rubygems.org/

$ gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
$ gem sources -l

gem sources -l命令的作用是查看當(dāng)前gem的源束铭,在替換成功后,應(yīng)該顯示如下:

*** CURRENT SOURCES ***

https://gems.ruby-china.com/

確保只有 http://gems.ruby-china.com厢绝,即替換成功契沫。

1.3使用 Bundler 的Gem 源代碼鏡像命令或修改Gemfile

$ bundle config mirror.https://rubygems.org https://gems.ruby-china.com

使用bundle命令替換掉鏡像配置后即可執(zhí)行第4步,插件安裝代芜,本人用此方法沒成功埠褪,用的是第二種——修改Gemfile。修改Gemfile需要對logstash安裝文件目錄下的兩處文件——Gemfile和Gemfile.lock進(jìn)行修改挤庇,Mac下直接用記事本打開修改就OK钞速,服務(wù)器環(huán)境可以用vim修改:

cd /usr/local/logstash-6.4.2
vim Gemfile 
#修改第1行出現(xiàn)的source,將source "https://rubygems.org"嫡秕,改為source "https://gems.ruby-china.com/"
vim Gemfile.lock
#修改GEM下的remote渴语,將remote: https://rubygems.org,改為remote: https://gems.ruby-china.com/

1.4安裝logstash-input-jdbc插件

執(zhí)行完上面3步后昆咽,終于可以安裝插件了驾凶,啟動logstash的bin目錄下的logstash-plugin命令,執(zhí)行安裝掷酗。

bin/logstash-plugin  install logstash-input-jdbc

安裝完成不報錯就應(yīng)該是成功了调违,可用bin/logstash-plugin list查看所有已安裝插件,加上--verbose參數(shù)可以顯示插件版本號泻轰。

bin/logstash-plugin list 
bin/logstash-plugin list --verbose

2.配置logstash的conf文件

logstash-input-jdbc插件安裝完成后技肩,就可以配置.conf文件導(dǎo)入mysql的數(shù)據(jù)了,詳細(xì)請戳官方文檔,此處以我的配置文件為例:

文件名:logstash-mysql.conf浮声,路徑/usr/local/logstash-6.4.2/logstash-mysql.conf

input {
  jdbc {
    #jar包可以存放在任意路徑
    jdbc_driver_library => "/usr/local/logstash-6.4.2/mysql-connector-java-5.1.36.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://localhost:3306/DB_NAME"
    jdbc_user => "mysqlUser"
    jdbc_password => "userPass"
    #schedule設(shè)置每分鐘執(zhí)行
    schedule => "* * * * *" 
    statement => "SELECT * FROM blog_article WHERE blog_article.edit_date >= :sql_last_value"
    jdbc_paging_enabled => "true"
    jdbc_page_size => "50000"
  }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "articles"
    #index表示存入elasticsearch中的索引名字
  }
  stdout { codec => json_lines }
}

mysql-connector-java這個jar包下載: https://mvnrepository.com/artifact/mysql/mysql-connector-java

可以看到虚婿,在logstash的conf文件中可以配置schedule,即定時任務(wù)泳挥;配置statement然痊,即定時執(zhí)行的SQL語句,此處:

statement => "SELECT * FROM TABLE_NAME WHERE TABLE_NAME.edit_date >= :sql_last_value"

例中屉符,blog_article表中edit_date列記錄了數(shù)據(jù)編輯時間剧浸,當(dāng)有新增的文章或者有修改的文章時锹引,這些記錄的edit_date時間>上次sql執(zhí)行的時間sql_last_value,于是這些內(nèi)容就是要導(dǎo)入到Es中的所謂【增量】辛蚊。

3.啟動Logstash導(dǎo)入Mysql中的數(shù)據(jù)

配置好.conf文件后粤蝎,啟動logstash時即可直接根據(jù)conf文件啟動,從而實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)入袋马。啟動命令如下:

/usr/local/logstash-6.4.2/bin/logstash -f /usr/local/logstash-6.4.2/logstash-mysql.conf
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末初澎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子虑凛,更是在濱河造成了極大的恐慌碑宴,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桑谍,死亡現(xiàn)場離奇詭異延柠,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)锣披,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進(jìn)店門贞间,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人雹仿,你說我怎么就攤上這事增热。” “怎么了胧辽?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵峻仇,是天一觀的道長。 經(jīng)常有香客問我邑商,道長摄咆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任人断,我火速辦了婚禮吭从,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘恶迈。我一直安慰自己涩金,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布蝉绷。 她就那樣靜靜地躺著鸭廷,像睡著了一般枣抱。 火紅的嫁衣襯著肌膚如雪熔吗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天佳晶,我揣著相機(jī)與錄音桅狠,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛中跌,可吹牛的內(nèi)容都是我干的咨堤。 我是一名探鬼主播,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼漩符,長吁一口氣:“原來是場噩夢啊……” “哼一喘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嗜暴,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤凸克,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后闷沥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萎战,經(jīng)...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年舆逃,在試婚紗的時候發(fā)現(xiàn)自己被綠了蚂维。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,926評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡路狮,死狀恐怖虫啥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情览祖,我是刑警寧澤孝鹊,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站展蒂,受9級特大地震影響又活,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锰悼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一柳骄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧箕般,春花似錦耐薯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至杯聚,卻和暖如春臼婆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背幌绍。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工颁褂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留故响,地道東北人。 一個月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓颁独,卻偏偏與公主長得像彩届,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子誓酒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評論 2 361

推薦閱讀更多精彩內(nèi)容