mysql數(shù)據(jù)同步elasticsearch(es)全文檢索容器咱旱;其它數(shù)據(jù)庫同理

一允坚、安裝ElasticSearch(下面統(tǒng)稱es,版本6.0.0,環(huán)境windows10)

直接上下載地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.zip

解壓后目錄如下:

圖1

啟動es漫试,./bin/elasticsearch.bat 极谊;啟動成功如圖


圖2

默認cluster_name是elasticsearch和端口9200可以修改诡右,需要修改在config/elasticsearch.yml;上圖


圖3

二、安裝logstash

下載地址:https://artifacts.elastic.co/downloads/logstash/logstash-6.0.0.zip

解壓目錄


圖4

先安裝logstash-input-jdbc插件?

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


圖5

在logstash目錄下創(chuàng)建config-mysql轻猖,見圖4


圖6

創(chuàng)建配置文件load_data.conf帆吻,配置文件隨便取名,可以創(chuàng)建sql文件咙边,也可以在conf配置文件中定義猜煮,具體下面有說明

先上配置文件內(nèi)容

input {

? ? stdin {

? ? }

? ? jdbc {

? ? ? jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/jfinal_club?characterEncoding=utf8&useSSL=false"

? ? ? jdbc_user => "root"

? ? ? jdbc_password => "root"

? ? ? jdbc_driver_library => "D:/ELK/6.0.0/logstash-6.0.0/config-mysql/mysql-connector-java-5.1.43.jar"

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

? ? ? jdbc_paging_enabled => "true"

? ? ? jdbc_page_size => "50000"

? ? ? statement_filepath => "D:/ELK/6.0.0/logstash-6.0.0/config-mysql/store_list.sql"

? ? ? schedule => "* * * * *"

? ? ? use_column_value => false

? ? ? record_last_run => true

? ? ? last_run_metadata_path => "D:/ELK/6.0.0/logstash-6.0.0/config-mysql/run/store_list"

? ? ? type => "sl"

? ? }

jdbc {

? ? ? jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/jfinal_club?characterEncoding=utf8&useSSL=false"

? ? ? jdbc_user => "root"

? ? ? jdbc_password => "root"

? ? ? jdbc_driver_library => "D:/ELK/6.0.0/logstash-6.0.0/config-mysql/mysql-connector-java-5.1.43.jar"

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

? ? ? jdbc_paging_enabled => "true"

? ? ? jdbc_page_size => "50000"

? ? ? statement => "select * from store where updated > date_add(:sql_last_value, interval 8 hour)"

? ? ? schedule => "* * * * *"

? ? ? use_column_value => false

? ? ? record_last_run => true

? ? ? last_run_metadata_path => "D:/ELK/6.0.0/logstash-6.0.0/config-mysql/run/store_s"

? ? ? type => "st"

? ? }

}

filter {

? ? json {

? ? ? ? source => "message"

? ? ? ? remove_field => ["message"]

? ? }

}

output {

? ? if[type] == "sl"{

? ? ? ? elasticsearch {

hosts => ["127.0.0.1:9200"]

index => "store_list"

document_type => "jdbc"

document_id => "%{store_id}}"

? ? ? ? }

? ? }

if[type] == "st"{

? ? ? ? elasticsearch {

hosts => ["127.0.0.1:9200"]

index => "store_st"

document_type => "jdbc"

document_id => "%{id}}"

? ? ? ? }

? ? }

? ? stdout {

? ? ? ? codec => json_lines

? ? }

}

字段解釋(來自官方文檔)

clean_run

值類型是布爾值

默認值是?false

是否應保留之前的運行狀態(tài)

columns_charset

值類型是散列

默認值是?{}

特定列的字符編碼次员。該選項將覆蓋:charset指定列的選項。

例:

輸入{? jdbc { ...? ? columns_charset => { “column0” => “ISO-8859-1” } ... } }? ? ? ? ? ? ?

這只會將具有ISO-8859-1的column0轉(zhuǎn)換為原始編碼王带。

