2024年mongodb自建三节点副本集详细教程

环境说明

系统centos7.9

自建服务器或云服务器,硬件要求不低于2核2G内存,20G硬盘,文件系统默认是ext4即可。

生产环境最好单独一个磁盘存放数据库,方便数据备份和还原,避免干扰到其他磁盘的运作。

mongodb 4.4.27 属于该4.4版本最后一个小版本

创建节点目录

进入系统目录

cd /

创建目录,使用mkdir -p命令来创建多层级的目录结构

mkdir -p /mongodbData/node01/{conf,data,logs}

mkdir -p /mongodbData/node02/{conf,data,logs}

mkdir -p /mongodbData/node03/{conf,data,logs}

目录说明

mongodbData 存放整个数据库相关的目录

node01 主节点(PRIMARY)

node02 从节点(SECONDARY)

node03 仲裁节点(ARBITER)

conf 存放配置

data 保存节点数据的目录

logs 存放节点日志

安装数据库

先进入 mongodbData 文件夹

cd /mongodbData

执行下载

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.27.tgz

解压

tar -zxvf mongodb-linux-x86_64-rhel70-4.4.27.tgz

安装

mv mongodb-linux-x86_64-rhel70-4.4.27 /usr/local/share/mongodb

环境配置

echo 'export PATH=/usr/local/share/mongodb/bin:$PATH' >> /etc/profile

使配置生效

source /etc/profile

查看安装情况

mongo --version

执行后,如果打印以下信息泽成功:

MongoDB shell version v4.4.27
Build Info: {
    "version": "4.4.27",
    "gitVersion": "2da9e4437d8c792c2b3c3aea62e284f801172a6b",
    "openSSLVersion": "OpenSSL 1.0.1e-fips 11 Feb 2013",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "rhel70",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

3个节点配置文件

创建三个节点的配置文件,保存的地址如下

/mongodbData/node01/conf/mongod.conf

/mongodbData/node02/conf/mongod.conf

/mongodbData/node03/conf/mongod.conf

节点的端口

由下面不同节点的配置文件确定 net.port

node01 节点 27017端口(默认)

node02 节点 27018端口(默认)

node03 节点 27019端口(默认)

第一次启动前的配置如下:

1.可以通过进入指定节点的conf目录,使用centos7.9 系统自带的vi工具复制下面的配置文件逐个编辑,如果文件不存在,会自动创建一个新的空文件,并将其打开以供编辑。你可以在该文件中添加文本内容,然后保存和退出编辑器

vi /mongodbData/node01/conf/mongod.conf

vi /mongodbData/node02/conf/mongod.conf

vi /mongodbData/node03/conf/mongod.conf

2.或者在电脑本地创建好mongod.conf,然后上传到centos7.9的指定目录中,

节点1的配置文件(无用户登录认证)

systemLog:
    destination: file
    path: "/mongodbData/node01/logs/mongod.log"
    logAppend: true
    verbosity: 1
    logRotate: rename
storage:
    dbPath: "/mongodbData/node01/data"
    journal:
        enabled: true
    wiredTiger:
        engineConfig:
            cacheSizeGB: 4
processManagement:
    fork: true
    pidFilePath: "/mongodbData/node01/mongod.pid"
net:
    bindIpAll: true
    port: 27017
#security:
#    keyFile: "/mongodbData/node01/conf/access.key"
#    authorization: enabled
#setParameter:
#    authenticationMechanisms: SCRAM-SHA-1
replication:
    oplogSizeMB: 50
    replSetName: mongodbData

节点2的配置文件(无用户登录认证)

systemLog:
    destination: file
    path: "/mongodbData/node02/logs/mongod.log"
    logAppend: true
    verbosity: 1
    logRotate: rename
storage:
    dbPath: "/mongodbData/node02/data"
    journal:
        enabled: true
    wiredTiger:
        engineConfig:
            cacheSizeGB: 4
processManagement:
    fork: true
    pidFilePath: "/mongodbData/node02/mongod.pid"
net:
    bindIpAll: true
    port: 27018
#security:
#    keyFile: "/mongodbData/node02/conf/access.key"
#    authorization: enabled
#setParameter:
#    authenticationMechanisms: SCRAM-SHA-1
replication:
    oplogSizeMB: 50
    replSetName: mongodbData

节点3的配置文件(无用户登录认证)

systemLog:
    destination: file
    path: "/mongodbData/node03/logs/mongod.log"
    logAppend: true
    logRotate: rename
storage:
    dbPath: "/mongodbData/node03/data"
    journal:
        enabled: true
processManagement:
    fork: true
    pidFilePath: "/mongodbData/node03/mongod.pid"
net:
    bindIpAll: true
    port: 27019
#security:
#    keyFile: "/mongodbData/node03/conf/access.key"
#    authorization: enabled
#setParameter:
#    authenticationMechanisms: SCRAM-SHA-1
replication:
    oplogSizeMB: 50
    replSetName: mongodbData

注意1

下面的配置是注释掉的,启用无用户登录认证

#security:
#    keyFile: "/mongodbData/node03/conf/access.key"
#    authorization: enabled
#setParameter:
#    authenticationMechanisms: SCRAM-SHA-1

注意2

创建mongod.conf文件时,一定要注意文件内容是否按照上面每一行的空格严格编写,如果不是,则容易出现错误。

执行启动命令,启动三个数据库(无用户登录认证)

mongod -f /mongodbData/node01/conf/mongod.conf

mongod -f /mongodbData/node02/conf/mongod.conf

mongod -f /mongodbData/node03/conf/mongod.conf

第一次启动后报错的解释

启动后,如果发生报错,需要检查

如果你是第一次启动该节点

1.三个节点的data文件夹和logs的文件夹创建是否成功

2.可能是某个节点的配置文件的空格缩进问题,一般上级和下级的缩进是4个空格,要严格执行

配置集群

进入shell

mongo 127.0.0.1:27017

注意1:进入其中一个节点(主节点)的mongo控制台, 配置集群

注意2:务必保证节点防火墙关闭或开放mongo服务端口)

