StarRocks 入门指南:创建和管理数据库及表

本文介绍如何在 StarRocks 中创建数据库和表,插入数据,执行常用的系统管理命令,以及一些常用配置的修改方法,快速了解上手 StarRocks。

设置环境变量

首先,我们需要设置 JAVA_HOME 环境变量,以便 StarRocks 能够找到 Java 运行时环境。

export JAVA_HOME="/data3/starrocks/jdk-17.0.11"

启动 FE Frontend 计算服务

进入 StarRocks 安装目录,并启动 Frontend 服务。

cd /data3/starrocks/StarRocks-3.3.0
./fe/bin/start_fe.sh --daemon

检查日志

可以通过检查日志文件来确保 Frontend 服务已正确启动。

cat fe/log/fe.log | grep thrift

启动 BE backend 存储服务

进入 StarRocks 安装目录,并启动 backend 服务。

cd /data3/starrocks/StarRocks-3.3.0
./be/bin/start_be.sh --daemon

连接到 StarRocks

使用 MySQL 客户端连接到 StarRocks。

mysql -h 127.0.0.1 -P9030 -uroot

显示所有 Frontend 节点

执行以下命令查看所有 Frontend 节点的信息。

SHOW PROC '/frontends'\G

添加和下线 Backend 节点

通过以下命令可以添加一个新的 Backend 节点。

ALTER SYSTEM ADD BACKEND "x.x.x.x:9050";

可以通过以下命令下线 Backend 节点。

ALTER SYSTEM DECOMMISSION BACKEND "0.0.0.0:9050";
ALTER SYSTEM DECOMMISSION BACKEND "127.0.0.1:9050";

创建数据库和表

创建一个名为 hw_db 的数据库,并在其中创建一个名为 event_logs 的表。

CREATE DATABASE hw_db;
USE hw_db;

CREATE TABLE event_logs (
    id INT,
    event_name VARCHAR(255),
    event_time DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=OLAP
DISTRIBUTED BY HASH(id) BUCKETS 10;

插入一些数据到 event_logs 表中。

INSERT INTO event_logs (id, event_name, event_time) VALUES 
(1, 'Event 1', "2024-07-01 11:11:11"), 
(2, 'Event 2', "2024-07-01 12:12:12");

创建另一个名为 user_ping 的表。

CREATE TABLE user_ping (
    id BIGINT AUTO_INCREMENT,
    time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    idc VARCHAR(64),
    vendor VARCHAR(64),
    isp VARCHAR(64),
    ping INT,
    delay INT
) ENGINE=OLAP
COMMENT "user_ping"
DISTRIBUTED BY RANDOM BUCKETS 1
ORDER BY (time);

查看 user_ping 表的创建语句。

SHOW CREATE TABLE user_ping;

插入一些数据到 user_ping 表中。

INSERT INTO user_ping (idc, vendor, isp, ping, delay) VALUES 
("idc", "vendor", "isp", 11, 22), 
("idc", "vendor", "isp", 11, 22);

查询数据

执行查询以从 user_ping 表中选择数据。

SELECT id, idc, vendor, isp, ping, delay FROM user_ping;
SELECT time, vendor, isp, ping, delay FROM user_ping;

常用配置修改

以下是一些常用的配置修改示例,以帮助您优化和管理 StarRocks。

配置文件位置

StarRocks 的配置文件通常位于 conf/ 目录下,例如 fe.confbe.conf

修改 Frontend 配置

编辑 fe.conf 文件以更改 Frontend 的配置。例如,修改 HTTP 端口:

http_port = 8030

修改 Backend 配置

编辑 be.conf 文件以更改 Backend 的配置。例如,修改存储路径:

storage_root_path = /data/starrocks_storage

配置日志级别

可以在 fe.confbe.conf 文件中配置日志级别。例如,设置日志级别为 INFO

log_level = INFO

重新启动服务

在修改配置文件后,重新启动 Frontend 和 Backend 服务以使更改生效。

# 重启 Frontend
./fe/bin/stop_fe.sh
./fe/bin/start_fe.sh --daemon

# 重启 Backend
./be/bin/stop_be.sh
./be/bin/start_be.sh --daemon

测试脚本

import pymysql

# 配置连接参数
config = {
    'user': 'root',
    # 'password': 'your_password',
    'host': '127.0.0.1',
    'port': 9030,  # StarRocks 的默认端口
    'database': 'hw_db'
}
# INSERT INTO user_ping (idc, vendor, isp, ping, delay) VALUES ("idc", "vendor", "isp", 11, 22), ("idc", "vendor", "isp", 11, 22);

# 数据插入语句
insert_stmt = "INSERT INTO user_ping (idc, vendor, isp, ping, delay) VALUES (%s, %s, %s, %s, %s)"
import random, string
# 生成随机字符串
def random_string(length):
    letters = string.ascii_letters
    return ''.join(random.choice(letters) for i in range(length))

# 生成随机数据
def generate_random_data(num_records):
    data = []
    for _ in range(num_records):
        idc = random_string(5)
        vendor = random_string(6)
        isp = random_string(3)
        ping = random.randint(1, 100)
        delay = random.randint(1, 50)
        data.append((idc, vendor, isp, ping, delay))
    return data
import time
start_time = time.time()
count = 1000
num_records = 10000
for value in range(count):
    try:
        data = generate_random_data(num_records)
        connection = pymysql.connect(**config)
        cursor = connection.cursor()
        cursor.executemany(insert_stmt, data)
        connection.commit()
        print(f"{cursor.rowcount} records inserted successfully. {value}")
    except pymysql.MySQLError as e:
        print(f"Error: {e}")

cursor.close()
connection.close()
print('插入{}数据耗时{}'.format(count * num_records, time.time() - start_time))

# starrocks
# 插入 20 0000 数据耗时 52.86096715927124
# 插入 100 0000 数据耗时 265.4833595752716
# 插入 1000 0000 数据耗时 2716.260214805603 => 45.3 分钟
# 插入 1000 0000 数据耗时 2723.1344895362854
# 磁盘文件大小 2.6G
posted @ 2024-07-02 16:18  紫系流月  阅读(36)  评论(0编辑  收藏  举报