本发明涉及计算机,特别涉及一种数据同步方法、装置、设备及计算机可读存储介质。
背景技术:
1、基于云安全托管平台,因其业务需求,elasticsearch(基于lucene的分布式全文搜索引擎,提供实时搜索、分析和存储能力)常用于存储日志和事件数据等,这些数据可能包含重要的业务信息。通过将elasticsearch数据同步到mysql(一种开源的关系型数据库管理系统,支持多种操作系统和编程语言,具有高性能、可靠性和可扩展性)数据库中,可以将数据备份到可靠的关系型数据库中,以便在elasticsearch数据丢失或损坏时进行恢复操作。
2、logstash(是一个开源数据收集引擎)可以通过用户从各种数据源收集数据,并将其发送到目标位置,达成数据转换和传输的目的,在elasticsearch数据同步到mysql数据库一般较为常用,但其因为采用了java(是一门面向对象的编程语言)编程的应用程序,存在较多的组件和应用,运维保障相对复杂,需要额外的配置和管理工作;并且还会占用额外的系统资源和网络带宽;对于大数据量的同步,logstash方法可能会影响elasticsearch的性能。
3、因此,如何高效便捷地将elasticsearch数据同步到mysql数据库是本领域技术人员亟待解决的问题。
技术实现思路
1、有鉴于此,本发明的目的在于提供数据同步方法、装置、设备及可读存储介质,解决了现有技术中将elasticsearch数据同步到mysql数据库效率低且不便捷的问题。
2、为解决上述技术问题,本发明提供了一种数据同步方法,包括:
3、mysql数据库和elasticsearch建立连接;
4、当连接成功后,检查所述mysql数据库中是否存在目标表;
5、若存在,则利用elasticsearch的search api和scroll api获取所述elasticsearch中的数据;
6、若不存在,则创建所述目标表,执行所述利用elasticsearch的search api和scroll api获取所述elasticsearch中的数据的步骤;
7、将所述elasticsearch中的数据进行类型转换并同步到所述mysql数据库。
8、可选的,在所述mysql数据库和elasticsearch建立连接之后,还包括:
9、判断是否为首次连接;
10、若是首次连接,则所述利用所述elasticsearch的search api和scroll api获取所述elasticsearch中的数据,包括:
11、利用所述elasticsearch的search api和scroll api获取所述elasticsearch中的所有数据;
12、若非首次连接,则所述利用所述elasticsearch的search api和scroll api获取所述elasticsearch中的数据,包括:
13、利用所述elasticsearch的search api和scroll api按照预设规则获取所述elasticsearch中的数据。
14、可选的,所述利用所述elasticsearch的search api和scroll api按照预设规则获取所述elasticsearch中的数据,包括:
15、获取预设周期;
16、利用所述search api向所述elasticsearch发送查询请求;所述查询请求包括查询数据范围;
17、利用所述scroll api根据所述查询请求和所述预设周期滚动获取所述elasticsearch中的数据。
18、可选的,所述利用所述elasticsearch的scroll api获取所述elasticsearch中的数据,包括:
19、利用基于时间的scroll api获取所述elasticsearch中的数据;
20、或者,利用基于游标的scroll api获取所述elasticsearch中的数据;
21、或者,利用基于slice的scroll api获取所述elasticsearch中的数据。
22、可选的,所述利用所述elasticsearch的search api和scroll api获取所述elasticsearch中的数据;将所述elasticsearch中的数据进行类型转换并同步到所述mysql数据库,包括:
23、按照多线程的方式执行利用所述elasticsearch的search api和scroll api获取所述elasticsearch中的数据;
24、按照多线程方式将所述elasticsearch中的数据进行类型转换并同步到所述mysql数据库。
25、可选的,所述将所述elasticsearch中的数据同步到所述mysql数据库,包括:
26、检查所述mysql数据库是否存在所述elasticsearch中的数据;
27、若存在,则根据所述elasticsearch中的数据更新所述mysql数据库;
28、若不存在,则将所述elasticsearch中的数据插入到所述mysql数据库。
29、可选的,所述将所述elasticsearch中的数据进行类型转换,包括:
30、将所述elasticsearch中的数据由json格式转换为所述mysql数据库中的表和字段。
31、本发明还提供了一种数据同步装置,包括:
32、建立连接模块,用于mysql数据库和elasticsearch建立连接;
33、检测目标表模块,用于当连接成功后,检查所述mysql数据库中是否存在目标表;
34、第一获取模块,用于若存在,则利用elasticsearch的search api和scroll api获取所述elasticsearch中的数据;
35、第二获取模块,用于若不存在,则创建所述目标表,执行所述利用elasticsearch的search api和scroll api获取所述elasticsearch中的数据的步骤;
36、转换同步模块,用于将所述elasticsearch中的数据进行类型转换并同步到所述mysql数据库。
37、本发明还提供了一种数据同步设备,包括:
38、存储器,用于存储计算机程序;
39、处理器,用于执行所述计算机程序时实现上述的数据同步方法的步骤。
40、本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的数据同步方法的步骤。
41、可见,本发明通过mysql数据库和elasticsearch建立连接;当连接成功后,检查mysql数据库中是否存在目标表;若存在,则利用elasticsearch的search api和scrollapi获取elasticsearch中的数据;若不存在,则创建目标表,执行利用elasticsearch的search api和scroll api获取elasticsearch中的数据的步骤;将elasticsearch中的数据进行类型转换并同步到mysql数据库。本发明使用elasticsearch的scroll api实现elasticsearch数据同步到mysql数据库,因scroll api为开源技术可以降低系统成本,并且可以获得更好的灵活性和可扩展性;还可以避免在每次查询时重新计算查询结果的开销,从而提高查询效率。
42、此外,本发明还提供了一种数据同步装置、设备及计算机可读存储介质,同样具有上述有益效果。