connection_retry_attempts

值類型是數(shù)字

默認值是?1

嘗試連接到數(shù)據(jù)庫的最大次數(shù)

connection_retry_attempts_wait_time

值類型是數(shù)字

默認值是?0.5

在連接嘗試之間休眠的秒數(shù)

jdbc_connection_string

這是一個必需的設置淑蔚。

值類型是字符串

此設置沒有默認值。

JDBC連接字符串

jdbc_default_timezone

值類型是字符串

此設置沒有默認值愕撰。

時區(qū)轉(zhuǎn)換刹衫。SQL不允許timestamp字段中的時區(qū)數(shù)據(jù)。此插件會自動將您的SQL時間戳字段轉(zhuǎn)換為Logstash時間戳搞挣,相對UTC時間采用ISO8601格式绪妹。

使用此設置將手動分配指定的時區(qū)偏移量,而不是使用本地計算機的時區(qū)設置柿究。例如邮旷,您必須使用規(guī)范時區(qū),美國/丹佛蝇摸。

jdbc_driver_class

這是一個必需的設置婶肩。

值類型是字符串

此設置沒有默認值。

如果您使用的是Oracle JDBC貌夕,則需要根據(jù)https://github.com/logstash-plugins/logstash-input-jdbc/issues/43加載JDBC驅(qū)動程序類律歼,例如“org.apache.derby.jdbc.ClientDriver”NB?驅(qū)動程序(ojdbc6.jar)正確的jdbc_driver_class是"Java::oracle.jdbc.driver.OracleDriver"

jdbc_driver_library

值類型是字符串

此設置沒有默認值。

暫時將JDBC邏輯抽象為混合啡专,以便在其他插件(輸入/輸出)中重復使用當某人包含此模塊時調(diào)用此方法將這些方法添加到給定的基礎中险毁。JDBC驅(qū)動程序庫路徑到第三方驅(qū)動程序庫。如果需要多個庫们童,您可以通過逗號分隔它們畔况。

如果未提供,Plugin將在Logstash Java類路徑中查找驅(qū)動程序類慧库。

jdbc_fetch_size

值類型是數(shù)字

此設置沒有默認值跷跪。

JDBC提取大小。如果未提供齐板,則將使用相應的驅(qū)動程序默認值

jdbc_page_size

值類型是數(shù)字

默認值是?100000

JDBC頁面大小

jdbc_paging_enabled

值類型是布爾值

默認值是?false

JDBC啟用分頁

這將導致一個sql語句被分解成多個查詢吵瞻。每個查詢將使用限制和偏移來共同檢索完整的結(jié)果集。限制尺寸設置為jdbc_page_size甘磨。

請注意橡羞,查詢之間不保證排序。

jdbc_password

值類型是密碼

此設置沒有默認值济舆。

JDBC密碼

jdbc_password_filepath

值類型是路徑

此設置沒有默認值卿泽。

JDBC密碼文件名

jdbc_pool_timeout

值類型是數(shù)字

默認值是?5

連接池配置。在引發(fā)PoolTimeoutError之前等待獲取連接的秒數(shù)(默認值為5)

jdbc_user

這是一個必需的設置吗冤。

值類型是字符串

此設置沒有默認值又厉。

JDBC用戶

jdbc_validate_connection

值類型是布爾值

默認值是?false

連接池配置九府。使用前驗證連接。

jdbc_validation_timeout

值類型是數(shù)字

默認值是?3600

連接池配置覆致。驗證連接的頻率(以秒為單位)

last_run_metadata_path

值類型是字符串

默認值是?"/home/ph/.logstash_jdbc_last_run"

使用上次運行時間的文件路徑

lowercase_column_names

值類型是布爾值

默認值是?true

是否強制標識符域的縮小

parameters

值類型是散列

默認值是?{}

例如侄旬,查詢參數(shù)的哈希值?{ "target_id" => "321" }

record_last_run

值類型是布爾值

