Elasticsearch7.8.1集群安装手册

1. 部署说明

elasticsearch集群规划为三个节点,elasticsearch版本为7.8.1

2. 下载安装包

1)下载 Elasticsearch7.8.1安装包

# cd /opt
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.1-linux-x86_64.tar.gz

3. Elasticsearch安装

3.1 解压

cd elasticsearch-7.8.1
# tar -zxvf elasticsearch-7.8.1-linux-x86_64.tar.gz

3.2 修改配置

1)jvm.options调整内存大小

# vi config/jvm.options
#-Xms4g
#-Xmx4g
-Xms1g
-Xmx1g

2)修改elasticsearch.yml

集群规划为三个节点,三个节点的配置,只有node.name: es-node1 不同,请分别配置

node1:
node.name: es-node1
transport.tcp.port: 9300
node2:
node.name: es-node2
transport.tcp.port: 9301
node3:
node.name: es-node3
transport.tcp.port: 9302

具体配置如下

# vi config/elasticsearch.yml#集群名称,三台集群,要配置相同的集群名称
cluster.name: es-cluster
#节点名称
node.name: es-node1
#是不是有资格主节点
node.master: true
#是否存储数据
node.data: true
#最⼤集群节点数
node.max_local_storage_nodes: 3
# 数据和日志存储路径
path.data: /opt/elasticsearch-7.8.1/data
path.logs: /opt/elasticsearch-7.8.1/logs
# 三个节点配置备份路径白名单,此处如果不指定,在备份索引的时候会报错
path.repo: ["/opt/elasticsearch-7.8.1/backup", "/data/esbackup"]
#⽹关地址
network.host: 0.0.0.0
#端⼝
http.port: 9200
#内部节点之间沟通端⼝
transport.tcp.port: 9300
#es7.x 之后新增的配置,写⼊候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["10.3.9.202:9300", "10.3.9.203:9301", "10.3.9.204:9302"]
#es7.x 之后新增的配置,初始化⼀个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["es-node1", "es-node2", "es-node3"]##末尾添加
indices.memory.index_buffer_size: 40%
thread_pool.write.size: 3
thread_pool.write.queue_size: 1000
indices.fielddata.cache.size:  40%#允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"

3.3 创建用户

#创建es用户,adduser会在/home目录下会自动创建同名文件夹
# adduser es
#修改es用户密码,接着输入两次密码123456
# passwd es
#给新用户文件夹权限
# chown -R es /opt/elasticsearch-7.8.1

3.4 启动

#切换成新建的es用户
# su es
$ cd elasticsearch-7.6.2/
$ ./bin/elasticsearch

3.4.1 排错

ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]#修改系统内核参数
#切换到root用户
$ su
#修改limits.conf
# vi /etc/security/limits.conf 
#es : 表示用户,* 表示所有用户
#soft xxx : 代表警告的设定,可以超过这个设定值,但是超过后会有警告。
#hard xxx : 代表严格的设定,不允许超过这个设定的值
#nofile : 是每个进程可以打开的文件数的限制
#nproc  : 是操作系统级别对每个用户创建的进程数的限制
es soft nofile 65536  #es用户可打开的文件描述符的最大数(超过会警告)
es hard nofile 65536  #es用户可打开的文件描述符的最大数(超过会报错)
es soft nproc  4096   #es用户可用的最大进程数量(超过会警告)
es hard nproc  4096   #es用户可用的最大进程数量(超过会报错)编辑 /etc/security/limits.conf,追加以下内容;
* soft nofile 65536
* hard nofile 65536
此文件修改后需要重新登录用户,才会生效#修改sysctl.conf,在末尾追加
# vi /etc/sysctl.conf 
vm.max_map_count=262144
#使修改立即生效
# sysctl -p

3.4.2 后台启动

es三个节点配置完成后,分别启动三个节点的elasticsearch进程

#切换成es用户来启动
# su es
$ nohup ./bin/elasticsearch &
#查看控制台
# tail -f nohup.out#关闭
# ps aux |grep elasticsearch
# kill -9 2382(进程号)

