当前位置: 首页 > news >正文

【PG】PostgreSQL高可用方案repmgr部署(非常详细)

目录

简介

1 概述

1.1 术语

1.2 组件

1.2.1 repmgr

1.2.2 repmgrd

1.3 Repmgr用户与元数据

2 安装部署

2.0 部署环境 

2.1 安装要求

2.1.1 操作系统

2.1.2 PostgreSQL 版本

2.1.3 操作系统用户

2.1.4 安装位置

2.1.5 版本要求

2.2 安装

2.2.1 软件包安装

2.2.2 源码编译安装

3 快速开始

3.2 PostgreSQL部署主库

3.3 创建用户与数据库

3.4 配置认证文件 pg_hba.conf 

3.5 设置免密登录 

3.6 repmgr配置文件

3.7 注册主节点

3.8 克隆 standby Server

3.9 验证主从同步正常

3.10 注册从节点

参考 

repmgr官网

5.3.3版本文档

最新文档(5.4版本)

github repmgr


简介

repmgr是一套开源工具,用于管理 PostgreSQL 服务器集群内的复制和故障转移。它通过设置备用服务器、监控复制以及执行故障转移或切换操作等管理任务的实用程序增强了 PostgreSQL 的内置复制功能。

1 概述

1.1 术语

整个repmgr文档 中使用了以下术语

  • replication cluster:在repmgr文档中,“replication cluster”是指通过流式复制连接的 PostgreSQL 服务器网络。
  • node :节点是复制集群中的单个 PostgreSQL 服务器。
  • upstream node:备用服务器连接到的节点,以便接收流式复制。这可以是主服务器,或者在级联复制的情况下是另一台备用服务器。
  • failover:这是在主服务器发生故障并且合适的备用服务器升​​级为新的主服务器时发生的操作。repmgrd守护程序支持自动故障转移以最大限度地减少停机时间 。
  • switchover:在某些情况下,例如硬件或操作系统维护,有必要使主服务器离线;在这种情况下,需要进行受控切换,从而提升合适的备用数据库,并以受控方式从复制集群中删除现有的主数据库。repmgr命令行客户端提供此功能 。
  • fencing:在故障转移情况下,在升级新的备用数据库后,之前的主数据库不会意外地重新上线,否则会导致脑裂情况。为了防止这种情况发生,发生故障的主数据库应与应用程序隔离,即“隔离”。
  • witness server:epmgr提供了设置所谓“witness server”的功能,以帮助在具有多个备用服务器的故障转移情况下确定新的主服务器。witness server本身不是复制集群的一部分,尽管它包含 repmgr 元数据架构的副本。

1.2 组件

repmgr是一套开源工具,用于管理 PostgreSQL 服务器集群内的复制和故障转移。它支持并增强 PostgreSQL 的内置流复制,该复制提供单个读/写主服务器和一个或多个包含主服务器数据库的近实时副本的只读备用服务器。它提供了两个主要工具:

1.2.1 repmgr

用于执行管理任务的命令行工具,例如:

  • 设置备用服务器
  • 将备用服务器升​​级为主服务器
  • 主备服务器切换
  • 显示复制集群中服务器的状态

1.2.2 repmgrd

主动监视复制集群中的服务器并执行以下任务的守护程序:

  • 监控和记录复制性能
  • 通过检测主服务器的故障并升级最合适的备用服务器来执行故障转移
  • 向用户定义的脚本提供有关集群中事件的通知,该脚本可以执行通过电子邮件发送警报等任务

1.3 Repmgr用户与元数据

为了有效地管理复制集群,repmgr需要将集群中服务器的信息存储在专用的数据库schema中。此架构由repmgr扩展自动创建,该扩展在初始化repmgr管理的集群 ( repmgr primary register)的第一步中安装,并包含以下对象:

table

  • repmgr.events:记录关注的事件
  • repmgr.nodes:复制集群中每个服务器的连接和状态信息
  • repmgr.monitoring_history: repmgrd写入的历史备用监控信息

view

  • repmgr.show_nodes:基于 table repmgr.nodes,另外显示服务器上游节点的名称
  • repmgr.replication_status:当启用repmgrd的监控时,显示每个备用数据库的当前监控状态。

