elasticsearch與mysql數(shù)據(jù)同步(logstash)

索引的創(chuàng)建以及IK的安裝詳見:elasticsearch與mysql數(shù)據(jù)同步(go-mysql-elasticsearch)

1. Logstash介紹

Logstash是免費且開放的服務器端數(shù)據(jù)處理管道叮称,能夠從多個來源采集數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù),然后將數(shù)據(jù)發(fā)送到您最喜歡的“存儲庫”中押袍。
Logstash 是一個功能強大的工具朽缎,可與各種部署集成阐斜。 它提供了大量插件名惩,可幫助你解析蛮拔,豐富碟摆,轉(zhuǎn)換和緩沖來自各種來源的數(shù)據(jù)晃财。 如果你的數(shù)據(jù)需要 Beats 中沒有的其他處理,則需要將 Logstash 添加到部署中典蜕。

2. 應用場景

1.日志搜索器:logstash采集断盛、處理、轉(zhuǎn)發(fā)到elasticsearch存儲愉舔,在kibana進行展示
2.Elk日志分析(elasticsearch+logstash+kibana)
3.logstash同步mysql數(shù)據(jù)庫數(shù)據(jù)到es

3. logstash安裝

1.拉取logstash鏡像(需要與es版本對應)

docker pull logstash:7.12.1

2.構建logstash容器

#創(chuàng)建一個用于存儲logstash配置以及插件的目錄
mkdir /docker/logstash
docker run -p 9900:9900 -d --name logstash -v /docker/logstash:/etc/logstash/pipeline --privileged=true logstash:7.12.1

3.進入容器內(nèi)部安裝jdbc和elasticsearch插件

#進入容器內(nèi)部
docker exec -it logstash bash
#使用logstash-plugin安裝器安裝logstash-input-jdbc插件钢猛,改安裝器在bin目錄下(此插件鏡像新版本自帶)
logstash-plugin install logstash-input-jdbc
#安裝數(shù)據(jù)輸出到es的插件
logstash-plugin install logstash-output-elasticsearch

4.下載jdbc的mysql-connection.jar包

https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.24/mysql-connector-java-8.0.24.jar

5.修改容器內(nèi)部配置
修改/usr/share/logstash/config/logstash.yml文件

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://172.17.0.7:9200" ]

修改/usr/share/logstash/config/pipelines.yml文件

- pipeline.id: table1
  path.config: "/etc/logstash/pipeline/logstash.conf"

6.退出容器,創(chuàng)建配置文件以及相關配置信息
創(chuàng)建配置文件

touch /docker/logstash/logstash.conf

配置文件內(nèi)容(全量的配置文件)

input {
 stdin { }
    jdbc {
        #注意mysql連接地址一定要用ip轩缤,不能使用localhost等
        jdbc_connection_string => "jdbc:mysql://172.17.0.3:3306/lmrs"
        jdbc_user => "root"
        jdbc_password => "root"
        #這個jar包的地址是容器內(nèi)的地址
        jdbc_driver_library => "/etc/logstash/pipeline/mysql-connector-java-8.0.24.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_paging_enabled => "true"
        jdbc_page_size => "50000"
        statement => "select id,`name`,long_name,brand_id,three_category_id as category_id,shop_id,price,status,sold_count,review_count,create_time,last_time from lmrs_products"
        schedule => "* * * * *"
    }
 }
 output {
     elasticsearch {
        #注意es連接地址一定要用ip命迈,不能使用localhost等
        hosts => "172.17.0.7:9200"
        index => "products"
        document_type => "_doc"
        document_id => "%{id}"
     }
     stdout {
     
        codec => json_lines
    }
}

增量的配置文件