3.5 访问

浏览器请求http://10.3.9.202:9200/、http://10.3.9.203:9200/、http://10.3.9.204:9200/

{"name" : "es-node1","cluster_name" : "es-cluster","cluster_uuid" : "QhAtHT6XQ7yvZAYw8I7qaw","version" : {"number" : "7.8.1","build_flavor" : "default","build_type" : "tar","build_hash" : "b5ca9c58fb664ca8bf9e4057fc229b3396bf3a89","build_date" : "2020-07-21T16:40:44.668009Z","build_snapshot" : false,"lucene_version" : "8.5.1","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0-beta1"},"tagline" : "You Know, for Search"
}

3.5.1 查看es状态

浏览器访问或者curl命令

1)查看集群状态信息

http://10.3.9.202:9200/_cluster/stats?pretty
  1. 查看集群健康状态
http://10.3.9.202:9200/_cluster/health?pretty
{"cluster_name" : "es-cluster","status" : "green","timed_out" : false,"number_of_nodes" : 3, ##集群节点数"number_of_data_nodes" : 3,  ##数据节点数量"active_primary_shards" : 0, ##主分片数量"active_shards" : 0,  ##可用的分片数量"relocating_shards" : 0,  ##正在重新分配的分片数量,在新加或者减少节点的时候会发生"initializing_shards" : 0,  ##正在初始化的分片数量,新建索引或者刚启动会存在,时间很短"unassigned_shards" : 0,  ##没有分配的分片,一般就是那些名存实不存的副本分片。"delayed_unassigned_shards" : 0,"number_of_pending_tasks" : 0,"number_of_in_flight_fetch" : 0,"task_max_waiting_in_queue_millis" : 0,"active_shards_percent_as_number" : 100.0
}

集群三种状态

green 所有主要分片和复制分片都可用
yellow 所有主要分片可用,但不是所有复制分片都可用。高可用不牢靠。但不会丢失数据
red 不是所有的主要分片都可用。数据有极大风险。数据不能用

3)查看集群状态查看集群将康状态

http://10.3.9.202:9200/_cat/health?v

4)集群状态查询
##索引级别集群状态,可以细致查看到底是哪个索引引起集群的故障的

GET _cluster/health?level=indices

##分片级别集群状态,可以细致查看到底是哪个分片引起的集群故障

GET _cluster/health?level=shards

##阻塞查看集群状态,适用于自动化脚本。当状态变为指定状态或者更好就返回继续执行。

GET _cluster/health?wait_for_status=yellow

5)##监控单个节点状态信息,各部分节点数据的解释请参看网址

https://www.elastic.co/guide/cn/elasticsearch/guide/current/_monitoring_individual_nodes.html
GET _nodes/stats
  1. 集群状态信息,比第一个更详细
GET _cluster/stats

7)索引级别的统计信息,比节点级别的统计信息详细。但是并不很实用

GET my_index/_stats
GET my_index,another_index/_stats
GET _all/_stats

8)统计 my_index 索引。
使用逗号分隔索引名可以请求多个索引统计值。
使用特定的 _all 可以请求全部索引的统计值

9)单机集群颜色为yellow:

curl -XPUT 'http://90.11.35.127:9200/_settings' -H 'content-Type:application/json' -d'
{
"number_of_replicas": 0
}'

4. es集群备份和恢复

4.1 es索引index备份

参考官网文档:
备份集群:https://www.elastic.co/guide/cn/elasticsearch/guide/current/backing-up-your-cluster.html

备份集群使用 snapshot API,集群里当前的状态和数据然后保存到一个共享仓库里。第一个快照会是一个数据的完整拷贝,但是所有后续的快照会保留的是已存快照和新数据之间的差异。

1) 备份前首先创建一个保存数据的仓库。
有多个仓库类型可以选择:

  • 共享文件系统,比如 NAS
  • Amazon S3
  • HDFS (Hadoop 分布式文件系统)
  • Azure Cloud