注意3:默认是27017,但是如果你的节点配置中不是27017 而是3717端口,上面的就必须改成3717

生成集群配置变量并加入3个节点配置,注意端口不是默认的就要改下面的端口了

下面的 id=mongodbData 就是我们的集群名称,和上面3个节点的配置必须是一致的。

cfg = {_id: 'mongodbData', members: [{_id: 1, host: '127.0.0.1:27017'},{_id: 2, host: '127.0.0.1:27018'},{_id: 3, host: '127.0.0.1:27019', arbiterOnly: true}]}

根据变量配置集群

rs.initiate(cfg)

查看配置状态

rs.status()

退出shell

同时按下Ctrl+C

添加用户

集群配置完成后, 仍然在主节点的mongo控制台中添加三个用户:数据库管理员, 集群管理员和访问特定数据库的用户.

进入shell

mongo 127.0.0.1:27017

切换当前会话到 admin 数据库

use admin

创建数据库管理员

db.createUser({user:"root",pwd:"root_jY_2021",roles:[{role:"readWriteAnyDatabase",db:"admin"},{role:"dbAdminAnyDatabase",db:"admin"},{role:"userAdminAnyDatabase",db:"admin"}]})

user: 用户名,pwd: 用户的密码,

roles: 一个包含角色对象的数组,用于分配用户的权限。在这个数组中,用户被分配了三个不同的角色:

{role: "readWriteAnyDatabase", db: "admin"}:

数据库为 "admin"。这个角色允许用户在任何数据库上执行读写操作,相当于具有读写权限。

{role: "dbAdminAnyDatabase", db: "admin"}:

数据库为 "admin"。这个角色允许用户在任何数据库上执行数据库管理操作,如创建、删除数据库等。

{role: "userAdminAnyDatabase", db: "admin"}:

数据库为 "admin"。这个角色允许用户在任何数据库上执行用户管理操作,如创建、删除用户、分配角色等

创建集群管理员

db.createUser({user:"suroot",pwd:"suroot_jY_2021",roles:[{role:"clusterAdmin",db:"admin"},{role:"clusterManager",db:"admin"},{role:"clusterMonitor",db:"admin"}]})