repmgr元数据模式可以存储在现有数据库或其自己的专用数据库中。请注意,repmgr 元数据模式不能保存在不属于repmgr管理的复制集群的数据库服务器上。

数据库用户必须可供repmgr访问该数据库并修改的权限。该用户不需要是超级用户,但是某些操作(例如repmgr扩展的初始安装)将需要超级用户连接(可以在需要时使用命令行选项指定 --superuser)。

2 安装部署

2.0 部署环境 

PostgreSQL:13.12

repmgr 5.3.3

CentOS Linux release 7.2.1511 (Core)

repmgr可以从操作系统的打包系统提供的二进制包或源代码安装。一般来说,我们建议使用二进制包,除非您的操作系统不可用。

2.1 安装要求

2.1.1 操作系统

repmgr 是在 Linux 和 OS X 上开发和测试的,但应该可以在 PostgreSQL 本身支持的任何类 UNIX 系统上运行。不支持 Microsoft Windows。

2.1.2 PostgreSQL 版本

复制集群中的所有服务器必须运行相同的 PostgreSQL 主要版本,我们建议它们也运行相同的次要版本。

2.1.3 操作系统用户

不需要repmgr 专用系统用户;由于许多repmgr和 repmgrd操作需要直接访问 PostgreSQL 数据目录,因此这些命令应由postgres用户执行。

2.1.4 安装位置

repmgr必须安装在复制集群中的每台服务器上。如果从软件包安装 repmgr,软件包版本必须与 PostgreSQL 版本匹配。如果从源代码安装,repmgr必须针对相同的主要版本进行编译。

2.1.5 版本要求

下表概述了repmgr版本支持的 PostgreSQL 版本。

版本兼容矩阵
repmgr 版本

Supported?

是否维护

Latest release

最新版本

Supported PostgreSQL versions

支持的PostgreSQL版本

Notes 

注意

repmgr 5.4(dev)5.4.1 (2023-07-04)9.4, 9.5, 9.6, 10, 11, 12, 13, 15
repmgr 5.3YES5.4.1 (2023-07-04)9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15PostgreSQL 15 supported from repmgr 5.3.3
repmgr 5.2NO5.2.1 (2020-12-07)9.4, 9.5, 9.6, 10, 11, 12, 13
repmgr 5.1NO5.1.0 (2020-04-13)9.3, 9.4, 9.5, 9.6, 10, 11, 12
repmgr 5.0NO5.0 (2019-10-15)9.3, 9.4, 9.5, 9.6, 10, 11, 12
repmgr 4.xNO4.4 (2019-06-27)9.3, 9.4, 9.5, 9.6, 10, 11
repmgr 3.xNO3.3.2 (2017-05-30)9.3, 9.4, 9.5, 9.6
repmgr 2.xNO2.0.3 (2015-04-16)9.0, 9.1, 9.2, 9.3, 9.4

2.2 安装

2.2.1 软件包安装

这个命令的含义是下载一个文件然后执行 这个需要外网 ,生产数据库服务器一般没有外网 ,

curl https://dl.enterprisedb.com/default/release/get/13/rpm | sudo bash
yum list repmgr13yum install  repmgr13 -y 

2.2.2 源码编译安装

如果服务器没有外网 只能使用源码安装 

下载源码的地址 下面两个地址都可以 一个是官网上的下载地址,一个是gtihub的下载地址

wget https://github.com/EnterpriseDB/repmgr/archive/refs/tags/v5.3.3.tar.gz

// 我使用的这个

wget https://www.repmgr.org/download/repmgr-5.3.3.tar.gz

安装依赖

yum check-update
yum groupinstall "Development Tools" -y
yum install -y yum-utils openjade docbook-dtds docbook-style-dsssl docbook-style-xsl
yum-builddep postgresql96// 执行不了 没有postgresql96yum源用以下命令替代 
yum  install -y  cmake make gcc zlib gcc-c++ perl readline readline-devel zlib // 自己安装pg13安装的依赖yum -y install yum-builddep flex libselinux-devel libxml2-devel libxslt-devel openssl-devel pam-devel readline-devel // 博客上的

下载源码包

