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的数据大概同步了五分钟左右就完成了。至此,从几大软件的安装到数据的同步就介绍完成了,希望对你有所帮助。