在 Red Hat 9 中安装和配置 Cassandra
本文将介绍如何在 Red Hat 9 的系统中安装和配置 Cassandra,以及如何使用基本的命令和 CQL 操作数据库。
Cassandra 是一个分布式的 NoSQL 数据库,它可以提供高可用性,高扩展性,高性能和一致性的数据存储服务。Cassandra 的主要特点是:
- 使用环形架构,没有单点故障
- 支持多数据中心和云平台的部署
- 提供灵活的数据模型,支持动态列和多种数据类型
- 提供 CQL (Cassandra Query Language) 作为 SQL 的变体,方便用户操作数据
- 提供多种客户端驱动,支持多种编程语言
本文将介绍如何在 Red Hat 9 的系统中安装和配置 Cassandra,以及如何使用基本的命令和 CQL 操作数据库。
先决条件
在开始安装和配置 Cassandra 之前,您需要准备以下内容:
- 一台或多台运行 Red Hat 9 的服务器,具有 root 权限或 sudo 权限
- 确保服务器之间可以通过网络互相访问,如果使用防火墙,需要开放以下端口:
- TCP 端口 7000:用于节点之间的通信
- TCP 端口 7001:用于节点之间的加密通信
- TCP 端口 7199:用于 JMX 监控
- TCP 端口 9042:用于 CQL 客户端连接
- TCP 端口 9160:用于 Thrift 客户端连接
- 安装 Java 11 或更高版本,可以使用
java -version
命令检查 Java 的版本 - 下载 Cassandra 的二进制包,可以从 官网 或者 镜像站点 获取最新的版本,本文使用的是 4.0.1 版本
安装 Cassandra
在每台服务器上执行以下步骤,安装 Cassandra:
解压下载的 Cassandra 的二进制包,可以使用以下命令:
tar -xzvf apache-cassandra-4.0.1-bin.tar.gz
将解压后的目录移动到 /opt
目录下,可以使用以下命令:
sudo mv apache-cassandra-4.0.1 /opt/cassandra
创建一个名为 cassandra
的用户和用户组,用于运行 Cassandra,可以使用以下命令:
sudo groupadd cassandra
sudo useradd -g cassandra -d /opt/cassandra cassandra
更改 Cassandra 目录和子目录的所有者和权限,可以使用以下命令:
sudo chown -R cassandra:cassandra /opt/cassandra
sudo chmod -R 755 /opt/cassandra
创建 Cassandra 的数据目录,日志目录,缓存目录,可以使用以下命令:
sudo mkdir -p /var/lib/cassandra/data
sudo mkdir -p /var/lib/cassandra/commitlog
sudo mkdir -p /var/lib/cassandra/saved_caches
sudo mkdir -p /var/log/cassandra
更改这些目录的所有者和权限,可以使用以下命令:
sudo chown -R cassandra:cassandra /var/lib/cassandra
sudo chown -R cassandra:cassandra /var/log/cassandra
sudo chmod -R 755 /var/lib/cassandra
sudo chmod -R 755 /var/log/cassandra
配置 Cassandra
在每台服务器上执行以下步骤,配置 Cassandra:
编辑 Cassandra 的配置文件 /opt/cassandra/conf/cassandra.yaml
,可以使用以下命令:
sudo vi /opt/cassandra/conf/cassandra.yaml
在配置文件中,修改以下参数,根据您的实际情况进行调整:
cluster_name: "MyCassandraCluster" # 集群的名称,需要保持一致
num_tokens: 256 # 每个节点分配的令牌数量,建议使用 256
seed_provider: # 种子节点的提供者,需要包含至少一个种子节点的地址
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "192.168.1.10" # 种子节点的地址,用逗号分隔,建议使用至少两个种子节点
listen_address: 192.168.1.10 # 本地节点的地址,用于节点之间的通信,不能使用 0.0.0.0 或 127.0.0.1
rpc_address: 192.168.1.10 # 本地节点的地址,用于客户端连接,不能使用 0.0.0.0,可以使用 127.0.0.1
endpoint_snitch: GossipingPropertyFileSnitch # 节点的信息提供者,建议使用 GossipingPropertyFileSnitch
编辑 Cassandra 的环境变量文件 /opt/cassandra/conf/cassandra-env.sh
,可以使用以下命令:
sudo vi /opt/cassandra/conf/cassandra-env.sh
在环境变量文件中,修改以下参数,根据您的实际情况进行调整:
MAX_HEAP_SIZE="4G" # Cassandra 的最大堆内存大小,建议使用物理内存的四分之一
HEAP_NEWSIZE="800M" # Cassandra 的新生代堆内存大小,建议使用最大堆内存大小的四分之一
JVM_OPTS="$JVM_OPTS -Dcassandra.ring_delay_ms=30000" # Cassandra 的环形延迟时间,建议使用 30000 毫秒
编辑 Cassandra 的拓扑文件 /opt/cassandra/conf/cassandra-rackdc.properties
,可以使用以下命令:
sudo vi /opt/cassandra/conf/cassandra-rackdc.properties
在拓扑文件中,修改以下参数,根据您的实际情况进行调整:
dc=DC1 # 数据中心的名称,需要保持一致
rack=RAC1 # 机架的名称,可以根据不同的服务器进行区分
启动 Cassandra
在每台服务器上执行以下步骤,启动 Cassandra:
切换到 cassandra
用户,可以使用以下命令:
sudo su - cassandra
运行 Cassandra 的启动脚本,可以使用以下命令:
/opt/cassandra/bin/cassandra
检查 Cassandra 的运行状态,可以使用以下命令:
/opt/cassandra/bin/nodetool status
如果看到类似以下的输出,说明 Cassandra 已经成功启动,并且节点之间已经形成了集群:
Datacenter: DC1
================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns Host ID Rack
UN 192.168.1.10 223.77 KiB 256 ? 3c9a7f6a-9c8d-4f0f-9a2c-4b4a0c1f0f0f RAC1
UN 192.168.1.11 223.77 KiB 256 ? 5a9f7f6a-9c8d-4f0f-9a2c-4b4a0c1f0f0f RAC1
UN 192.168.1.12 223.77 KiB 256 ? 6a9f7f6a-9c8d-4f0f-9a2c-4b4a0c1f0f0f RAC1
操作 Cassandra
在任意一台服务器上执行以下步骤操作 Cassandra。
运行 Cassandra 的命令行工具 cqlsh
,可以使用以下命令:
/opt/cassandra/bin/cqlsh 192.168.1.10
如果看到类似以下的输出,说明已经成功连接到 Cassandra 的节点:
Connected to MyCassandraCluster at 192.168.1.10:9042.
[cqlsh 6.0.0 | Cassandra 4.0.1 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.
cqlsh>
在 cqlsh
中,可以使用 CQL 语句操作数据库,比如创建键空间,创建表,插入数据,查询数据等。例如,可以使用以下语句创建一个名为 test
的键空间,使用 SimpleStrategy
作为复制策略,复制因子为 3:
CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
可以使用以下语句切换到 test
键空间:
USE test;
可以使用以下语句创建一个名为 users
的表,包含 id
,name
,age
,email
四个字段,其中 id
作为主键:
CREATE TABLE users (
id int PRIMARY KEY,
name text,
age int,
email text
);
可以使用以下语句插入一些数据到 users
表中:
INSERT INTO users (id, name, age, email) VALUES (1, 'Alice', 25, '[email protected]');
INSERT INTO users (id, name, age, email) VALUES (2, 'Bob', 30, '[email protected]');
INSERT INTO users (id, name, age, email) VALUES (3, 'Charlie', 35, '[email protected]');
可以使用以下语句查询 users
表中的所有数据:
SELECT * FROM users;
如果看到类似以下的输出,说明数据已经成功插入和查询:
id | name | age | email
----+---------+-----+--------------------
1 | Alice | 25 | [email protected]
2 | Bob | 30 | [email protected]
3 | Charlie | 35 | [email protected]
可以使用以下语句更新 users
表中的某些数据,比如将 id
为 1 的用户的 age
改为 26:
UPDATE users SET age = 26 WHERE id = 1;
可以使用以下语句删除 users
表中的某些数据,比如将 id
为 3 的用户删除:
DELETE FROM users WHERE id = 3;
可以使用以下语句退出 cqlsh
:
EXIT;
结论
本文介绍了如何在 Red Hat 9 的系统中安装和配置 Cassandra,以及如何使用基本的命令和 CQL 操作数据库。Cassandra 是一个强大的分布式 NoSQL 数据库,可以满足大数据场景下的数据存储需求。