user: 用户名,pwd: 用户的密码,

roles: 一个包含角色对象的数组,用于分配用户的权限。在这个数组中,用户被分配了三个不同的角色:

{role: "clusterAdmin", db: "admin"}: 这个角色是 "clusterAdmin",允许用户管理 MongoDB 集群,包括添加和删除节点等。该角色在 "admin" 数据库上。

{role: "clusterManager", db: "admin"}: 这个角色是 "clusterManager",允许用户管理 MongoDB 集群,包括监视集群状态等。该角色在 "admin" 数据库上。

{role: "clusterMonitor", db: "admin"}: 这个角色是 "clusterMonitor",允许用户监视 MongoDB 集群的性能和状态。该角色在 "admin" 数据库上。

切换到一个测试库(不用事先创建)

use test

创建test角色

db.createUser({user:"test",pwd:"test",roles:[{role:"readWrite",db:"test"},{role:"dbAdmin",db:"test"},{role:"userAdmin",db:"test"}]})

user: 用户名,pwd: 用户的密码,

roles: 一个包含角色对象的数组,用于分配用户的权限。在这个数组中,用户被分配了三个不同的角色:

{role:"readWrite",db:"test"}

允许用户读写test数据库

{role:"dbAdmin",db:"test"}

赋予用户管理test数据库的权限,比如创建索引和查看数据库统计信息。

{role:"userAdmin",db:"test"}

允许用户在test数据库中管理用户和角色。

切换回admin数据库

use admin

查看创建的用户 是否有3个

db.system.users.find()

退出shell

同时按下Ctrl+C

注意事项:

MongoDB的用户和数据库是绑定的, 必须指定某个用户归属于哪个数据库, 即在roles字段的每个role中指定db字段.

数据库管理员通常需要具有读写,管理任意数据库和管理任意用户的role, 后续可以登录此用户进行数据库和用户的增删改查.

集群管理员通常需要具有集群管理和集群监控的role, 只有集群管理员可以关闭集群.

普通用户根据用途不同可以对特定或者多个数据库拥有各种不同的role, 本例中的test用户既可以读写test库, 同时也是test库的管理员.

主节点上添加的用户应该能够在从节点上查询到.

关闭数据库(重点)

切记!日常使用时要关闭数据库,必须是在进入shell下进行按仲裁节点,从节点,主节点的顺序执行关闭,而不是通过ps aux的kill 杀死进程,否则可能造成数据丢失或损坏

上面流程,用户添加完成后需要关闭所有节点(先关闭仲裁和从节点, 再关闭主节点, 避免主节点切换):

依次进入 节点的shell执行关闭流程

1.仲裁节点: mongo 127.0.0.1:27019

2.从节点: mongo 127.0.0.1:27018

3.主节点: mongo 127.0.0.1:27017

每次进入shell 后按顺序先执行

1.切换数据库 use admin

2.关闭mongodb 进程 db.shutdownServer()

3.退出 shell 同时按下Ctrl+C

生成keyFile

keyFile的长度必须在6-1024个字符之间。

keyFile的用途是作为所有mongod后台进程允许加入集群的凭证, 所有集群中的节点共用一个keyFile, 避免其他mongod非法加入集群):

仅在一个节点执行(本机执行),步骤如下:

生成keyFile并放入node01(主节点)

openssl rand -base64 756 > /mongodbData/node01/conf/access.key

设置keyFile文件为只读

chmod 400 /mongodbData/node01/conf/access.key

将keyFile复制到node02(从节点)

cp /mongodbData/node01/conf/access.key /mongodbData/node02/conf/

将keyFile复制到node03(仲裁节点)

cp /mongodbData/node01/conf/access.key /mongodbData/node03/conf/

修改mongod.conf文件,取消注释信息

完成上面流程后,取消三个节点mongod.conf文件中security与setParameter部分的注释,然后重新启动即是带权限的方式了,之前的都是没有权限的启动

用vi 工具编辑,

vi /mongodbData/node01/conf/mongod.conf

