1、在mysql創建數據庫表
Create Table: CREATE TABLE `emp` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`empno` int(11) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`age` int(3) DEFAULT NULL,
`deptId` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
2、使用腳本在表中插入上百萬條數據
過程略。。。想要腳本的可以私信我。
3、在ElasticSearch中創建索引
PUT /index_emp
4、配置logstash:實現ElasticSearch與mysql數據庫的數據同步
(1)在logstash-6.4.0文件目錄下新建一個文件夾,名字隨意,我這裏創建的是mysqltest文件夾。
(2)在mysqltest文件夾下首先創建mysql.conf文件,文件內容如下:
input {
stdin {
}
jdbc {
# mysql 數據庫鏈接,test01爲數據庫名
jdbc_connection_string => "jdbc:mysql://192.168.225.143:3306/test01"
# 用戶名和密碼
jdbc_user => "root"
jdbc_password => "123456"
# 驅動,我這裏把驅動也放到mysqltest目錄下了
jdbc_driver_library => "/home/dcs/soft/logstash-6.4.0/mysqltest/mysql-connector-java-5.1.7-bin.jar"
# 驅動類名
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
# 執行的sql 文件路徑+名稱
statement_filepath => "/home/dcs/soft/logstash-6.4.0/mysqltest/test_emp.sql"
# 設置監聽間隔 各字段含義(由左至右)分、時、天、月、年,全部爲*默認含義爲每分鐘都更新
schedule => "* * * * *"
# 索引類型
type => "item"
}
}
filter {
json {
source => "message"
remove_field => ["message"]
}
}
output {
elasticsearch {
hosts => ["192.168.225.143:9200"]
index => "index_emp"
document_id => "%{id}"
}
stdout {
codec => json_lines
}
}
(3)創建一個sql文件,命名爲test_emp.sql(名稱隨意)和上邊mysql.conf的配置文件一致,需要往elasticsearch中同步哪些字段自己定義。
SELECT
id,
empno,
name,
age,
deptId
FROM emp
3.啓動logstash,啓動命令:./logstash -f …/mysqltest/mysql.conf,稍等片刻就會看到數據同步了。
我在測試中350000的數據大概同步了五分鐘左右就完成了。至此,從幾大軟件的安裝到數據的同步就介紹完成了,希望對你有所幫助。