java定时同步两台mysql_[mysql定时同步数据库]【mysql定时数据同步】_weixin_39914863的博客-程序员宅基地

技术标签: java定时同步两台mysql  

bc3f9276acf88283a0569b9b9ef9ee92.png

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

目录

1.前言

2.java环境

2.1 安装jdk

2.1.1 64位安装

2.1.2 32位安装

2.1.3 环境变量

2.1.4 刷新权限

2.1.5 确认安装

3 安装tomcat8

3.1 修改端口号

3.2 设置tomcat-user

3.3 验证tomcat

4.配置solr

4.1 拷贝solr-webap

4.2 拷贝额外jar包

4.3 创建日志文件夹

4.4 创建数据区

4.5 设置solr/home

5.其他配置

6.关键字分词命中

7.清空solr数据

8.手工同步数据

9.自动同步

10.参考文献

solr主要用于全文搜索用的,类似我们看到在搜索框输入一个词或者字,就会自动下拉和此相关的记录,并且把关键字高亮的效果大多都是通过solr实现的。有人可能要说,直接用mysql模糊匹配不是就能实现吗?其实却是也是可以实现,在知识库数据量小的情况下,直接like模糊匹配就行了,找到相似的前多少条返回前端进行展示即可,但问题是,一般情况下知识库的内容都不是简单几千条或者几万条,知识库的数据量都是非常大,这时候如果还用like模糊匹配,你会发现简直就是灾难啊。like默认情况下是会扫全表的,这时候查询效率就非常慢,用户体验超级差。但是solr的搜索不同,简单说一下我对solr搜索的理解如下。

solr是对拿到的记录进行分词,将每个词进行保存,并将词和内容建立对应关系,并对此做索引。例如分出两个词A、B,后续如果还有新的文档记录过来也分出有A、B词的话,就会把文档也挂到对应这俩词的文档链表上。当我们输入内容进行查询的时候,会先对内容进行分词,根据词找到词对应的文档链表,然后把记录返回。可以简单理解为词是主键,和文档内容是一对多关系。当然实际的技术实现可能我说的要复杂的多。下面贴两个链接,有兴趣的可以自己去研究看一下。

solr5.5最好配合tomcat8和jdk8,不然总会发现意想不到的问题。

下面从环境搭建到solr部署记录下实际项目中关于solr的应用。

登录需要安装的主机之后,输入命令:uname –i。查看系统信息,如果是i386,则使用jdk-8u11-linux-i586.tar.gz 安装包;如果是x86_64,则使用jdk-8u171-linux-x64.tar.gz 安装包。从jdk安装包目录中拷贝相关安装包到/opt/java目录下进行安装即可。

1>.把jdk-6u45-linux-x64.bin拷贝到新建的java目录下

2>.解压缩:tar zxvf jdk-8u171-linux-x64.tar.gz

1>.把jdk-8u11-linux-i586.tar.gz拷贝到java目录下

2>.解压缩:tar zxvf jdk-8u11-linux-i586.tar.gz

cd到根目录,执行:vi/etc/profile

文件打开后,上下键,移动到底部, 开始插入:

–64位安装

–32位安装

输入完毕,Esc,然后输入 :wq 保存退出

执行:./etc/profile

命令行输入:java –version,查看版本,显示如下,则说明安装成功。

543de05f09c16ded20310edb3499231e.png

拷贝apache-tomcat-8.0.52.tar.gz至/opt/solr目录下,执行tar zxvf apache-tomcat-8.0.52.tar.gz 解压成功,修改apache-tomcat-8.0.52为tomcat-solr。

打开/opt/solr/tomcat-solr/conf/server.xml 修改默认8080端口为8007 修改AJP默认8009端口为8091

打开/opt/solr/tomcat-solr/conf/tomcat-users.xml 在这一行上面新增如下行:

最后一行是设置的用户solr,密码solr_lzy的用户具备这些访问权限。

进入到tomcat-solr/bin/目录下,执行:https://www.csdn.net/gather_2e/startup.sh

浏览器中输入:http://ip:8007 显示如下页面,则说明正常。

972de0d6ea14c329a7f97f5cfa0bb240.png

如果想查看tomcat中应用的状态,点击Server status,输入前面配置的用户名、密码既可以登录查看。tomcat验证成功之后,https://www.csdn.net/gather_2e/shutdown.sh停止tomcat,然后进行后续操作。

复制solr-5.5.5/server/solr-webapp/webapp到tomcat下的webapps目录下,改名为solr。

切换到/opt/solr 目录下,执行:

cp-r solr-5.5.5/server/solr-webapp/webapp tomcat-solr/webapps/solr

把额外jar下的jar文件全部拷贝到tomcat-solr/webapps/solr/WEB-INF/lib/目录下