默認值是?true

是否在last_run_metadata_path中保存狀態(tài)

schedule

值類型是字符串

此設置沒有默認值。

以Cron格式定期運行語句的時間表煌妈,例如:“* * * * *”(每分鐘執(zhí)行一次查詢儡羔,每分鐘執(zhí)行一次)

沒有默認的時間表。如果沒有給出任何時間表璧诵,那么該語句只運行一次汰蜘。

sequel_opts

值類型是散列

默認值是?{}

一般/供應商特定的續(xù)集配置選項。

可選連接池配置的示例max_connections - 連接池的最大連接數(shù)

特定于供應商的選項的示例可以在此文檔頁面中找到:https//github.com/jeremyevans/sequel/blob/master/doc/opening_databases.rdoc

sql_log_level

值可以是任何的:fatal之宿,error族操,warn,info比被,debug

默認值是?"info"

記錄SQL查詢的日志級別章姓,接受的值是常見的值备籽,致命錯誤,警告蚕钦,信息和調(diào)試风宁。默認值是info旁钧。

statement

值類型是字符串

此設置沒有默認值具温。

如果未定義硅则,即使編解碼器未被使用,Logstash也會投訴噪裕。要執(zhí)行的語句

要使用參數(shù)蹲盘,請使用命名參數(shù)語法。例如:

“SELECT * FROM MYTABLE WHERE id =:target_id”

在這里州疾,“:target_id”是一個命名參數(shù)辜限。您可以使用該parameters設置配置命名參數(shù)。

statement_filepath

值類型是路徑

此設置沒有默認值严蓖。

包含要執(zhí)行的語句的文件的路徑

tracking_column

值類型是字符串

此設置沒有默認值。

如果跟蹤列值而不是時間戳氧急,那么將跟蹤其值的列

tracking_column_type

值可以是任何的:numeric颗胡,timestamp

默認值是?"numeric"

跟蹤列的類型。目前只有“數(shù)字”和“時間戳”

use_column_value

值類型是布爾值

默認值是?false

使用增量列值而不是時間戳

add_field

值類型是散列

默認值是?{}

添加一個字段到一個事件

codec

值類型是編解碼器

默認值是?"plain"

用于輸入數(shù)據(jù)的編解碼器吩坝。輸入編解碼器是在數(shù)據(jù)進入輸入之前解碼數(shù)據(jù)的便捷方法毒姨,無需在Logstash管道中使用單獨的篩選器。

enable_metric

值類型是布爾值

默認值是?true

在默認情況下钉寝,為特定插件實例禁用或啟用度量標準日志記錄弧呐,我們會記錄所有可以使用的度量標準闸迷,但是您可以禁用特定插件的度量標準收集。

id

值類型是字符串

此設置沒有默認值俘枫。

添加一個獨特ID的插件配置腥沽。如果沒有指定ID,Logstash會生成一個鸠蚪。強烈建議在您的配置中設置此ID今阳。當你有兩個或多個相同類型的插件時,這是特別有用的茅信,例如盾舌,如果你有2個jdbc輸入。在這種情況下添加命名標識將有助于在使用監(jiān)視API時監(jiān)視Logstash蘸鲸。

輸入{? jdbc {? ? id => “my_plugin_id” } }?

tags

值類型是數(shù)組

此設置沒有默認值妖谴。

為您的活動添加任意數(shù)量的任意標簽。

這可以幫助稍后處理酌摇。

type

值類型是字符串

此設置沒有默認值膝舅。

type為由此輸入處理的所有事件添加一個字段。

類型主要用于過濾器激活妙痹。

該類型存儲為事件本身的一部分铸史,因此您也可以使用該類型在Kibana中搜索它。

如果您嘗試在已經(jīng)有一個事件的事件上設置類型(例如怯伊,當您將事件從發(fā)貨方發(fā)送到索引器時)琳轿,則新輸入不會覆蓋現(xiàn)有類型。托運人設置的類型即使在發(fā)送到另一個Logstash服務器時也會保留該事件的生命耿芹。