本次备份方案使用NFS共享存储
2) 挂载nfs存储
所有节点安装nfs-utils

# yum install nfs-utils -y
# mkdir -p /data/esbackup/
# mount -t nfs 10.3.9.70:/nfsdata /data/esbackup/
添加到开机启动命令
# vi /etc/fstab
10.3.9.70:/nfsdata      /data/esbackup          nfs     defaults        0 0

修改权限

# chown -R es /data/esbackup/

3) 创建snapshot仓库

curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/_snapshot/2021-12-28 -d '
{"type": "fs","settings": {"location": "/data/esbackup"}
}'

参数说明:

  1. 给仓库取一个名字,在本例它叫2021-12-28
  2. 指定仓库的类型是共享文件系统。type:fs // 仓库类型为共享文件系统
  3. 提供一个已挂载的设备作为目的地址。
    注意:共享文件系统路径必须确保集群所有节点都可以访问到。

上述命令会在挂载点创建仓库和所需的元数据。还可以配置节点、网络的性能状况和仓库位置:

max_snapshot_bytes_per_sec

当快照数据进入仓库时,这个参数控制这个过程的限流情况。默认是每秒 20mb 。

max_restore_bytes_per_sec

当从仓库恢复数据时,这个参数控制什么时候恢复过程会被限流以保障你的网络不会被占满。默认是每秒 20mb。

假设有一个非常快的网络,而且对额外的流量带宽很高,那可以增加这些默认值:

curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/_snapshot/2021-12-28 -d '
{"type": "fs","settings": {"location": "/data/esbackup","max_snapshot_bytes_per_sec": "50mb","max_restore_bytes_per_sec": "50mb"}
}'

#列出仓库

curl -XGET http://127.0.0.1:9200/_snapshot/*

#删除仓库

curl -XDELETE http://127.0.0.1:9200/_snapshot/2021-12-28

创建索引的快照

1、快照的创建
创建快照,默认为异步执行,添加参数wait_for_completion则为同步等待,如下:

PUT _snapshot/my_backup/snapshot_1?wait_for_completion=true
my_backup:仓库名称
snapshot_1:快照名称

2、索引配置
由于es集群环境中一般除了业务数据索引外还会有kibana或监控的索引,所以一般会指定需要快照的索引,如下:

PUT _snapshot/my_backup/snapshot_2{"indices": "index_1,index_2"
}

3、获取快照相关信息
获取某仓库下的一个或索引的快照信息,如下:

GET _snapshot/my_backup/snapshot_2

GET _snapshot/my_backup/_all

4、具体创建快照命令

curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/_snapshot/2021-12-28/xx_app_event-2021-12-28?wait_for_completion=true -d '
{"indices": "xx_app_event"
}'

备注:请求体中indices指定需要备份的索引(多个用逗号隔开),也可以不指定,这样会备份所有的es索引库数据。
执行后最终返回如下信息表示备份创建成功:

{"accepted": true
}

#列出快照

curl -XGET http://127.0.0.1:9200/_snapshot/2021-12-28/*

#删除快照

curl -XDELETE http://127.0.0.1:9200/_snapshot/2021-12-28/xx_app_event-2021-12-28
curl -XDELETE http://127.0.0.1:9200/_snapshot/2021-12-28/xx_app_startup-2021-12-28
curl -XDELETE http://127.0.0.1:9200/_snapshot/2021-12-28/xx_app_switch_menu-2021-12-28

索引恢复

从镜像中恢复快照数据

  1. 查询2021-12-28仓库下的快照信息