wget https://www.repmgr.org/download/repmgr-5.3.3.tar.gz

解压安装repmgr(主备库都安装)

tar -zxvf repmgr-5.3.3.tar.gz

使用postgres用户安装

chown -R postgres:postgres /home/packet/repmgr-5.3.3

su - postgres

cd  /home/packet/repmgr-5.3.3

 ./configure

make install

输出一下内容说明二进制命令安装到了目录'/usr/local/pgsql/bin/下 

/bin/install -c -m 755 repmgr repmgrd '/usr/local/pgsql/bin/'

进入到目录中查看/usr/local/pgsql/bin/ 多了以下两个命令 

 可以通过repmgr  --help 验证安装是否成功

3 快速开始

3.2 PostgreSQL部署主库

参考我的博客只部署主库即可 【PG】PostgreSQL13主从流复制部署(详细可用)-CSDN博客

3.3 创建用户与数据库

// 创建用户 需要超级用户权限
create user repmgr with superuser password 'repmgr'  connection limit 10;// 创建元数据库create database repmgr owner  repmgr;// repmgr会创建repmgr schema 来报错repmgr的元数据表,函数,视图等,建议设置用户repmgr的搜索路径如下
ALTER USER repmgr SET search_path TO repmgr, "$user", public;

3.4 配置认证文件 pg_hba.conf 

# 允许用户 repmgr 通过local,127.0.0.1,10.79.21.网段连接到replication 
local   replication   repmgr                              trust
host    replication   repmgr      127.0.0.1/32            trust
host    replication   repmgr      10.79.21.0/24           trust# 允许用户 repmgr  通过local,127.0.0.1,10.79.21. 连接到repmgr schema
local   repmgr        repmgr                              trust
host    repmgr        repmgr      127.0.0.1/32            trust
host    repmgr        repmgr      10.79.21.0/24           trust

3.5 设置免密登录 

如果之前postgres 没有密码 ,需要先设置一个密码 ,否则下面ssh拷贝公钥时会提示输入密码

使用postgres用户 ,在两台服务器上在node1上 
ssh-keygen -t rsa
ssh-copy-id postgres@10.79.21.29
ssh postgres@10.79.21.29 date在node2上 
ssh-keygen -t rsa
ssh-copy-id postgres@10.79.21.30
ssh postgres@10.79.21.30 date// 数据库免密登录 IP:port:schema?:user:passwd
vim .pgpass
10.79.21.30:5432:repmgr:repmgr:repmgr
10.79.21.29:5432:repmgr:repmgr:repmgr修改权限,只允许postgres用户读写
chmod  600 .pgpass

3.6 repmgr配置文件

repmgr.conf不应存储在 PostgreSQL 数据目录中,因为在设置或重新初始化 PostgreSQL 服务器时它可能会被覆盖

vim repmgr.conf

node_id=1
node_name='node1'
conninfo='host=10.79.21.30 port=5432 user=repmgr dbname=repmgr connect_timeout=2'
data_directory='/home/storage/pgsql/data'

3.7 注册主节点

要使repmgr支持复制集群,主节点必须向repmgr注册。这将安装repmgr 扩展和元数据对象,并为主服务器添加元数据记录

repmgr -f /etc/repmgr.conf primary register

$repmgr -f /etc/repmgr.conf primary register
INFO: connecting to primary database...
NOTICE: attempting to install extension "repmgr"
NOTICE: "repmgr" extension successfully installed
NOTICE: primary node record (ID: 1) registered

验证集群的状态,如下所示:

repmgr -f /etc/repmgr.conf cluster show

$repmgr -f /etc/repmgr.conf cluster showID | Name  | Role    | Status    | Upstream | Location | Priority | Timeline | Connection string
----+-------+---------+-----------+----------+----------+----------+----------+------------------------------------------------------------------------1  | node1 | primary | * running |          | default  | 100      | 1        | host=10.79.21.30 port=5432 user=repmgr dbname=repmgr connect_timeout=2

元数据表中的记录:

