在 Oracle Linux 9 中安装和配置 Cassandra
本文将介绍如何在 Oracle Linux 9 系统上安装和配置 Cassandra,以及如何进行基本的数据库操作。
Cassandra 是一个分布式的 NoSQL 数据库,它可以提供高可用性、高性能和高扩展性的数据存储和管理。Cassandra 的主要特点是使用一致性哈希算法来分配数据到不同的节点,以及使用 Gossip 协议来维护节点之间的通信和状态。Cassandra 还支持多数据中心的复制,以及对 JSON、CQL 和 Thrift 等多种数据格式和查询语言的支持。
本文将介绍如何在 Oracle Linux 9 系统上安装和配置 Cassandra,以及如何进行基本的数据库操作。本文假设您已经拥有了一个 Oracle Linux 9 的服务器,并且已经使用 root 用户登录。
先决条件
在安装和配置 Cassandra 之前,您需要满足以下的先决条件:
-
您的服务器至少需要 4 GB 的内存,以及 50 GB 的磁盘空间。
-
您的服务器需要能够访问互联网,以便下载 Cassandra 的安装包和依赖项。
-
您的服务器需要安装 Java 8 或更高版本,以及 Python 2.7 或更高版本。您可以使用以下命令来检查您的 Java 和 Python 的版本:
java -version python --version
-
您需要为 Cassandra 创建一个专用的用户和组,以及一个数据目录。您可以使用以下命令来完成这些操作:
groupadd cassandra useradd -g cassandra -s /bin/bash -d /var/lib/cassandra cassandra mkdir -p /var/lib/cassandra chown -R cassandra:cassandra /var/lib/cassandra
安装 Cassandra
在本节中,我们将介绍如何从 Apache 官方网站下载并安装 Cassandra 的最新版本。您也可以根据您的需要选择其他的安装源或者版本。
首先,您需要下载 Cassandra 的安装包,并解压到 /opt
目录下。您可以使用以下命令来完成这些操作:
cd /opt
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
的软链接,指向刚刚解压的目录:
ln -s apache-cassandra-4.0.1 cassandra
接下来,您需要修改 Cassandra 的配置文件,以适应您的服务器的环境和需求。您可以使用以下命令来编辑 /opt/cassandra/conf/cassandra.yaml
文件:
vi /opt/cassandra/conf/cassandra.yaml
在编辑器中,您需要修改以下的配置项:
-
cluster_name
:您可以为您的 Cassandra 集群指定一个名称,例如MyCassandraCluster
。如果您打算在多个数据中心部署 Cassandra,您需要确保所有的节点使用相同的集群名称。 -
seed_provider
:您可以指定一组种子节点的地址,以便于新加入的节点能够发现集群中的其他节点。您可以使用以下的格式来指定种子节点的地址:seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: - seeds: "node1,node2,node3"
其中,
node1,node2,node3
是您的种子节点的 IP 地址或者主机名,您可以根据您的实际情况进行修改。您至少需要指定一个种子节点的地址,建议指定两个或者三个,以提高可靠性和容错性。 -
listen_address
:您可以指定您的节点的监听地址,即该节点接收其他节点的请求的地址。您可以使用以下的格式来指定监听地址:listen_address: node1
其中,
node1
是您的节点的 IP 地址或者主机名,您可以根据您的实际情况进行修改。如果您的节点有多个网卡或者地址,您需要确保指定一个能够被集群中的其他节点访问的地址。 -
rpc_address
:您可以指定您的节点的 RPC 地址,即该节点接收客户端的请求的地址。您可以使用以下的格式来指定 RPC 地址:rpc_address: node1
其中,
node1
是您的节点的 IP 地址或者主机名,您可以根据您的实际情况进行修改。如果您的节点有多个网卡或者地址,您需要确保指定一个能够被客户端访问的地址。 -
endpoint_snitch
:您可以指定您的节点的端点探测器,即该节点用于确定集群中的其他节点的位置和状态的组件。您可以使用以下的格式来指定端点探测器:endpoint_snitch: GossipingPropertyFileSnitch
其中,
GossipingPropertyFileSnitch
是一种常用的端点探测器,它可以根据节点的属性文件和 Gossip 协议来确定节点的位置和状态。如果您打算在多个数据中心部署 Cassandra,您需要使用这种端点探测器,并且修改/opt/cassandra/conf/cassandra-rackdc.properties
文件,以指定每个节点所属的数据中心和机架的名称。 -
data_file_directories
:您可以指定您的节点的数据文件目录,即该节点存储数据的位置。您可以使用以下的格式来指定数据文件目录:data_file_directories: - /var/lib/cassandra/data
其中,
/var/lib/cassandra/data
是您之前创建的数据目录,您可以根据您的实际情况进行修改。您可以指定多个数据文件目录,以利用多个磁盘的空间和性能。 -
commitlog_directory
:您可以指定您的节点的提交日志目录,即该节点存储写入操作的日志的位置。您可以使用以下的格式来指定提交日志目录:commitlog_directory: /var/lib/cassandra/commitlog
其中,
/var/lib/cassandra/commitlog
是您之前创建的数据目录下的一个子目录,您可以根据您的实际情况进行修改。您只能指定一个提交日志目录,建议使用一个单独的磁盘或者分区,以提高性能和安全性。 -
hints_directory
:您可以指定您的节点的提示目录,即该节点存储未能成功发送给其他节点的写入操作的提示的位置。您可以使用以下的格式来指定提示目录:hints_directory: /var/lib/cassandra/hints
其中,
/var/lib/cassandra/hints
是您之前创建的数据目录下的一个子目录,您可以根据您的实际情况进行修改。您只能指定一个提示目录,建议使用一个单独的磁盘或者分区,以提高性能和安全性。 -
authenticator
:您可以指定您的节点的身份验证器,即该节点用于验证客户端的身份的组件。您可以使用以下的格式来指定身份验证器:authenticator: PasswordAuthenticator
配置 Cassandra
在本节中,我们将介绍如何配置 Cassandra 的环境变量,以便于后续的操作和管理。
首先,您需要编辑 /etc/profile
文件,以添加 Cassandra 的安装目录到 PATH
环境变量中。您可以使用以下命令来编辑 /etc/profile
文件:
vi /etc/profile
在编辑器中,您需要在文件的末尾添加以下的内容:
export CASSANDRA_HOME=/opt/cassandra
export PATH=$PATH:$CASSANDRA_HOME/bin
然后,您需要使修改的环境变量生效。您可以使用以下命令来重新加载 /etc/profile
文件:
source /etc/profile
接下来,您需要修改 Cassandra 的启动脚本,以指定 Java 的安装路径。您可以使用以下命令来编辑 /opt/cassandra/bin/cassandra
文件:
vi /opt/cassandra/bin/cassandra
在编辑器中,您需要找到以下的内容:
#JAVA_HOME=/usr/local/jdk6
并且将其修改为:
JAVA_HOME=/usr/java/jdk1.8.0_301
其中,/usr/java/jdk1.8.0_301
是您的 Java 的安装路径,您可以根据您的实际情况进行修改。
启动 Cassandra
在本节中,我们将介绍如何启动 Cassandra,并验证其是否正常运行。
首先,您需要使用以下命令来启动 Cassandra:
cassandra
然后,您需要使用以下命令来检查 Cassandra 的运行状态:
nodetool status
如果您看到以下的输出,说明 Cassandra 已经成功启动,并且您的节点已经加入到集群中:
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 192.168.1.1 103.77 KiB 256 100.0% 3a2c0b2a-5c4c-4f0f-8f0c-3a2c0b2a5c4c rack1
其中,UN
表示该节点的状态是 Up 和 Normal,即该节点是可用的并且已经完成了数据分配。192.168.1.1
是该节点的 IP 地址,103.77 KiB
是该节点的数据负载,256
是该节点的令牌数,100.0%
是该节点的有效数据所有权,3a2c0b2a-5c4c-4f0f-8f0c-3a2c0b2a5c4c
是该节点的主机 ID,rack1
是该节点所属的机架名称。
连接 Cassandra
在本节中,我们将介绍如何使用 Cassandra 的命令行工具 cqlsh
来连接 Cassandra,并执行一些基本的数据库操作。
首先,您需要使用以下命令来启动 cqlsh
工具,并连接到您的节点:
cqlsh 192.168.1.1
其中,192.168.1.1
是您的节点的 IP 地址,您可以根据您的实际情况进行修改。如果您之前指定了身份验证器,您还需要提供用户名和密码,例如:
cqlsh 192.168.1.1 -u cassandra -p cassandra
其中,cassandra
是默认的用户名和密码,您可以根据您的实际情况进行修改。如果您成功连接到 Cassandra,您将看到以下的输出:
Connected to MyCassandraCluster at 192.168.1.1:9042.
[cqlsh 6.0.0 | Cassandra 4.0.1 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.
cassandra@cqlsh>
其中,MyCassandraCluster
是您的集群名称,192.168.1.1:9042
是您的节点的地址和端口,cqlsh 6.0.0
是 cqlsh
工具的版本,Cassandra 4.0.1
是 Cassandra 的版本,CQL spec 3.4.5
是 CQL 语言的规范版本,Native protocol v5
是 Cassandra 的原生协议的版本,cassandra@cqlsh>
是 cqlsh
工具的提示符,cassandra
是您的用户名。
然后,您可以在 cqlsh
工具中执行一些基本的数据库操作,例如:
-
创建一个名为
test
的键空间,并指定其复制策略为简单策略,复制因子为 1:CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
-
切换到
test
键空间:USE test;
-
创建一个名为
users
的表,并指定其主键为id
,以及其他的列为name
,age
,email
: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 | alice@example.com 2 | Bob | 30 | bob@example.com 3 | Charlie | 35 | charlie@example.com
-
更新
users
表中的某些数据,例如将id
为 1 的用户的age
改为 26:UPDATE users SET age = 26 WHERE id = 1;
-
删除
users
表中的某些数据,例如将id
为 3 的用户删除:DELETE FROM users WHERE id = 3;
-
退出
cqlsh
工具:exit
停止 Cassandra
在本节中,我们将介绍如何停止 Cassandra,并验证其是否已经停止运行。
-
首先,您需要使用以下命令来停止 Cassandra:
nodetool stopdaemon
-
然后,您需要使用以下命令来检查 Cassandra 的运行状态:
nodetool status
-
如果您看到以下的输出,说明 Cassandra 已经成功停止,并且您的节点已经离开了集群:
nodetool: Failed to connect to '127.0.0.1:7199' - ConnectException: 'Connection refused (Connection refused)'.
结论
本文介绍了如何在 Oracle Linux 9 系统上安装和配置 Cassandra,以及如何进行基本的数据库操作。您可以根据您的实际情况进行修改和调整,以满足您的需求。