curl -XGET "http://127.0.0.1:9200/_snapshot/2021-12-28/_all?pretty""snapshots" : ["snapshot" : "xx_app_event-2021-12-28","snapshot" : "xx_app_startup-2021-12-28","snapshot" : "xx_app_switch_menu-2021-12-28",
  1. 恢复快照数据
  • 为本机恢复
    本机节点恢复数据直接执行如下请求即可
  • 为其他节点恢复
    如果需要对其他节点机器上的es进行数据恢复,
    如果使用nfs共享文件系统,需要在新集群创建仓库,然后执行索引还原即可
    如果不使用nfs共享文件系统,需要将备份出来的索引复制到新集群的服务器上,然后创建仓库,最后执行索引还原命令
    还原命令如下:
curl -H "Content-Type: application/json" -XPOST 'http://127.0.0.1:9200/_snapshot/2021-12-28/xx_app_event-2021-12-28/_restore' -d '{"indices": "xx_app_event"
}'
-d 可选参数:
"rename_pattern": "index_(.+)", "rename_replacement": "restored_xx_app_event_index_2021-12-28","index_settings": {"index.number_of_replicas": 1},"ignore_index_settings": ["index.refresh_interval"]

可以使用wait_for_completion=true同步获取结果,并且可以使用indices参数指定需要恢复的索引的名称。
使用rename_replacement参数重命名恢复后的索引名称。

4.2索引自动备份脚本

1)索引备份脚本说明
首先在/data/esbackup创建仓库路径、创建snapshot仓库,循环创建三个索引xx_app_event xx_app_startup xx_app_switch_menu的备份

2)具体脚本内容如下

#!/bin/bash
ES_BACKUP_DIR=/data/esbackup
DATE_TODAY=`date -d "0 day" +%Y-%m-%d`
INDEX=(xx_app_event xx_app_startup xx_app_switch_menu)
if [[ ! -d ${ES_BACKUP_DIR}/${DATE_TODAY} ]];thenmkdir -p ${ES_BACKUP_DIR}/${DATE_TODAY}
fi
chown -R es ${ES_BACKUP_DIR}/${DATE_TODAY}
curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/_snapshot/${DATE_TODAY} -d '
{"type": "fs","settings": {"location": "'${ES_BACKUP_DIR}'/'${DATE_TODAY}'","max_snapshot_bytes_per_sec": "50mb","max_restore_bytes_per_sec": "50mb"}
}'if [[ $? == 0 ]];thenecho "${DATE_TODAY} REPOSITORY CREATE SUCCESS!"
fifor i in ${INDEX[@]}
do
curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/_snapshot/${DATE_TODAY}/${i}-${DATE_TODAY}?wait_for_completion=true -d '
{"indices": "'${i}'"
}'
if [[ $? == 0 ]];thenecho "${i}-${DATE_TODAY} INDEX CREATE SUCCESS!"
fi
done#--------------snap data compress--------------
cd ${ES_BACKUP_DIR}
tar czvf ${DATE_TODAY}.tg.gz ${DATE_TODAY}
rm -rf ${DATE_TODAY}
cd -
echo "End time: `date +%Y-%m-%d_%H:%m:%S`"

3)执行脚本

./es_index_backup.sh 
{"acknowledged":true}2021-12-28 REPOSITORY CREATE SUCCESS!
{"snapshot":{"snapshot":"xx_app_event-2021-12-28","uuid":"vseR_GeyR3WG3CEXAYTiWA","version_id":7080199,"version":"7.8.1","indices":["xx_app_event"],"include_global_state":true,"state":"SUCCESS","start_time":"2021-12-28T15:29:58.640Z","start_time_in_millis":1640705398640,"end_time":"2021-12-28T15:29:58.840Z","end_time_in_millis":1640705398840,"duration_in_millis":200,"failures":[],"shards":{"total":3,"failed":0,"successful":3}}}xx_app_event-2021-12-28 INDEX CREATE SUCCESS!
{"snapshot":{"snapshot":"xx_app_startup-2021-12-28","uuid":"ZfMxQHjsSUKzHAswnsAfVg","version_id":7080199,"version":"7.8.1","indices":["xx_app_startup"],"include_global_state":true,"state":"SUCCESS","start_time":"2021-12-28T15:29:59.040Z","start_time_in_millis":1640705399040,"end_time":"2021-12-28T15:29:59.040Z","end_time_in_millis":1640705399040,"duration_in_millis":0,"failures":[],"shards":{"total":3,"failed":0,"successful":3}}}xx_app_startup-2021-12-28 INDEX CREATE SUCCESS!
{"snapshot":{"snapshot":"xx_app_switch_menu-2021-12-28","uuid":"vt9LZ48USm2eO3b-bVdk6w","version_id":7080199,"version":"7.8.1","indices":["xx_app_switch_menu"],"include_global_state":true,"state":"SUCCESS","start_time":"2021-12-28T15:29:59.240Z","start_time_in_millis":1640705399240,"end_time":"2021-12-28T15:29:59.240Z","end_time_in_millis":1640705399240,"duration_in_millis":0,"failures":[],"shards":{"total":3,"failed":0,"successful":3}}}xx_app_switch_menu-2021-12-28 INDEX CREATE SUCCESS!