repmgr=# select *  from  nodes;
-[ RECORD 1 ]----+-----------------------------------------------------------------------
node_id          | 1
upstream_node_id |
active           | t
node_name        | node1
type             | primary
location         | default
priority         | 100
conninfo         | host=10.79.21.30 port=5432 user=repmgr dbname=repmgr connect_timeout=2
repluser         | repmgr
slot_name        |
config_file      | /etc/repmgr.conf

3.8 克隆 standby Server

在从节点上编辑配置文件
vim repmgr.conf
node_id=2
node_name='node2'
conninfo='host=10.79.21.29 port=5432 user=repmgr dbname=repmgr connect_timeout=2'
data_directory='/home/storage/pgsql/data'

 使用参数--dry-run 检查是否可以克隆从库

repmgr -h 10.79.21.30 -U repmgr -d repmgr -f /etc/repmgr.conf standby clone --dry-run
  • 检查目录
  • 检查参数 max_wal_senders 是否大于2 
  • 检查参数 wal_log_hints
  • 检查通过会执行备份命令   pg_basebackup -l "repmgr base backup"  -D /home/storage/pgsql/data -h 10.79.21.30 -p 5432 -U repmgr -X stream
$repmgr -h 10.79.21.30 -U repmgr -d repmgr -f /etc/repmgr.conf standby clone --dry-run
NOTICE: destination directory "/home/storage/pgsql/data" provided
INFO: connecting to source node
DETAIL: connection string is: host=10.79.21.30 user=repmgr dbname=repmgr
DETAIL: current installation size is 116 MB
INFO: "repmgr" extension is installed in database "repmgr"
INFO: replication slot usage not requested;  no replication slot will be set up for this standby
INFO: parameter "max_wal_senders" set to 10
NOTICE: checking for available walsenders on the source node (2 required)
INFO: sufficient walsenders available on the source node
DETAIL: 2 required, 10 available
NOTICE: checking replication connections can be made to the source server (2 required)
INFO: required number of replication connections could be made to the source server
DETAIL: 2 replication connections required
WARNING: data checksums are not enabled and "wal_log_hints" is "off"
DETAIL: pg_rewind requires "wal_log_hints" to be enabled
NOTICE: standby will attach to upstream node 1
HINT: consider using the -c/--fast-checkpoint option
INFO: would execute:pg_basebackup -l "repmgr base backup"  -D /home/storage/pgsql/data -h 10.79.21.30 -p 5432 -U repmgr -X stream
INFO: all prerequisites for "standby clone" are met

可以看到个warning  ,将参数 wal_log_hints 设置为 on ,再次检查 

如果检查没有问题 ,就可以进行克隆

repmgr -h 10.79.21.30 -U repmgr -d repmgr -f /etc/repmgr.conf standby clone
$repmgr -h 10.79.21.30 -U repmgr -d repmgr -f /etc/repmgr.conf standby clone
NOTICE: destination directory "/home/storage/pgsql/data" provided
INFO: connecting to source node
DETAIL: connection string is: host=10.79.21.30 user=repmgr dbname=repmgr
DETAIL: current installation size is 116 MB
INFO: replication slot usage not requested;  no replication slot will be set up for this standby
NOTICE: checking for available walsenders on the source node (2 required)
NOTICE: checking replication connections can be made to the source server (2 required)
INFO: checking and correcting permissions on existing directory "/home/storage/pgsql/data"
NOTICE: starting backup (using pg_basebackup)...
HINT: this may take some time; consider using the -c/--fast-checkpoint option
INFO: executing:pg_basebackup -l "repmgr base backup"  -D /home/storage/pgsql/data -h 10.79.21.30 -p 5432 -U repmgr -X stream
NOTICE: standby clone (using pg_basebackup) complete
NOTICE: you can now start your PostgreSQL server
HINT: for example: pg_ctl -D /home/storage/pgsql/data start
HINT: after starting the server, you need to register this standby with "repmgr standby register"

3.9 验证主从同步正常

在主库上查看 

 SELECT * FROM pg_stat_replication;

可以看到 

standy 上查看 

 SELECT * FROM pg_stat_wal_receiver;

3.10 注册从节点

使用以下命令注册从节点