vi /mongodbData/node02/conf/mongod.conf

vi /mongodbData/node03/conf/mongod.conf

去掉三个配置文件的#号,并且确保空格缩进准确是4个

#security:

# keyFile: "/mongodbData/node03/conf/access.key"

# authorization: enabled

#setParameter:

# authenticationMechanisms: SCRAM-SHA-1

再次启动数据库,开启用户登录认证

依次启动主节点, 从节点和仲裁节点的mongod后台进程:

mongod -f /mongodbData/node01/conf/mongod.conf

mongod -f /mongodbData/node02/conf/mongod.conf

mongod -f /mongodbData/node03/conf/mongod.conf

再次登录数据库,验证创建的用户

进入shell

mongo 127.0.0.1:27017

切换当前会话到 admin 数据库

use admin

使用数据库管理员认证

db.auth('root', 'root_jY_2021')

使用集群管理员认证

db.auth('suroot', 'suroot_jY_2021')

切换当前会话到 test 数据库

use test

使用数据库管理员认证

db.auth('test', 'test')

部署结束

至此, 单服务器下基于用户认证的MongoDB4.4.27三节点副本集集群环境已经搭建完成,
下面连接数据库方式

远程连接数据库

方法一:

使用Studio 3T可视化工具远程连接(超级管理员)配置如下,只需要连接单节点

方法二:

使用nodejs 代码链接

mongodb://root:root_jY_2021@127.0.0.1:27017,127.0.0.1:27018/admin


let MongoClient=require('mongodb').MongoClient;
let mongoUrl="mongodb://root:root_jY_2021@127.0.0.1:27017,127.0.0.1:27018/admin";
MongoClient.connect(mongoUrl,{ useNewUrlParser: true,useUnifiedTopology: true }, async function(err, pt_clientObj) {
  if(err) {console.error("发生错误",err);}
  let client = pt_clientObj.db();
  console.log("连接成功");
});

使用过程问题

节点降权

在高并发数据操作时(如迁移数据库并发量过大),如果服务器或磁盘的性能比较差会出现数据库进程被杀死的情况,通常是主节点27017被杀,导致从节点变成主节点,然后手动重启了27017会被仲裁节点判成从节点,这时候要重新改成主节点时,必须按一下操作。

进入shell

mongo 127.0.0.1:27018

切换当前会话到 admin 数据库

use admin

使用集群管理员认证

db.auth('suroot', 'suroot_jY_2021')

执行降权命令操作

在 MongoDB 中,主节点降权(step down)是一个谨慎的操作,通常由副本集的自动选举机制来触发新的主节点选举。但如果你希望手动将主节点降权,MongoDB 提供了 rs.stepDown() 命令来实现。如果你想直接降权主节点而不等待选举新主节点,可以使用 rs.stepDown() 命令并提供一个可选的参数,指定降权的秒数。

以下是一个示例,演示如何使用 rs.stepDown() 命令来直接降权主节点,并将主节点的降权时间设置为0秒(立即降权):

rs.stepDown(0)

启动失败问题

如果你不是第一次启动该节点

1.你的目录里面缺少配置文件里面指定的启用的文件,如 access.key,也就是没注释掉 security 里面指向的文件和配置

2.可能是使用过程中pid 有问题,需要将3个节点的mongod.pid删除后重新启动创建新的pid文件

使用过程中报错问题日志过大需要轮换

手动执行日志轮转

进入shell

mongo 127.0.0.1:27017

切换当前会话到 admin 数据库

use admin

使用集群管理员认证

db.auth('suroot', 'suroot_jY_2021')

手动执行日志轮转

db.adminCommand({ logRotate : 1 })

这样表示修改成功,继续修改从节点的日志即可。

自动执行日志轮转

在 CentOS 7.9 上使用 logrotate 工具来自动管理 MongoDB 的日志文件。

以下是详细的步骤和说明:

确保 logrotate 安装。大多数 CentOS 系统默认安装了 logrotate。要检查是否已安装,请在终端中运行:

logrotate --version

如果已安装,这将显示 logrotate 的版本号。

如果未安装,可以通过运行以下命令来安装它:

