天天看點

logstash-output-mongodb實作Mysql到Mongodb資料同步0、前提

0、前提

1)已經安裝好源資料庫:Mysql;

2)已經安裝好目的資料庫:Mongodb;

3)已經安裝好logstash及相關插件logstash-output-mongodb

安裝步驟參考:

http://blog.csdn.net/laoyang360/article/details/65448962

1、同步conf配置詳解

[root@la bin]# cat ./logstash_jdbc_mongo/jdbc_mongo.conf
input {
  stdin {
  }
  jdbc {
  ‘# 源Mysql資料庫位址
  jdbc_connection_string => "jdbc:mysql://20.18.11.4:3306/tech?zeroDateTimeBehavior=convertToNull"
  #源Mysql的使用者名和密碼
  jdbc_user => "root"
  jdbc_password => "rot123"

  ‘ #true代表記錄最後存儲的關聯列值
  record_last_run => "true"
  use_column_value => "true"
  tracking_column => "id"
  ‘ #存儲位置
  last_run_metadata_path => "/opt/logstash/bin/logstash_jdbc_mongo/mongo_info"
  clean_run => "false"

  ‘ #jdbc路徑位址
  jdbc_driver_library => "/home/lib/mysql-connector-java-5.1.38.jar"
  ‘ # the name of the driver class for mysql
  jdbc_driver_class => "com.mysql.jdbc.Driver"
  jdbc_paging_enabled => "true"
  jdbc_page_size => "500"
‘ #以下對應着要執行的sql的絕對路徑。
  statement_filepath => "/opt/logstash/bin/logstash_jdbc_mongo/jdbc_mongo.sql"
‘ #定時字段 各字段含義(由左至右)分、時、天、月、年,全部為*預設含義為每分鐘都更新
schedule => "* * * * *"
  }
}

filter {
json {
  source => "message"
  remove_field => ["message"]
  }
}

’#輸出mongodb的配置
output {
  stdout { codec => rubydebug }
  mongodb {
‘#對應mongodb的輸出集合
  collection => "N_CLASS"
’#對應mongodb的輸出資料庫名稱
  database => "data"
  uri => "mongodb://110.0.12.45:27017"
  }
}           

2、需要同步表的sql

[root@lalogstash_jdbc_mongo]# cat jdbc_mongo.sql
select
*
from n_class
where n_class.id > :sql_last_value           

3、小結

以上實作了Mysql資料庫中的一個庫表table 與 Mongodb中的一個集合collection之間的全量、增量同步操作。

全量的實作:通過sql語句實作;

增量的實作:通過定時、sql_last_value實作。

同步的時候,無需在mongodb做任何操作,同步後,既可以在mongodb的windows用戶端:Robomongo看到同步後新增的集合collection。

4、題外話(歡迎留言讨論)

PS:以下連結涉及演講主題“NoSQL之王——一分鐘從關系型遷移到MongoDB”,但是目前為止,沒有找到相關細節介紹PPT等資料。博友,誰有參與或者更好的同步方案歡迎評論探讨。

http://geek.csdn.net/news/detail/186266

作者:銘毅天下

轉載請标明出處,原文位址:

http://blog.csdn.net/laoyang360/article/details/65449127