以上翻譯是google翻譯提供

具體的見:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html

圖6中有個run目錄崭篡,在這里是用來存放:sql_last_value的時間值的

store_list.sql


圖7

先在es中生成index

PUT /store_list

{

? "settings": {

? ? "number_of_shards": 3,

? ? "number_of_replicas": 1

? },

? "mappings": {

? ? "jdbc": {

? ? ? "properties": {

? ? ? ? "@timestamp": {

? ? ? ? ? "type": "date"

? ? ? ? },

? ? ? ? "@version": {

? ? ? ? ? "type": "keyword"

? ? ? ? },

? ? ? ? "store_id": {

? ? ? ? ? "type": "long"

? ? ? ? },

? ? ? ? "store_name": {

? ? ? ? ? "type": "keyword"

? ? ? ? },

? ? ? ? "uid": {

? ? ? ? ? "type": "text"

? ? ? ? },

? ? ? ? "telephone": {

? ? ? ? ? "type": "text"

? ? ? ? },

? ? ? ? "street_id": {

? ? ? ? ? "type": "text"

? ? ? ? },

? ? ? ? "detail": {

? ? ? ? ? "type": "keyword"

? ? ? ? },

? ? ? ? "address": {

? ? ? ? ? "type": "keyword"

? ? ? ? },

? ? ? ? "store_created": {

? ? ? ? ? "type": "date"

? ? ? ? },

? ? ? ? "store_updated": {

? ? ? ? ? "type": "date"

? ? ? ? },

? ? ? ? "detail_id": {

? ? ? ? ? "type": "long"

? ? ? ? },

? ? ? ? "type_name": {

? ? ? ? ? "type": "text"

? ? ? ? },

? ? ? ? "tag": {

? ? ? ? ? "type": "keyword"

? ? ? ? },

? ? ? ? "overall_rating": {

? ? ? ? ? "type": "text"

? ? ? ? },

? ? ? ? "navi_location_lng": {

? ? ? ? ? "type": "double"

? ? ? ? },

? ? ? ? "navi_location_lat": {

? ? ? ? ? "type": "double"

? ? ? ? },

? ? ? ? "detail_url": {

? ? ? ? ? "type": "text"

? ? ? ? },

? ? ? ? "comment_num": {

? ? ? ? ? "type": "integer"

? ? ? ? },

? ? ? ? "detail_created": {

? ? ? ? ? "type": "date"

? ? ? ? },

? ? ? ? "detail_updated": {

? ? ? ? ? "type": "date"

? ? ? ? },

? ? ? ? "location_id": {

? ? ? ? ? "type": "long"

? ? ? ? },

? ? ? ? "lng": {

? ? ? ? ? "type": "double"

? ? ? ? },

? ? ? ? "lat": {

? ? ? ? ? "type": "double"

? ? ? ? }

? ? ? }

? ? }

? }

}

上面這種方式可以通過es管理工具執(zhí)行,比如kibana->dev tools

或者

curl -XPUT "http://localhost:9200/store_list" -H 'Content-Type: application/json' -d'