yum install logrotate


创建 MongoDB 的 logrotate 配置文件
首先,你需要为 MongoDB 的日志文件创建一个 logrotate 配置文件。这个文件定义了如何轮转日志、何时轮转、执行哪些额外操作等。

打开文本编辑器以创建新的配置文件。使用 vi 没有就自动创建:

vi /etc/logrotate.d/mongodb

这将创建一个名为 mongodb 的新配置文件。

在编辑器中,添加以下内容(注意空格缩进):

# MongoDB日志轮转配置node01
/mongodbData/node01/logs/mongod.log {
    daily
    rotate 31
    compress
    missingok
    notifempty
    create 640 root root
    postrotate
        /bin/systemctl reload mongod.service > /dev/null 2>/dev/null || true
    endscript
}

# MongoDB日志轮转配置node02
/mongodbData/node02/logs/mongod.log {
    daily
    rotate 31
    compress
    missingok
    notifempty
    create 640 root root
    postrotate
        /bin/systemctl reload mongod.service > /dev/null 2>/dev/null || true
    endscript
}

这段配置的意义如下:

/mongodbData/node01/logs/mongod.log:这是你的 MongoDB 日志文件的路径。
daily:每天轮转日志文件。
rotate 31:保留最近 31 天的日志。
compress:轮转后压缩旧日志。
missingok:如果日志文件不存在,则不报错。
notifempty:如果日志文件为空,则不轮转。
create 640 root root:轮转后创建新的日志文件,设置权限和所有者。
postrotate/endscript:在轮转后执行的命令。这里是重新加载 MongoDB 服务。
 

上面的 create 配置如果是不是root的话,需要执行 以下命令,看mongodb是以什么身份运行

ps aux | grep mongod

测试 logrotate 配置.为了确保你的配置文件没有错误,你可以用 logrotate 的测试模式来检查:

logrotate /etc/logrotate.d/mongodb -d

-d 参数表示“调试模式”,它将显示 logrotate 将执行的操作,但不会真正执行它们

这个输出表明你的 logrotate 配置文件被正确读取并且没有错误,但由于当前条件没有满足轮转的需求(比如时间还没到),所以没有执行实际的轮转操作。

上面截图,这里是关键信息的解释:

reading config file /etc/logrotate.d/mongodb

Allocating hash table for state file, size 15360 B

上面的 logrotate 命令输出来看,现在 logrotate 已经正确地读取了 /etc/logrotate.d/mongodb 配置文件,并且对其中定义的日志文件进行了处理。

Handling 2 logs

Handling 2 logs: 表明 logrotate 正在处理两个日志文件的轮转,这与你的配置文件中定义的日志路径数量相符。

rotating pattern: /mongodbData/node01/logs/mongod.log after 1 days (31 rotations)

rotating pattern: 这部分描述了轮转的模式。例如,/mongodbData/node01/logs/mongod.log 在每天之后轮转,并且保留 31 个轮转的副本。这意味着每天检查一次是否需要轮转,并且最多保留 31 天的日志。

empty log files are not rotated, old logs are removed

considering log /mongodbData/node01/logs/mongod.log

empty log files are not rotated, old logs are removed: 这表示如果日志文件是空的,则不会进行轮转。此外,超出保留期限的旧日志将被删除。

log does not need rotating (log has been already rotated)

log does not need rotating (log has been already rotated): 对于每个考虑的日志文件,logrotate 判断它们目前不需要轮转。这可能是因为它们已经在之前被轮转过,或者还没达到定义的轮转条件(例如,还没有过一天)。

重要的是,这次执行是在“调试模式”下进行的(由 -d 参数指定),所以实际上并没有执行任何轮转操作。调试模式仅用于检查配置是否正确和 logrotate 将要执行哪些操作,而不会真正地轮转日志或更改任何文件。

自动执行 logrotate。在 CentOS 上,logrotate 通常由 cron 作业自动运行。你可以检查 /etc/crontab 文件或 /etc/cron.* 目录来确认 logrotate 的运行频率。

一般来说,不需要额外的步骤来自动执行 logrotate,因为它已被系统的 cron 作业所配置。