把将solr-5.5.5/server/lib/ext/目录下的所有jar包复制到tomcat-solr/webapps/solr/WEB-INF/lib/下。

额外jar报主要包括几部分:

IKAnalyzer2012FF_u2.jarIK分词的jar包,亲测solr5.5可用

pinyin4j-2.5.0.jarpinyinAnalyzer4.3.1.jar 拼音分词搜索用到的jar

solr-dataimportscheduler-1.1.1.jarmysql自动同步用的jar,亲测solr5.5可用

额外jar点我去下载

在opt/solr目录下新建solr-log目录,用来存放solr相关日志信息。

将solr-5.5.0/server/solr目录复制到/opt/solr/solrhome 目录下,这个就是传说中的solr/home(存放检索数据)

切换到opt/solr目录下,执行:cp-r solr-5.5.5/server/solr solrhome

编辑tomcat-solr/webapps/solr/WEB-INF/web.xml文件,一下部分是注释的,把注释去掉。solr在启动的时候会去这个根目录加载相关信息。

其他配置主要是关于ik分词和log4j的配置文件,ik分词可以配置关键词字典和停用词字典。log4j配置文件可以配置solr服务运行时候的log日志目录。

目前solr搜索是基于IKAnalyzer做的中文分词,基础词库内容都是常用的词库,例如人民日报内容等。而和业务紧密关联的知识库内容未必能达到很好的分词效果, 因为有些词在词库中并没有,因此单纯的部署发布后,对于特定词的查询可能无法达到既定的目标要求。

例如:有一条知识库记录的标题为:时代花世界的联系方式什么?我们可能想根据”时代”、”花世界”进行搜索查询,但是默认情况下IK分词无法把”花世界”这样的结果分出来,就造成查询效果不佳的情况。同样的,我们可能不需要”什么”这样的词,但是Ik默认会把他分出来,此时可以通过配置停用词字典来过滤掉不需要的词,增加分词准确性和搜索的精准度。

IK分词支持自定义维护字典和停用词字典的功能,具体操作可以参考部署手册中的说明,对不同项目中不同业务情况下的知识库信息进行关键词库和停用词库的配置。

在浏览中输入:http://localhost:8007/solr/index.html ,在左侧菜单,选择core1->Documents,然后选择/update,type选择xml,输入一下内容:

然后执行就完成清空操作。具体如下图所示:

ae2013c7af606cabf67aa3fd8c1e01c6.png

在左侧菜单中,选择core1->Dataimport,然后选择full-import,Entity选择wiki,然后点击Execute,等Refresh Status 变色后,点击刷新,就可以从右侧看到导入的信息。具体如下图所示:

d768caa8531a41cb21e343825ef25031.png

关于自动同步的设置,网上很多,之所以回过头来补充,是因为之前自己做的自动同步方案不生效。主要原因在于data-config.xml文件设置的不对,重新调整后xml如下所示:

重点注意:

query

full-import 全量查询时候要用的,也就是重建索引时候会查询这个。

deltaQuery

这个是查询有哪些是增量更新的记录id

deltaImportQuery

delta-import时候插入哪些增量更新的记录。

网上关于dih自动同步,增量更新的博客很多,这里不再过多赘述,仅仅记录自己使用时候的新认识。区分一下{dih.delta.id}和${dataimporter.delta.id},它们是一样的,如果设置了pk,就使用dih,否则直接使用dataimporter。

【1】solr全文检索原理解释非常好的博文

【2】solr和Mysql查询效率对比的博文

【3】solr5.5自动同步mysql数据非常的博文

【4】非常好的solr部署安装入门博文

【5】Solr(七)DIH增量导入和设置定时

【6】Solr学习(五)DIH增量、定时导入并检索数据

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39914863/article/details/114655805

智能推荐

python中的get函数_来自另一个函数的Python tkinter get()_weixin_39968724的博客-程序员宅基地

def CreateGUI():WinCreate=Toplevel(master)WinCreate.attributes("-toolwindow",1)WinCreate.resizable(0,0)WinCreate.transient(master)WinCreate.grab_set()sideframe=Frame(WinCreate,bd=2,relief=GROOVE)Label...

uniApp h5和小程序锚点跳转_Nomal_1bit的博客-程序员宅基地

