安装OceanBase
第一步是更新 yum 包。运行以下 bash 命令
sudo yum update
在服务器上安装OceanBase最简单的方法是使用官方的一体化安装包,它会在你的机器上安装OBD、OceanBase DBMS、OBProxy、obagent、Grafana和Prometheus。您可以通过运行以下代码来使用一体化安装:
bash -c "$(curl -s <https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/oceanbase-all-in-one/installer.sh>)"
此过程最多可能需要 5 分钟。安装完所有内容后,您将看到这样的“安装完成”屏幕。
或者,您可以使用 Docker 只需一行代码即可快速启动 OceanBase 服务器:
docker run -p 2881:2881 --name obstandalone -d oceanbase/oceanbase-ce
为简单起见,我将在本文的其余部分使用我们刚刚使用一体化软件包安装的演示实例。
下一步是通过键入以下命令来激活设置环境:
source ~/.oceanbase-all-in-one/bin/env.sh
然后我们可以运行 obd demo 命令来启动我们刚刚从一体化软件包安装的服务的演示实例。
obd demo
请注意,obd demo 命令仅建议用于演示目的,不应用于生产。
注意:更新您的 ulimits 配置
运行此命令后,您可能会遇到“打开的文件不得小于 20000(当前值:1024)”的错误,错误代码为 OBD-1007。根据OceanBase的文档,这个错误提示是我们的ulimits配置没有达到官方要求。
要更改 ulimits 配置,我们需要编辑 /etc/security/limits.conf 文件。ulimit 是一个内置的 Linux 配置,允许查看或限制单个用户消耗的系统资源量。出于演示目的,我们会将限制增加到很大或无限制。但在生产中,建议您遵循设置 ulimits 的最佳实践。
* soft nofile 655360
* hard nofile 655360
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited
* soft stack unlimited
* hard stack unlimited
要使配置生效,您需要注销会话并重新登录。之后,您可以通过运行以下命令来检查配置是否正确:
ulimit -a
如果重新配置成功,您可能会看到以下屏幕。
现在让我们obd demo再次运行命令。宾果游戏,我们有一个正在运行的 OceanBase 服务器。demo 命令还将为每个服务提供凭据。
+---------------------------------------------+
| observer |
+-----------+---------+------+-------+--------+
| ip | version | port | zone | status |
+-----------+---------+------+-------+--------+
| 127.0.0.1 | 4.0.0.0 | 2881 | zone1 | ACTIVE |
+-----------+---------+------+-------+--------+
obclient -h127.0.0.1 -P2881 -uroot -Doceanbase -A
+--------------------------------------------------+
| obagent |
+--------------+-------------+------------+--------+
| ip | server_port | pprof_port | status |
+--------------+-------------+------------+--------+
| 172.*.*.42 | 8088 | 8089 | active |
+--------------+-------------+------------+--------+
+-----------------------------------------------------+
| prometheus |
+--------------------------+------+----------+--------+
| url | user | password | status |
+--------------------------+------+----------+--------+
| <http://172>.*.*.42:9090 | | | active |
+--------------------------+------+----------+--------+
+-------------------------------------------------------------------+
| grafana |
+--------------------------------------+-------+-----------+--------+
| url | user | password | status |
+--------------------------------------+-------+-----------+--------+
| <http://172>.*.*.42:3000/d/oceanbase | admin | oceanbase | active |
+--------------------------------------+-------+-----------+--------+
+---------------------------------------------+
| obproxy |
+-----------+------+-----------------+--------+
| ip | port | prometheus_port | status |
+-----------+------+-----------------+--------+
| 127.0.0.1 | 2883 | 2884 | active |
+-----------+------+-----------------+--------+
obclient -h127.0.0.1 -P2883 -uroot -Doceanbase -A
demo running
连接到您的 OceanBase 客户端
现在让我们尝试使用 OBClient 连接我们的 OceanBase 实例,OBClient 是 OceanBase 基于 MariaDB CLI 的官方 CLI,可用于连接 OceanBase Server/Proxy。
由于一体机包中已经安装了 OBClient,您只需运行以下代码即可连接到它:
obclient -h127.0.0.1 -P2881 -uroot -Doceanbase -A
如果您已经有使用 MariaDB CLI 或 MySQL CLI 的经验,那么 OBClient 对您来说应该不会陌生。
在本演练中,我将尝试使用 OceanBase(双关语)创建一个关于海洋生物的数据库。首先,我将通过运行以下代码在我们的演示 OceanBase 实例中创建一个名为 MarineLife 的数据库:
CREATE DATABASE MarineLife DEFAULT CHARACTER SET UTF8 READ WRITE;
现在运行 SHOW DATABASES,我们将看到新创建的数据库。
现在我们已经在 OceanBase 中创建了一个数据库,我们可以尝试使用 SQL 向数据库中插入一些数据。
在 OceanBase 中运行 SQL
首先,让我们在 OBClient 中选择新建的 MarineLife 数据库。
USE MarineLife;
首先,我想在名为 Species 的 MarineLife 数据库中创建一个表,它具有 species_name、common_name、habitant 和 conservation_status 等属性。为此,我们需要创建一个表及其方案:
CREATE TABLE Species (
id INT AUTO_INCREMENT PRIMARY KEY,
species_name VARCHAR(255) NOT NULL,
common_name VARCHAR(255),
habitat VARCHAR(255),
conservation_status ENUM('Least Concern', 'Near Threatened', 'Vulnerable', 'Endangered', 'Critically Endangered', 'Extinct in the Wild', 'Extinct')
);
现在让我们用一些虚拟数据填充表格:
INSERT INTO Species (species_name, common_name, habitat, conservation_status)
VALUES ('Carcharodon carcharias', 'Great White Shark', 'Coastal and offshore waters', 'Vulnerable'),
('Delphinus delphis', 'Short-beaked Common Dolphin', 'Open seas', 'Least Concern'),
('Chelonia mydas', 'Green Sea Turtle', 'Tropical and subtropical oceans', 'Endangered'),
('Eubalaena glacialis', 'North Atlantic Right Whale', 'North Atlantic Ocean', 'Critically Endangered');
现在我们可以检查数据库表:
SELECT * FROM Species;
我们将看到我们刚刚插入到表中的数据。
从 TablePlus 连接 OceanBase
您可以使用 TablePlus 从本地计算机管理数据库。在此之前,您需要更改 AWS EC2 安全组以允许入站访问 2881 端口,这是默认的 OceanBase 端口。
为此,请选择您的 EC2 实例使用的安全组并编辑入站规则以允许访问 2881 端口。
请注意,以上设置仅用于演示目的。在生产中,您可能希望将允许的来源限制在有限的 IP 范围内。
在大多数情况下,您不想使用 root 用户远程访问您的数据库。我们可以创建一个名为 demo 的新用户,它只能访问 MarineLife 数据库。
要创建新用户,我们将使用以下命令:
CREATE USER 'demo'@'localhost' IDENTIFIED BY 'password';
接下来,我们将授予用户访问 MarineLife 数据库的权限:
GRANT ALL PRIVILEGES ON MarineLife.* TO 'demo'@'localhost';
现在我们可以使用演示用户凭据从 TablePlus 连接到 OceanBase 实例。连接后,我们可以从用户友好的图形界面查看和管理 MarineLife 数据库及其表格。
Host: YOUR_EC2_PUBLIC_IP_ADDRESS
Port: 2881
User: demo
Password: password
而且我在数据库中添加了几行。
这样,一个简单的安装过程就完成了!