4)设置定时任务

定时任务设置每天的23点01分执行

编辑定时任务

crontab -e
写入如下内容
01 23 * * *

4.3 配置优化,修改search.max_buckets

通过 API 调用的方式动态进行配置

# curl  -XPUT "http://10.3.9.202:9200/_cluster/settings" -H "Content-Type:application/json" -d   "{\"persistent\":{\"search.max_buckets\":100000}}"

调整es集群三个节点的max_buckets配置

curl  -XPUT "http://90.11.35.182:9200/_cluster/settings" -H "Content-Type:application/json" -d   "{\"persistent\":{\"search.max_buckets\":524288}}"curl  -XPUT "http://90.11.35.71:9200/_cluster/settings" -H "Content-Type:application/json" -d   "{\"persistent\":{\"search.max_buckets\":524288}}"curl  -XPUT "http://90.11.35.56:9200/_cluster/settings" -H "Content-Type:application/json" -d   "{\"persistent\":{\"search.max_buckets\":524288}}"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/120989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++设计模式_14_Facade门面模式

本篇介绍的Facade门面模式属于“接口隔离”模式的一种,以下进行详细介绍。 文章目录 1. “接口隔离”模式1. 1 典型模式 2. 系统间耦合的复杂度3. 动机(Motivation)4. 模式定义5. Facade门面模式的代码实现6. 结构7. 要点总结8. 其他参考 1. “接口隔离”模式 在组…

笔记44:Batch_Normlization 过程详解

笔记本地地址:D:\work_file\DeepLearning_Learning\03_个人笔记\2.图像处理任务\BN a a a a a a a a a a a a a a a a a

抖音上怎么挂小程序?制作小程序挂载抖音视频

公司企业商家现在已经把抖音作为营销的渠道之一,目前抖音支持短视频挂载小程序,可方便做营销。以下给大家分享这一操作流程。 一、申请自主挂载能力 首先需要在抖音开放平台官网注册一个抖音小程序账号,然后申请短视频自主挂载能力。 二、搭…

Liunx两台服务器实现相互SSH免密登录

一、首先准备两台Linux虚拟机当作此次实验的两台服务器 服务器1:server IPV4:192.168.110.136 服务器2:client IPV4: 192.168.110.134 二、准备阶段 [rootserver ~]# systemctl disable firewalld #关…

Umijs创建一个antd+Ts项目环境

上文搭建Umijs环境并创建一个项目 介绍基本操作中 我们构建了一个Umijs环境的环境 但也只创建了一个页面 真正开发来讲 也不可能只创建几个界面这么简单 这里面的创建 还是非常完整的 这里 我创建一个文件夹 主要是做我们的项目目录 然后 我们在终端输入命令 然后 打开目录终…

C#版字节跳动SDK - SKIT.FlurlHttpClient.ByteDance

前言 在我们日常开发工作中对接第三方开放平台,找一款封装完善且全面的SDK能够大大的简化我们的开发难度和提高工作效率。今天给大家推荐一款C#开源、功能完善的字节跳动SDK:SKIT.FlurlHttpClient.ByteDance。 项目官方介绍 可能是全网唯一的 C# 版字节…