需求是点击导航的icon 自动定位锚点到当前页 代码如下console.log(xitem, '锚点'); uni.createSelectorQuery().select("." + 'qianggou').boundingClientRect( data => { //目标位置的节点:类或者id uni.createSelectorQuery().select(".index-box").boundingClientRect( res =.

SkyLake平台安装ubuntu16.04.1(Alienware15r2)_weixin_30752377的博客-程序员宅基地

我是全盘安装,我的电脑可以安装三个硬盘,所以我无所谓,但是你一定要记得数据备份,如果你也想学数据恢复,那就当我没说但是一般情况下重装系统数据基本是恢复不了了,尤其分区表被干掉的情况下重要的事情说三遍:数据要备份,数据要备份,数据要备份,不仅要存在移动硬盘一份还要存在网盘上一份工具:unetbootin/超级大白菜下载地址:http://unetbootin.github.io...

在Spring MVC环境中集成Knie4j_萧明的博客-程序员宅基地_springmvc集成knief4j

如果你是Spring MVC项目,想使用knife4j提供的增强ui包,使用方法很简单demo参考示例地址:knife4j-spring-mvc-demo依赖引用2.0.4(包含)以前的版本如果开发者使用的是2.0.4(包含)以前的版本,那么需要引入以下2个jar包第一步是需要引入Knife4j提供的依赖包,如下:<!--引入Knife4j--><dependency> <groupId>com.github.xiaoymin</groupId

Python爬虫之如何爬取抖音小姐姐的视频_Ch97CKd的博客-程序员宅基地

介绍这次爬的是当下大火的APP--抖音,批量下载一个用户发布的所有视频。各位也应该知道,抖音只有移动端,官网打开除了给你个APP下载二维码啥也没有,所以相比爬PC网站,还...

HTTP/1.1 406 Not Acceptable_我是蚁人的博客-程序员宅基地

今天在测试HTTP接口的时候,通过JSON调接口返回数据,结果出现了这个问题。工程是Spring Boot,使用Maven管理依赖,工程启动之后,使用restful工具通过json来测试rest接口,但是却出现了一个错误HTTP/1.1 406 Not AcceptableX-Content-Type-Options: nosniffPragma: no-cacheStrict-Tra

随便推点

ACM C++快读快写一体模板_STL_CC的博客-程序员宅基地

比赛时自己用的,方便#include<bits/stdc++.h>#define mem(x) memset(x,0,sizeof(x))using namespace std;typedef long long ll;const ll maxn=1e5+10;const ll mod=1e9+7;const ll inf=0x7f7f7f7f;template<...

python tkinter输入框_Python Tkinter输入对话框(附带实例讲解)_weixin_39940913的博客-程序员宅基地

在 simpledialog 模块下还有如下便捷的工具函数,通过这些工具函数可以更方便地生成各种输入对话框:askinteger:生成一个让用户输入整数的对话框。askfloat:生成一个让用户输入浮点数的对话框。askstring:生成一个让用户输入字符串的对话框。上面三个工具函数的前两个参数分别指定对话框的标题和提示信息,后面还可以通过选项来设置对话框的初始值、最大值和最小值。下面程序示范了 ...

Spring beanid 同名覆盖问题解决_CodeAndThink的博客-程序员宅基地

转载至:http://blog.csdn.net/linuxerlin/article/details/38778761问题:   最近在做公共框架的构建,由于采用了模块化的插件机制,在开发的过程中,发现不同开发人员的spring配置中,出现了两个bean的配置id和实现类名称都一样的情况。例如有下面的bean类:package com.XXX.common.t

三星uboot-1.1.6源码分析——lowlevel_init.S (board\samsung\smdk6410)(1)_tianxiawuzhei的博客-程序员宅基地_port drive strength control

最近在看uboot的源码,做些笔记。lowlevel_init.S (board\samsung\smdk6410)这个文件主要是与板级配置相关的代码,看他在那个目录就知道了。不多说了,开始看源码。1、#include #include #include #include "smdk6410_val.h"_TEXT_BASE:.word TEXT_BASE

第二节 Spring解析XML与装载BeanDefinition的过程_清风竹雨的博客-程序员宅基地

引子我们都知道创建IOC容器的方式有以下常用几种:FileSystemXmlApplicationContext fileSystemXmlApplicationContext=new FileSystemXmlApplicationContext("/application.xml");FileSystemXmlApplicationContext fileSystemXmlApplica...

让Python在退出时强制运行一段代码_来时春尽的博客-程序员宅基地_python 如何在程序关闭时执行

atexit介绍python atexit 模块定义了一个 register 函数,用于在 python 解释器中注册一个退出函数,这个函数在解释器正常终止时自动执行,一般用来做一些资源清理的操作。 atexit 按注册的相反顺序执行这些函数; 例如注册A、B、C,在解释器终止时按顺序C,B,A运行。Note:如果程序是非正常crash,或者通过os._exit()退出,注册的退出函数将不会被调用。官方文档atexit作用调试终止程序时进行清理例如在调试chrome的webdriver时示例一

推荐文章

热门文章

相关标签