repmgr -f /etc/repmgr.conf standby register
$repmgr -f /etc/repmgr.conf standby register
INFO: connecting to local node "node2" (ID: 2)
INFO: connecting to primary database
WARNING: --upstream-node-id not supplied, assuming upstream node is primary (node ID: 1)
INFO: standby registration complete
NOTICE: standby node "node2" (ID: 2) successfully registered
验证注册成功repmgr -f /etc/repmgr.conf cluster show
$repmgr -f /etc/repmgr.conf cluster showID | Name  | Role    | Status    | Upstream | Location | Priority | Timeline | Connection string
----+-------+---------+-----------+----------+----------+----------+----------+------------------------------------------------------------------------1  | node1 | primary | * running |          | default  | 100      | 1        | host=10.79.21.30 port=5432 user=repmgr dbname=repmgr connect_timeout=22  | node2 | standby |   running | node1    | default  | 100      | 1        | host=10.79.21.29 port=5432 user=repmgr dbname=repmgr connect_timeout=2

参考 

repmgr官网

repmgr - Replication Manager for PostgreSQL clusters

5.3.3版本文档

https://www.repmgr.org/docs/5.3/index.html

最新文档(5.4版本)

repmrg文档

github repmgr

GitHub - EnterpriseDB/repmgr: A lightweight replication manager for PostgreSQL (Postgres)

参考

进阶数据库系列(十八):PostgreSQL 基于 repmgr 高可用架构实践_mingongge的博客-CSDN博客

PostgreSQL+repmgr高可用部署 - 墨天轮

相关文章:

【PG】PostgreSQL高可用方案repmgr部署(非常详细)

目录 简介 1 概述 1.1 术语 1.2 组件 1.2.1 repmgr 1.2.2 repmgrd 1.3 Repmgr用户与元数据 2 安装部署 2.0 部署环境 2.1 安装要求 2.1.1 操作系统 2.1.2 PostgreSQL 版本 2.1.3 操作系统用户 2.1.4 安装位置 2.1.5 版本要求 2.2 安装 2.2.1 软件包安装 2.2…...

Linux Makefile配置问题

编写一个简单的工程文件,制作Makefile需要包含lpthread,当Makefile写为如下配置时 #CROSSCOMPILE : arm-linux- CROSSCOMPILE :CFLAGS : -Wall -O2 -c CFLAGS -I$(PWD)LDFLAGS : -lpthread LDFLAGS -lm -ldlCC : $(CROSSCOMPILE)gcc #LD :…...

k8s篇之underlay网络和overlay区别

k8s中underlay网络和overlay区别 一、网络 1 Overlay网络: Overlay叫叠加网络也叫覆盖网络,指的是在物理网络的基础之上迭代实现新的虚拟网络,即可使网络中的容器可以互相通信。 优点是对物理网络的兼容性比较好,可以实现pod的…...

掉瓶子小游戏

欢迎来到程序小院 掉瓶子 玩法:旋转的瓶子,根据瓶子方向,点击鼠标左键瓶子掉落,从桌面中间掉下即得1分,卡在桌边瓶子碎了游戏结束,快去掉瓶子吧^^。开始游戏https://www.ormcc.com/play/gameStart/203 htm…...

Elasticsearch7 入门 进阶

1、全文检索 1.1、数据分类 按数据分类的话,主要可以分为以下三类: 结构化数据:固定格式、有限长度,比如mysql存的数据非结构化数据:不定长、无固定格式,比如邮件、Word文档、日志等半结构化数据&#xf…...

你是怎么封装微信小程序的数据请求的?

当封装微信小程序的数据请求时,可以采用一种模块化的方法,将请求逻辑与界面逻辑分离,以提高代码的可维护性和可扩展性。以下是一个基于前言、高质量代码、理解、优缺点和结尾的范例: 前言 在微信小程序中,数据请求是…...

C++ vector中capacity()和size() 的区别

size是指容器当前拥有元素的个数&#xff0c; capacity是指容器在必须分配新的存储空间之前可以存放的元素总数。 如vector<int> ivect(10),ivect.capacity()10&#xff0c;ivect.size()0, 当向ivect中插入元素时&#xff0c;只要没有超过10个&#xff0c;那么capacity就…...

【Redis】redis-server和redis-cli