input {
 stdin { }
    jdbc {
        #注意mysql連接地址一定要用ip,不能使用localhost等
        jdbc_connection_string => "jdbc:mysql://172.17.0.3:3306/lmrs"
        jdbc_user => "root"
        jdbc_password => "root"
        #數(shù)據(jù)庫重連嘗試
        connection_retry_attempts => "3"
        #數(shù)據(jù)庫連接可用校驗超時時間火的,默認為3600s
        jdbc_validation_timeout => "3600"
        #這個jar包的地址是容器內(nèi)的地址
        jdbc_driver_library => "/etc/logstash/pipeline/mysql-connector-java-8.0.24.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        #開啟分頁查詢(默認是false)
        jdbc_paging_enabled => "true"
        #單次分頁查詢條數(shù)(默認100000壶愤,字段較多的話,可以適當調(diào)整這個數(shù)值)
        jdbc_page_size => "50000"
        #執(zhí)行的sql語句
        statement => "SELECT a.id,a.`name`,a.long_name,a.brand_id,a.three_category_id AS category_id,a.shop_id,a.price,a.`status`,a.sold_count,a.review_count,a.create_time,a.last_time FROM lmrs_products AS a where a.id > :sql_last_value"
        #需要記錄查詢結果某字段的值時馏鹤,此字段為true征椒,否則默認tracking_colum為timestamp的值
        use_column_value => true
        #是否將字段名轉(zhuǎn)為小寫,默認為true(如果具備序列化或者反序列化湃累,建議設置為false)
        lowercase_column_names => false
        #需要記錄的字段勃救,同于增量同步,需要是數(shù)據(jù)庫字段
        tracking_column => id
        #記錄字段的數(shù)據(jù)類型
        tracking_column_type => numeric
        #上次數(shù)據(jù)存放位置
        record_last_run => true
        #上一個sql_last_value的存放路徑脱茉,必須在文件中指定字段的初始值
        last_run_metadata_path => "/etc/logstash/pipeline/products.txt"
        #是否清除last_run_metadata_path的記錄剪芥,需要增量同步這個字段的值必須為false
        clean_run => false
        #同步的頻率(分 時 天 月 年)默認為每分鐘同步一次
        schedule => "* * * * *"
    }
 }
 output {
     elasticsearch {
        #注意es連接地址一定要用ip,不能使用localhost等
        hosts => "172.17.0.7:9200"
        index => "products"
        document_type => "_doc"
        document_id => "%{id}"
     }
     stdout {
        codec => json_lines
    }
}

注:
last_run_metadata_path => "/etc/logstash/pipeline/products.txt":因為需要記錄下上次同步的數(shù)據(jù)id琴许,所以這里會有一個文件進行存儲這個id税肪,需要在logstash目錄下去創(chuàng)建一個txt文件,用于存儲這個id,同時需要給予權限益兄。不給會出現(xiàn)權限異常問題(Permission denied)

7.相關演示
查看索引數(shù)據(jù)

GET /_cat/indices?v
products索引

啟動容器锻梳,可通過docker logs -f logstash查看運行日志,稍后查看索引數(shù)據(jù)


全量

增量
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載净捅,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者疑枯。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蛔六,隨后出現(xiàn)的幾起案子荆永,更是在濱河造成了極大的恐慌,老刑警劉巖国章,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件具钥,死亡現(xiàn)場離奇詭異,居然都是意外死亡液兽,警方通過查閱死者的電腦和手機骂删,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來四啰,“玉大人宁玫,你說我怎么就攤上這事「躺梗” “怎么了欧瘪?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長敦迄。 經(jīng)常有香客問我恋追,道長,這世上最難降的妖魔是什么罚屋? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮嗅绸,結果婚禮上脾猛,老公的妹妹穿的比我還像新娘。我一直安慰自己鱼鸠,他們只是感情好猛拴,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚀狰,像睡著了一般愉昆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上麻蹋,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天跛溉,我揣著相機與錄音,去河邊找鬼。 笑死芳室,一個胖子當著我的面吹牛专肪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播堪侯,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼嚎尤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了伍宦?” 一聲冷哼從身側(cè)響起芽死,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎次洼,沒想到半個月后收奔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡滓玖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年坪哄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片势篡。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡翩肌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出禁悠,到底是詐尸還是另有隱情念祭,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布碍侦,位于F島的核電站粱坤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瓷产。R本人自食惡果不足惜站玄,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望濒旦。 院中可真熱鬧株旷,春花似錦、人聲如沸尔邓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽梯嗽。三九已至齿尽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間灯节,已是汗流浹背循头。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工绵估, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贷岸。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓壹士,卻偏偏與公主長得像,于是被迫代替她去往敵國和親偿警。 傳聞我的和親對象是個殘疾皇子躏救,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

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