在 Oracle Linux 8 中安装和配置 Cassandra
本文将介绍如何在 Oracle Linux 8 系统上安装和配置 Cassandra 数据库,以及如何进行基本的数据库操作。
Cassandra 是一个分布式的、高可用的、可扩展的、无共享的数据库系统,它可以处理大量的结构化、半结构化和非结构化的数据。Cassandra 的设计灵感来自于 Google 的 Bigtable 和 Amazon 的 Dynamo,它使用了一种称为最终一致性的一致性模型,以牺牲一定的数据一致性来换取高可用性和高性能。
本文将介绍如何在 Oracle Linux 8 系统上安装和配置 Cassandra 数据库,以及如何进行基本的数据库操作。本文假设您已经拥有了一台或多台运行 Oracle Linux 8 的服务器,并且已经配置好了网络和防火墙。
先决条件
在安装和配置 Cassandra 之前,您需要满足以下的先决条件:
- 您需要使用
root
用户或具有sudo
权限的用户来执行本文中的命令。 - 您需要确保您的服务器上已经安装了 Java 8 或更高版本,因为 Cassandra 需要 Java 环境来运行。您可以使用以下命令来检查您的 Java 版本:
java -version
如果您没有安装 Java,您可以使用以下命令来安装 Oracle JDK 8:
sudo yum install java-1.8.0-openjdk-devel
- 您需要确保您的服务器上已经安装了
wget
工具,以便下载 Cassandra 的安装包。您可以使用以下命令来检查您的wget
版本:
wget --version
如果您没有安装 wget
,您可以使用以下命令来安装:
sudo yum install wget
- 如果您打算使用 Cassandra 的集群功能,您需要确保您的服务器之间可以通过 TCP 端口 7000 和 9042 互相通信,以及通过 UDP 端口 7001 和 7199 进行节点发现和管理。您可以使用以下命令来配置防火墙规则,允许这些端口的流量:
sudo firewall-cmd --zone=public --add-port=7000/tcp --permanent
sudo firewall-cmd --zone=public --add-port=7001/udp --permanent
sudo firewall-cmd --zone=public --add-port=7199/udp --permanent
sudo firewall-cmd --zone=public --add-port=9042/tcp --permanent
sudo firewall-cmd --reload
下载和安装 Cassandra
在本文中,我们将使用 Cassandra 的最新稳定版本,即 4.0.1,来进行安装。您可以访问 Cassandra 的官方网站,查看最新的版本和下载链接。
要下载 Cassandra 的安装包,您可以使用以下命令:
wget https://downloads.apache.org/cassandra/4.0.1/apache-cassandra-4.0.1-bin.tar.gz
下载完成后,您可以使用以下命令来解压缩安装包:
tar xzf apache-cassandra-4.0.1-bin.tar.gz
解压缩后,您可以将 Cassandra 的目录移动到 /opt
目录下,以便管理:
sudo mv apache-cassandra-4.0.1 /opt/cassandra
配置 Cassandra
在配置 Cassandra 之前,您需要创建一个专门的用户和组来运行 Cassandra,以提高安全性。您可以使用以下命令来创建一个名为 cassandra
的用户和组:
sudo groupadd cassandra
sudo useradd -g cassandra -d /opt/cassandra cassandra
然后,您需要更改 Cassandra 目录和文件的所有者和权限,以便 cassandra
用户可以访问和修改:
sudo chown -R cassandra:cassandra /opt/cassandra
sudo chmod -R 755 /opt/cassandra
接下来,您需要修改 Cassandra 的配置文件,以适应您的服务器和需求。Cassandra 的配置文件位于 /opt/cassandra/conf
目录下,主要有以下几个文件:
cassandra.yaml
:这是 Cassandra 的主要配置文件,包含了 Cassandra 的基本设置,如集群名称,数据目录,内存分配,端口号,种子节点等。cassandra-env.sh
:这是 Cassandra 的环境变量文件,包含了 Cassandra 的 Java 选项,如堆大小,垃圾回收器,JMX 端口等。cassandra-rackdc.properties
:这是 Cassandra 的机架和数据中心配置文件,包含了 Cassandra 的拓扑信息,如机架名称,数据中心名称等。jvm.options
:这是 Cassandra 的 JVM 配置文件,包含了 Cassandra 的 JVM 参数,如堆大小,垃圾回收器,性能优化等。
您可以根据您的实际情况,修改这些配置文件中的参数。以下是一些常见的参数和建议的值:
- 在
cassandra.yaml
文件中,修改以下参数:
cluster_name: "My Cassandra Cluster" # 指定您的集群名称,确保所有节点使用相同的名称
num_tokens: 256 # 指定每个节点的令牌数量,建议使用 256
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "192.168.1.1,192.168.1.2" # 指定您的种子节点的 IP 地址,建议使用至少两个节点
listen_address: 192.168.1.1 # 指定您的节点的 IP 地址,用于与其他节点通信
rpc_address: 192.168.1.1 # 指定您的节点的 IP 地址,用于与客户端通信
endpoint_snitch: GossipingPropertyFileSnitch # 指定您的节点的拓扑信息提供者,建议使用 GossipingPropertyFileSnitch
- 在
cassandra-env.sh
文件中,修改以下参数:
JMX_PORT="7199" # 指定您的节点的 JMX 端口,用于监控和管理
LOCAL_JMX=no # 指定是否允许远程 JMX 访问,建议设置为 no
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=192.168.1.1" # 指定您的节点的 IP 地址,用于远程 JMX 访问
- 在
cassandra-rackdc.properties
文件中,修改以下参数:
dc=DC1 # 指定您的节点所属的数据中心名称
rack=RAC1 # 指定您的节点所属的机架名称
- 在
jvm.options
文件中,修改以下参数:
-Xms4G # 指定您的节点的 Java 堆的初始大小,建议设置为内存的 1/4
-Xmx4G # 指定您的节点的 Java 堆的最大大小,建议设置为内存的 1/4
启动和停止 Cassandra
在完成 Cassandra 的配置后,您可以使用以下命令来启动 Cassandra:
sudo -u cassandra /opt/cassandra/bin/cassandra
您可以使用以下命令来检查 Cassandra 的运行状态:
sudo -u cassandra /opt/cassandra/bin/nodetool status
您可以使用以下命令来停止 Cassandra:
sudo -u cassandra /opt/cassandra/bin/nodetool stopdaemon
连接和操作 Cassandra
在启动 Cassandra 后,您可以使用以下命令来连接 Cassandra:
/opt/cassandra/bin/cqlsh 192.168.1.1 9042
其中,192.168.1.1
是您的节点的 IP 地址,9042
是您的节点的 RPC 端口。如果您没有修改过 Cassandra 的默认密码,您可以直接按回车键登录。如果您修改过 Cassandra 的默认密码,您需要输入您的用户名和密码来登录。
在连接 Cassandra 后,您可以使用 CQL(Cassandra Query Language)来操作 Cassandra。CQL 是一种类似于 SQL 的查询语言,它可以让您创建、修改、删除和查询 Cassandra 中的数据。以下是一些常用的 CQL 命令的示例:
- 创建一个名为
test
的键空间(类似于 SQL 中的数据库),并指定其复制策略为简单策略,复制因子为 3:
CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
- 切换到
test
键空间:
USE test;
- 创建一个名为
users
的表(类似于 SQL 中的表),并指定其主键为id
,以及其他的列:
CREATE TABLE users (
id int PRIMARY KEY,
name text,
email text,
age int
);
- 插入一些数据到
users
表中:
INSERT INTO users (id, name, email, age) VALUES (1, 'Alice', '[email protected]', 25);
INSERT INTO users (id, name, email, age) VALUES (2, 'Bob', '[email protected]', 30);
INSERT INTO users (id, name, email, age) VALUES (3, 'Charlie', '[email protected]', 35);
- 查询
users
表中的所有数据:
SELECT * FROM users;
- 查询
users
表中id
为 2 的数据:
SELECT * FROM users WHERE id = 2;
- 更新
users
表中id
为 3 的数据,将name
改为David
:
UPDATE users SET name = 'David' WHERE id = 3;
- 删除
users
表中id
为 1 的数据:
DELETE FROM users WHERE id = 1;
- 删除
users
表:
DROP TABLE users;
- 删除
test
键空间:
DROP KEYSPACE test;
- 退出 CQL:
EXIT;
结论
本文介绍了如何在 Oracle Linux 8 系统上安装和配置 Cassandra 数据库,以及如何进行基本的数据库操作。Cassandra 是一个强大的分布式数据库系统,它可以处理海量的数据,并提供高可用性和高性能。如果您想了解更多关于 Cassandra 的信息,您可以访问 Cassandra 的官方网站,或者参考 Cassandra 的官方文档。