在 Oracle Linux 7 中安装和配置 Cassandra

本文将介绍如何在 Oracle Linux 7 系统上安装和配置 Cassandra 数据库,以及如何进行基本的数据库操作。

发布于

Cassandra 是一个分布式的、高可用的、可扩展的、无共享的数据库系统,它可以处理大量的结构化、半结构化和非结构化的数据。Cassandra 的设计灵感来自于 Google 的 Bigtable 和 Amazon 的 Dynamo,它使用了一种称为最终一致性的一致性模型,以牺牲一定的数据一致性来换取高可用性和高性能。

本文将介绍如何在 Oracle Linux 7 系统上安装和配置 Cassandra 数据库,以及如何进行基本的数据库操作。本文假设您已经拥有了一台或多台运行 Oracle Linux 7 的服务器,并且已经配置好了网络和防火墙。

先决条件

在安装和配置 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 7 系统上安装和配置 Cassandra 数据库,以及如何进行基本的数据库操作。Cassandra 是一个强大的分布式数据库系统,它可以处理海量的数据,并提供高可用性和高性能。如果您想了解更多关于 Cassandra 的信息,您可以访问 Cassandra 的官方网站,或者参考 Cassandra 的官方文档。