上一篇《redis 的下载和安装》 https://blog.csdn.net/m0_67930426/article/details/134341071?spm1001.2014.3001.5501 安装完之后开始使用 打开客户端之前需要先打开服务端 redis-server 直接使用该命令打开就行 然后在打开客户端 redis-cli 使用ping命令查看是否连接服…...

【系统架构设计】架构核心知识: 2.4 系统建模过程和系统设计

目录 一 系统建模过程 1 结构化建模 2 信息工程建模方法 3 面向对象建模方法...

企业电子招标采购系统源码之从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看所…...

ubantu libssl.so.1.1: cannot open shared object file

libssl.so.1.1: cannot open shared object file 使用 Ubuntu 22.04 时&#xff0c;有时候会遇到如下错误 error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory 这是因为Ubuntu 22.04 默认使用的是 openssl3.0 …...

python matlplotlib/seaborn 绘制曲线的平均值标准差阴影图

1. seaborn 旧版本(0.8.1)中使用tsplot&#xff0c;新版本中使用lineplot 直线代表均值&#xff0c;阴影代表meanstd&#xff08;带有置信区间&#xff0c;参数ci&#xff09; import seaborn as sns import matplotlib.pyplot as plt import numpy as np import pandas as p…...

【Linux基础IO篇】深入理解文件系统、动静态库

【Linux基础IO篇】深入理解文件系统、动静态库 目录 【Linux基础IO篇】深入理解文件系统、动静态库再次理解文件系统操作系统内存管理模块&#xff08;基础&#xff09;操作系统如何管理内存 Linux中task_struct源码结构 动态库和静态库动静态库介绍&#xff1a;生成静态库库搜…...

flink 写入 starrocks 报错 too many filtered rows attachment

可能原因1 把你starrocks中DDL里的varchar(...) 先修改为STRING. 一般是因为字段超出定义的长度. 可能原因2 csv里有脏数据 导致3列被切分为4列 ....PRIMARY KEY (id) NOT ENFORCED ) WITH (connector starrocks,jdbc-url ...,username ...,password ...,database-nam…...

Windows 安装 Maven

目录 安装 JDK下载 Maven配置阿里云镜像配置环境变量 安装 JDK Windows 安装 JDK 下载 Maven 下载地址&#xff1a;https://maven.apache.org/download.cgi 下载 apache-maven-3.9.5-bin.zip 到本地解压到 D:\Software\apache-maven-3.9.5 配置阿里云镜像 配置阿里云远程仓…...

一文读懂关于IPv6的那些事

作为下一代互联网的战略发展方向&#xff0c;我国正加速IPv6的升级改造&#xff0c;目前从网络基础设施如运营商骨干网、城域网到互联网服务商如各类云服务以及包括手机、电脑、路由器等终端设备厂商都开始支持IPv6网络。那么到底什么是IPv6&#xff1f;IPv6有哪些特点呢&#…...

数据结构—队列的实现

前言&#xff1a;上次我们已经学习了数据结构中一个重要的线性表—栈&#xff0c;那么我们这一次就来学习另外一个重要的线性表—队列。 目录&#xff1a; 一、 队列的概念 二、 队列的实现&#xff1a; 1.队列的创建 三、 队列的操作 1.初始化队列 2.队尾入队列 3.队头出队列…...

Linux_shell脚本中的stty

shell脚本中的stty stty是用于配置终端&#xff08;tty&#xff09;设置的命令。它允许用户查看和修改与终端相关的各种参数。下面是stty命令的一些常见用法和参数&#xff1a; 基本语法&#xff1a; stty [OPTION] [SETTING]常见选项和参数&#xff1a; 基本设置&#xff1…...

HTML转PDF模板

一、准备pom依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>html2pdf</artifactId><version>1.0.2</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId&g…...

Clickhouse学习笔记(14)—— Clickhouse监控

ClickHouse 运行时会将一些个自身的运行状态记录到众多系统表中&#xff0c;如下所示&#xff1a; 为了直观方便地监控ck的运行情况&#xff0c;使用Prometheus Grafana 的组合来进行监控 Prometheus 负责收集各类系统的运行指标&#xff1b;Grafana 负责可视化 Prometheus&a…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...