pinia中使用reactive声明变量,子页面使用时,值未改变,即不是响应式的(解决方法)

reactive赋值无效!reactive 不要直接data赋值!!!会丢失响应式的,只能通过obj.属性 属性值赋值 方法一. pinia中直接使用ref定义变量即可 export const useUserStoredefineStore(user,()>{let loginUserreactive({…

C语言字符转数字函数

文章目录 atofatoiatolatollstrtodstrtofstrtolstrtoldstrtollstrtoulstrtoull atof double atof (const char* str);Convert string to double Parses the C string str, interpreting its content as a floating point number and returns its value as a double. The func…

【C++进阶】set和map的基本使用(灰常详细)

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

Python 中的内存泄漏问题

内存泄漏是一个常见的编程问题,很难调试和修复。 本文将通过小型和大型示例程序探讨 Python 内存泄漏。 我们将了解如何找到内存泄漏的根源以及如何修复它。 Python 中的内存泄漏 在本文中我们不会讨论 Python 内存管理系统的内部结构。 但是,如果你对Python内存系统是如何…

跳跃游戏 II

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到达 nums[n - 1] 的最…

基于springboot实现网上图书商城管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现网上图书商城管理系统演示 摘要 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括网上图书商城的网络应用&#xff0c;在外国网上图书商城已经是很普遍的方式&#xff0c;不过国内的管理网站可能还处于起步…

基于nodejs+vue全国公考岗位及报考人数分析

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

在C++中,如果枚举类型的值超出了其定义的范围

枚举超边界不报错 #include <iostream>enum Color {Red,Green,Blue };int main() {Color color static_cast<Color>(1000); // 强制类型转换为枚举类型if (color Red) {std::cout << "The color is Red." << std::endl;} else if (color…

【数据结构】数组和字符串(七):特殊矩阵的压缩存储:三元组表的转置、加法、乘法操作

文章目录 4.2.1 矩阵的数组表示4.2.2 特殊矩阵的压缩存储a. 对角矩阵的压缩存储b~c. 三角、对称矩阵的压缩存储d. 稀疏矩阵的压缩存储——三元组表4.2.3三元组表的转置、加法、乘法、操作转置加法乘法算法测试实验结果代码整合 4.2.1 矩阵的数组表示 【数据结构】数组和字符串…

竞赛 深度学习实现行人重识别 - python opencv yolo Reid

文章目录 0 前言1 课题背景2 效果展示3 行人检测4 行人重识别5 其他工具6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习的行人重识别算法研究与实现 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c…

论文阅读——BART

Arxiv: https://arxiv.org/abs/1910.13461 一个去噪自编码器的预训练序列到序列的模型。是一个结合了双向和自回归transformers的模型。 预训练分为两个阶段&#xff1a;任意噪声函数破坏文本和序列模型重建原始文本 一、模型 input&#xff1a;被破坏的文本-->bidirecti…

基于Canal同步MySQL数据到Elasticsearch

基于Canal同步MySQL数据到Elasticsearch 基于 canal 同步 mysql 的数据到 elasticsearch 中。 1、canal-server 相关软件的安装请参考&#xff1a;《Canal实现数据同步》 1.1 pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmln…

1. 两数之和、Leetcode的Python实现

博客主页&#xff1a;&#x1f3c6;看看是李XX还是李歘歘 &#x1f3c6; &#x1f33a;每天分享一些包括但不限于计算机基础、算法等相关的知识点&#x1f33a; &#x1f497;点关注不迷路&#xff0c;总有一些&#x1f4d6;知识点&#x1f4d6;是你想要的&#x1f497; ⛽️今…

虚拟机构建部署单体项目及前后端分离项目

目录 一.部署单体项目 1.远程数据库 1.1远程连接数据库 1.2 新建数据库运行sql文件 2.部署项目到服务器中 3.启动服务器运行 二.部署前后端分离项目 1.远程数据库和部署到服务器 2.利用node环境启动前端项目 3.解决主机无法解析服务器localhost问题 方法一 ​编辑 方法二 一.部…