在 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.0cqlsh 工具的版本,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,以及其他的列为 nameageemail

    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,以及如何进行基本的数据库操作。您可以根据您的实际情况进行修改和调整,以满足您的需求。