通过这些步骤,你就可以设置 MongoDB 的日志文件自动轮转了。这样可以帮助管理日志文件的大小,防止它们占用过多的磁盘空间。

单机部署mongodb3节点数据库4.4.27版本的教程,至此告一段落。有问题的朋友们请留言,我来验证和补充。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT 实现自动生成小学两位数加减法算式

小学生加减法训练 QT实现–自动生成两位数加减法算式,并输出txt文件 可以copy到word文件,设置适当字体大小和行间距,带回家给娃做做题 void MainWindow::test(int answerMax, int count) {// 创建一个随机数生成器QRandomGenerator *gener…

引领AI变革:边缘计算与自然语言处理结合的无尽可能

引言 讲到Ai,你第一时间会想到什么?是Chagpt和文心一言这样与人类交流自然的Ai生成式对话服务?还是根据关键字快速制图的Ai绘图?这些都是近年来人们所常知的Ai用途,我们今天来讲讲以自然语言处理为辅,在Ai赋…

JS之歌词滚动案例

让我为大家带来一个歌词滚动的案例吧&#xff01; 详细的介绍都在代码块中 我很希望大家可以自己动手尝试一下&#xff0c;如果需要晴天的mp3音频文件可以私信我 上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset&quo…

Vue好看的组件库:Element

文章目录 1、什么是Element2、Element快速入门3、Element布局3.1、 Layout 局部3.2、容器布局 1、什么是Element Element&#xff1a;是饿了么公司前端开发团队提供的一套基于 Vue 的网站组件库&#xff0c;用于快速构建网页 Element 提供了很多组件&#xff08;组成网页的部件…

使用DBSyncer同步Oracle11g数据到Mysql5.7中_实现全量数据同步和增量数据实时同步_操作过程---数据同步之DBSyncer工作笔记007

之前都是用mysql和Postgresql之间进行同步的,已经实现了数据的实时同步,现在要实现Oracle数据库到Mysql数据库的全量,以及增量同步. 因为之前配置的不对,这里架构名写成了orcl,所以导致,虽然能连接上,但是,在进行数据同步的时候,看不到表,所以这里说一下如何进行连接 这里,首先…

全球机器人产业:技术创新驱动下的市场与竞争新态势

原创 | 文 BFT机器人 近年来&#xff0c;随着颠覆性技术创新的不断涌现、市场新需求的迅速崛起以及外部冲击的深远影响&#xff0c;机器人产业正经历着前所未有的变革。在技术领域&#xff0c;机器人技术不断突破&#xff0c;智能化、自主化、协同化水平日益提升&#xff1b;在…

Java设计模式-装饰器模式(10)

大家好,我是馆长!今天开始我们讲的是结构型模式中的装饰器模式。老规矩,讲解之前再次熟悉下结构型模式包含:代理模式、适配器模式、桥接模式、装饰器模式、外观模式、享元模式、组合模式,共7种设计模式。。 装饰器模式(Decorator Pattern) 定义 装饰(Decorator)模式…

前端开发如何自己开发组件库

好多前端小伙伴干了五六年&#xff0c;一直在做切图仔&#xff0c;一看项目没啥亮点。今天开始&#xff0c;我就分享下自己开发组件库的历程。 注&#xff1a;文章会持续更新 环境 "dumi": "^2.2.0","father": "^4.1.0",这里我们站在巨…

消息中间件之八股面试回答篇:一、问题概览+MQ的应用场景+RabbitMQ如何保证消息不丢失(生产者确认机制、持久化、消费者确认机制)+回答模板

问题概览 目前主流的消息队列技术&#xff08;MQ技术&#xff09;分为RabbitMQ和Kafka&#xff0c;其中深蓝色为只要是MQ&#xff0c;一般都会问到的问题。浅蓝色是针对RabbitMQ的特性的问题。蓝紫色为针对Kafka的特性的问题。 MQ的应用场景 MQ主要提供的功能为&#xff1a;异…

Database history tablesupgraded

zabbix升级到6之后&#xff0c;配置安装完成会有一个红色输出&#xff0c;但是不影响zabbix使用&#xff0c;出于强迫症&#xff0c;找到了该问题的解决方法。 Database history tables upgraded: No. Support for the old numeric type is deprecated. Please upgrade to nume…

【新课上架】安装部署系列Ⅲ—Oracle 19c Data Guard部署之两节点RAC部署实战

01 课程介绍 Oracle Real Application Clusters (RAC) 是一种跨多个节点分布数据库的企业级解决方案。它使组织能够通过实现容错和负载平衡来提高可用性和可扩展性&#xff0c;同时提高性能。本课程基于当前主流版本Oracle 19cOEL7.9解析如何搭建2节点RAC对1节点单机的DATA GU…

LLM之RAG实战(二十一)| 使用LlamaIndex的Text2SQL和RAG的功能分析产品评论

亚马逊和沃尔玛等电子商务平台上每天都有大量的产品评论&#xff0c;这些评论是反映消费者对产品情绪的关键接触点。但是&#xff0c;企业如何从庞大的数据库获得有意义的见解&#xff1f; 我们可以使用LlamaIndex将SQL与RAG&#xff08;Retrieval Augmented Generation&#x…

中国县域统计年鉴,含县市卷和乡镇卷,时间覆盖2001-2022年

数据名称: 中国县域统计年鉴 数据格式: pdf、xls不定 数据时间: 2001-2022年 数据几何类型: 文本 数据坐标系: —— 数据来源&#xff1a;国家统计局 数据字段: 中国县域统计年鉴&#xff08;县市卷&#xff09;中国县域统计年鉴&#xff08;乡镇卷&#xff09;目录…

Unity - 将项目转为HDRP

Camera window -> Package Manager 之后会出现HDRP向导窗口&#xff0c;均点击修复。 在Edit中&#xff0c;更改项目中的材质

科技发展趋势,墨水屏电子桌牌将发挥更重要作用

随着科技的不断发展&#xff0c;电子桌牌作为信息展示和宣传的新型设备&#xff0c;逐渐在各个行业得到广泛应用。在国企单位、政府部门、大企业、外企等&#xff0c;墨水屏电子桌牌作为一种新型的数字化展示工具&#xff0c;也已经得到了越来越多的应用。下面&#xff0c;中科…

【Leetcode】2865. 美丽塔 I

文章目录 题目思路代码结果 题目 题目链接 给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。 你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i &#xff0c;高度为 heights[i] 。 如果以下条件满足&#xff0c;我们称这些塔是 美丽 的&#xff1a; 1 < hei…

【前端web入门第一天】02 HTML图片标签 超链接标签

文章目录: 1.HTML图片标签 1.1 图像标签-基本使用1.2 图像标签-属性1.3 路径 1.3.1 相对路径 1.3.2 绝对路径 2.超链接标签 3.音频标签 4.视频标签 1.HTML图片标签 1.1 图像标签-基本使用 作用:在网页中插入图片。 <img src"图片的URL">src用于指定图像…

支持向量机(SVM)详解

支持向量机&#xff08;support vector machines&#xff0c;SVM&#xff09;是一种二分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器&#xff0c;间隔最大使它有别于感知机。 1、线性可分支持向量机与硬间隔最大化 1.1、线性可分支持向量机 考虑一个二分…

读懂【浅拷贝】

1、对象直接赋值 先来看一下&#xff0c;创建一个对象obj&#xff08;原对象&#xff09;&#xff0c;将对象obj直接赋值给另一个对象o&#xff08;新对象&#xff09;,修改新对象o中的属性值&#xff0c;会发生什么&#xff1f;-----原来的对象obj内容也被改掉了。 const ob…

BurpSuite高阶使用指南

BurpSuite高阶使用指南 1.代理过滤 HTTP 历史记录设置模式Bambdas 过滤2.Intruder模块载荷的处理3.Intruder资源池的使用1.代理过滤 HTTP 历史记录 可以筛选 HTTP 历史记录,使其更易于分析 交互列表上方的筛选器栏描述当前显示筛选器。要进行配置,请单击过滤器栏以打开“配…