{

? "settings": {

? ? "number_of_shards": 3,

? ? "number_of_replicas": 1

? },

? "mappings": {

? ? "jdbc": {

? ? ? "properties": {

? ? ? ? "@timestamp": {

? ? ? ? ? "type": "date"

? ? ? ? },

? ? ? ? "@version": {

? ? ? ? ? "type": "keyword"

? ? ? ? },

? ? ? ? "store_id": {

? ? ? ? ? "type": "long"

? ? ? ? },

? ? ? ? "store_name": {

? ? ? ? ? "type": "keyword"

? ? ? ? },

? ? ? ? "uid": {

? ? ? ? ? "type": "text"

? ? ? ? },

? ? ? ? "telephone": {

? ? ? ? ? "type": "text"

? ? ? ? },

? ? ? ? "street_id": {

? ? ? ? ? "type": "text"

? ? ? ? },

? ? ? ? "detail": {

? ? ? ? ? "type": "keyword"

? ? ? ? },

? ? ? ? "address": {

? ? ? ? ? "type": "keyword"

? ? ? ? },

? ? ? ? "store_created": {

? ? ? ? ? "type": "date"

? ? ? ? },

? ? ? ? "store_updated": {

? ? ? ? ? "type": "date"

? ? ? ? },

? ? ? ? "detail_id": {

? ? ? ? ? "type": "long"

? ? ? ? },

? ? ? ? "type_name": {

? ? ? ? ? "type": "text"

? ? ? ? },

? ? ? ? "tag": {

? ? ? ? ? "type": "keyword"

? ? ? ? },

? ? ? ? "overall_rating": {

? ? ? ? ? "type": "text"

? ? ? ? },

? ? ? ? "navi_location_lng": {

? ? ? ? ? "type": "double"

? ? ? ? },

? ? ? ? "navi_location_lat": {

? ? ? ? ? "type": "double"

? ? ? ? },

? ? ? ? "detail_url": {

? ? ? ? ? "type": "text"

? ? ? ? },

? ? ? ? "comment_num": {

? ? ? ? ? "type": "integer"

? ? ? ? },

? ? ? ? "detail_created": {

? ? ? ? ? "type": "date"

? ? ? ? },

? ? ? ? "detail_updated": {

? ? ? ? ? "type": "date"

? ? ? ? },

? ? ? ? "location_id": {

? ? ? ? ? "type": "long"

? ? ? ? },

? ? ? ? "lng": {

? ? ? ? ? "type": "double"

? ? ? ? },

? ? ? ? "lat": {

? ? ? ? ? "type": "double"

? ? ? ? }

? ? ? }

? ? }

? }

}'

然后通過http://localhost:9200/store_list/查看字段生成情況

store_list就是index,相當于數(shù)據(jù)庫的database


圖8

然后回到logstash目錄下

執(zhí)行 nohup.exe ./bin/logstash.bat -f config-mysql/load_data.conf &

圖9

最好加上& 結(jié)尾吧秕,后臺運行

然后看數(shù)據(jù)庫同步情況


圖10

可能有些細節(jié)沒能寫全琉闪,如果在集成中遇到什么情況,可以評論指出

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末砸彬,一起剝皮案震驚了整個濱河市颠毙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌砂碉,老刑警劉巖蛀蜜,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異增蹭,居然都是意外死亡滴某,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霎奢,“玉大人户誓,你說我怎么就攤上這事∧幌溃” “怎么了帝美?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長橙依。 經(jīng)常有香客問我证舟,道長,這世上最難降的妖魔是什么窗骑? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任女责,我火速辦了婚禮,結(jié)果婚禮上创译,老公的妹妹穿的比我還像新娘抵知。我一直安慰自己,他們只是感情好软族,可當我...
    茶點故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布刷喜。 她就那樣靜靜地躺著,像睡著了一般立砸。 火紅的嫁衣襯著肌膚如雪掖疮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天颗祝,我揣著相機與錄音浊闪,去河邊找鬼。 笑死螺戳,一個胖子當著我的面吹牛搁宾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播倔幼,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼盖腿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了损同?” 一聲冷哼從身側(cè)響起翩腐,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎膏燃,沒想到半個月后栗菜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡蹄梢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片禁炒。...
    茶點故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡而咆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幕袱,到底是詐尸還是另有隱情暴备,我是刑警寧澤,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布们豌,位于F島的核電站涯捻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏望迎。R本人自食惡果不足惜障癌,卻給世界環(huán)境...
    茶點故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辩尊。 院中可真熱鬧涛浙,春花似錦、人聲如沸摄欲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胸墙。三九已至我注,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間迟隅,已是汗流浹背但骨。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留玻淑,地道東北人嗽冒。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像补履,于是被迫代替她去往敵國和親添坊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,442評論 2 359

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