快速上手 OceanBase 数据库单机部署与管理
本文档详细介绍了如何快速部署 OceanBase 单机版集群、查看集群基本信息、创建租户、创建数据库和用户,以及如何连接 OceanBase 集群。通过本指南,即使是初学者也能快速上手 OceanBase 数据库的各项操作。
部署单机版 OceanBase 集群
1. 部署集群环境
登录 ECS 主机
首先,登录到已部署 OceanBase 数据库的 ECS 主机,查看当前环境中是否已下载 OceanBase 安装包:$ ls | grep oceanbase
说明:若环境中未发现安装包,可以前往 OceanBase 下载中心获取相应安装包。
解压安装包
解压已下载的安装包:$ tar -xzf oceanbase-all-in-one-*.tar.gz
执行安装命令
进入解压后的安装包目录,并启动安装:$ cd oceanbase-all-in-one/bin/ $ ./install.sh
安装完成后,终端会显示如下提示信息:
##################################################################### Install Finished ===================================================================== Setup Environment: source ~/.oceanbase-all-in-one/bin/env.sh Start Web Service: obd web Quick Start: obd demo More Details: obd -h ===================================================================== [root@xxxxx bin]#
按提示执行加载环境变量的命令:
$ source ~/.oceanbase-all-in-one/bin/env.sh
说明:执行上述命令后不会有返回值,但环境变量已成功加载。
快速部署 OceanBase 集群
使用obd demo
命令快速部署一个单机版 OceanBase 集群:$ obd demo
成功执行后,终端将显示类似如下的提示信息:
demo running Trace ID: 560d174c-6818-11ee-a932-00163e0b7038 If you want to view detailed obd logs, please run: obd display-trace 560d174c-6818-11ee-a932-00163e0b7038
根据提示,从返回信息中获取集群连接串,例如:
+---------------------------------------------+ | obproxy | +-----------+------+-----------------+--------+ | ip | port | prometheus_port | status | +-----------+------+-----------------+--------+ | 127.0.0.1 | 2883 | 2884 | active | +-----------+------+-----------------+--------+ obclient -h127.0.0.1 -P2883 -uroot -Doceanbase -A
说明:
all_in_one
安装包包含obproxy
,因此可以使用 obproxy 下的连接串登录集群。验证部署是否成功
使用获取的连接串登录 OceanBase 集群:obclient -h127.0.0.1 -P2881 -uroot -Doceanbase -A
示例输出:
obclient -h127.0.0.1 -P2883 -uroot -Doceanbase -A Welcome to the OceanBase. Commands end with ; or \g. Your OceanBase connection id is 2 Server version: OceanBase_CE 4.2.1.0 (r100010022023081817-0bdf1c0c5674e88c5ae9a8d0ae4f8077465d7fae) (Built Aug 18 2023 17:32:49) Copyright (c) 2000, 2018, OceanBase ... Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. obclient [oceanbase]>
使用
exit
命令退出后,可在 Linux 命令行查看 observer 进程是否正在运行:ps -ef | grep observer
示例输出:
root 5354 1 17 17:29 ? 00:02:03 /root/oceanbase-ce/bin/observer -r 127.0.0.1:2882:2881 -p 2881 -P 2882 -z zone1 -c 1 -d /root/oceanbase-ce/store ... root 8765 1571 0 17:40 pts/0 00:00:00 grep --color=auto observer
2. 【可选】重启集群
若需要重启集群,可按照以下步骤操作:
检查当前运行的集群
查看当前运行的集群的 deployname:obd cluster list
示例输出:
+--------------------------------------------------+ | Cluster List | +------+-------------------------+-----------------+ | Name | Configuration Path | Status (Cached) | +------+-------------------------+-----------------+ | demo | /root/.obd/cluster/demo | running | +------+-------------------------+-----------------+ Trace ID: 7d37437c-681a-11ee-a8b4-00163e0b7038 If you want to view detailed obd logs, please run: obd display-trace 7d37437c-681a-11ee-a8b4-00163e0b7038
注意:这里的
demo
是obd
的 deployname,而不是 OceanBase 集群内部的 cluster_name。默认的集群名为obcluster
。重启集群
使用 deployname 重启集群:obd cluster restart demo
成功执行后,终端会提示类似
demo restart
的信息。
开机启动
方法一:使用 systemd 服务单元
实现 OceanBase 单机版集群的开机自动启动,利用 systemd 服务单元
- 创建 systemd 服务文件
使用文本编辑器创建一个新的 systemd 服务文件,例如 /etc/systemd/system/oceanbase.service
:
vi /etc/systemd/system/oceanbase.service
- 在服务文件中添加以下内容
将以下内容粘贴到文件中(根据实际安装路径和启动命令进行调整):
[Unit]
Description=OceanBase Single-Node Cluster
After=network.target
[Service]
Type=forking
ExecStart=obd cluster start demo
ExecStop=obd cluster stop demo
Restart=on-failure
User=root
WorkingDirectory=/root
[Install]
WantedBy=multi-user.target
说明:
ExecStart
:加载 OceanBase 环境变量并执行obd demo
启动集群。ExecStop
:可选,用于停止集群的命令。- 确保
source
路径、用户和工作目录与实际环境一致。
保存并退出编辑器
重新加载 systemd 配置
sudo systemctl daemon-reload
- 启用并启动 OceanBase 服务
- 启用开机启动:
sudo systemctl enable oceanbase.service
- 立即启动服务以验证配置:
sudo systemctl start oceanbase.service
- 检查服务状态
sudo systemctl status oceanbase.service
正常情况下,服务应处于“active (running)”状态。此后,每次系统启动时,systemd 会自动启动 OceanBase 集群。
方法二:使用 /etc/rc.local(适用于支持 rc.local 的系统)
- 编辑 /etc/rc.local 文件
打开 /etc/rc.local
文件(如果不存在,可创建之):
sudo vi /etc/rc.local
- 在文件末尾添加启动命令
在 exit 0
之前添加:
#!/bin/bash
source /root/.oceanbase-all-in-one/bin/env.sh
obd cluster start demo
说明:
- 确保使用正确的环境变量加载路径和启动命令。
- 如果
/etc/rc.local
文件开头未声明#!/bin/bash
,请添加之,以确保脚本按 Bash 解释执行。
保存并退出编辑器
赋予 /etc/rc.local 可执行权限
sudo chmod +x /etc/rc.local
- 重启验证
重启系统,确认 OceanBase 集群自动启动:
sudo reboot
重启后,可使用 ps -ef | grep observer
或连接 OceanBase 集群验证其是否已启动。
查看 OceanBase 集群基本信息
使用 all_in_one 安装包创建的社区版单机版 OceanBase 集群会默认创建一个 Zone、一个资源池 sys_pool、一个资源规格 sys_unit_config 以及一个 MySQL 模式的 SYS 租户。
1. 连接集群
使用 root 用户登录集群的 sys 租户:
obclient -h127.0.0.1 -P2881 -uroot@sys -Doceanbase -A
说明:此处 root 用户未设置密码,仅用于体验。在实际环境中,请根据需要配置相关用户密码。
2. 查看 Zone 信息
查询集群默认创建的 Zone 信息:
obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_ZONES;
查询结果示例:
+-------+----------------------------+----------------------------+--------+-----+------------+-----------+
| ZONE | CREATE_TIME | MODIFY_TIME | STATUS | IDC | REGION | TYPE |
+-------+----------------------------+----------------------------+--------+-----+------------+-----------+
| zone1 | 2023-05-27 22:25:04.469400 | 2023-05-27 22:25:04.469400 | ACTIVE | | sys_region | ReadWrite |
+-------+----------------------------+----------------------------+--------+-----+------------+-----------+
说明:使用 all_in_one 包创建的集群,默认在本机上创建一个 Zone,名为
zone1
,状态为可读写。
3. 查看节点信息
查询集群默认创建的节点信息:
obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_SERVERS;
查询结果示例:
+-----------+----------+----+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+
| SVR_IP | SVR_PORT | ID | ZONE | SQL_PORT | WITH_ROOTSERVER | STATUS | START_SERVICE_TIME | STOP_TIME | BLOCK_MIGRATE_IN_TIME | CREATE_TIME | MODIFY_TIME | BUILD_VERSION | LAST_OFFLINE_TIME |
+-----------+----------+----+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+
| 127.0.0.1 | 2882 | 1 | zone1 | 2881 | YES | ACTIVE | 2023-10-24 10:27:31.966797 | NULL | NULL | 2023-10-24 10:27:28.301290 | 2023-10-24 10:27:33.555849 | 4.2.1.0_100000102023092807-... | NULL |
+-----------+----------+----+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+
说明:默认创建了一个本地节点,IP 为
127.0.0.1
,SQL 端口为2881
,RPC 端口为2882
,位于zone1
上。
4. 查看资源信息
4.1 查看资源池信息
obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_RESOURCE_POOLS;
结果示例:
+------------------+----------+-----------+----------------------------+----------------------------+------------+----------------+-----------+--------------+
| RESOURCE_POOL_ID | NAME | TENANT_ID | CREATE_TIME | MODIFY_TIME | UNIT_COUNT | UNIT_CONFIG_ID | ZONE_LIST | REPLICA_TYPE |
+------------------+----------+-----------+----------------------------+----------------------------+------------+----------------+-----------+--------------+
| 1 | sys_pool | 1 | 2023-05-27 22:25:04.366593 | 2023-05-27 22:25:04.374066 | 1 | 1 | zone1 | FULL |
+------------------+----------+-----------+----------------------------+----------------------------+------------+----------------+-----------+--------------+
说明:默认创建的资源池名称为
sys_pool
,绑定了资源规格 ID 为 1 的配置,并分配在zone1
上。
4.2 查看资源规格信息
obclient [oceanbase]> SELECT * FROM DBA_OB_UNIT_CONFIGS;
结果示例:
+----------------+-----------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
| UNIT_CONFIG_ID | NAME | CREATE_TIME | MODIFY_TIME | MAX_CPU | MIN_CPU | MEMORY_SIZE | LOG_DISK_SIZE | MAX_IOPS | MIN_IOPS | IOPS_WEIGHT |
+----------------+-----------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
| 1 | sys_unit_config | 2023-05-27 22:25:04.363371 | 2023-05-27 22:25:04.363371 | 1 | 1 | 2147483648 | 2147483648 | 10000 | 10000 | 1 |
+----------------+-----------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
说明:系统默认的资源规格
sys_unit_config
定义了 CPU、内存和日志盘大小等资源信息。
4.3 查看 Unit 信息
obclient [oceanbase]> SELECT * FROM GV$OB_UNITS;
结果示例:
+-----------+----------+---------+-----------+-------+-----------+------------+---------+---------+-------------+---------------------+---------------------+-------------+---------------+-----------------+------------------+--------+----------------------------+
| SVR_IP | SVR_PORT | UNIT_ID | TENANT_ID | ZONE | ZONE_TYPE | REGION | MAX_CPU | MIN_CPU | MEMORY_SIZE | MAX_IOPS | MIN_IOPS | IOPS_WEIGHT | LOG_DISK_SIZE | LOG_DISK_IN_USE | DATA_DISK_IN_USE | STATUS | CREATE_TIME |
+-----------+----------+---------+-----------+-------+-----------+------------+---------+---------+-------------+---------------------+---------------------+-------------+---------------+-----------------+------------------+--------+----------------------------+
| 127.0.0.1 | 2882 | 1 | 1 | zone1 | ReadWrite | sys_region | 2 | 2 | 2147483648 | 9223372036854775807 | 9223372036854775807 | 2 | 2147483648 | 87471014 | 0 | NORMAL | 2023-10-24 14:14:26.026707 |
+-----------+----------+---------+-----------+-------+-----------+------------+---------+---------+-------------+---------------------+---------------------+-------------+---------------+-----------------+------------------+--------+----------------------------+
4.4 查看 OBServer 信息
obclient [oceanbase]> SELECT * FROM GV$OB_SERVERS;
结果示例:
+-----------+----------+-------+----------+--------------+------------------+--------------+------------------+--------------+--------------+-------------------+-------------------+-----------------+--------------------+------------------+-------------------------+--------------+-------------------------+-----------------------+
| SVR_IP | SVR_PORT | ZONE | SQL_PORT | CPU_CAPACITY | CPU_CAPACITY_MAX | CPU_ASSIGNED | CPU_ASSIGNED_MAX | MEM_CAPACITY | MEM_ASSIGNED | LOG_DISK_CAPACITY | LOG_DISK_ASSIGNED | LOG_DISK_IN_USE | DATA_DISK_CAPACITY | DATA_DISK_IN_USE | DATA_DISK_HEALTH_STATUS | MEMORY_LIMIT | DATA_DISK_ABNORMAL_TIME | SSL_CERT_EXPIRED_TIME |
+-----------+----------+-------+----------+--------------+------------------+--------------+------------------+--------------+--------------+-------------------+-------------------+-----------------+--------------------+------------------+-------------------------+--------------+-------------------------+-----------------------+
| 127.0.0.1 | 2882 | zone1 | 2881 | 16 | 16 | 1 | 1 | 5368709120 | 2147483648 | 16106127360 | 2147483648 | 134217728 | 21474836480 | 4194304 | NORMAL | 6442450944 | NULL | NULL |
+-----------+----------+-------+----------+--------------+------------------+--------------+------------------+--------------+--------------+-------------------+-------------------+-----------------+--------------------+------------------+-------------------------+--------------+-------------------------+-----------------------+
说明:这里显示了 OBServer 的资源分配情况,如 CPU、内存、磁盘容量等。
4.5 查询 Unit 列表和部署位置
查询当前集群的 unit 对应的租户、所在的主机等详细信息:
obclient [oceanbase]> SELECT
/*+ QUERY_TIMEOUT(5000000) */
t1.UNIT_ID,
t1.RESOURCE_POOL_ID,
t1.ZONE,
t1.SVR_IP,
t1.SVR_PORT,
t1.STATUS,
t2.REPLICA_TYPE,
t2.TENANT_ID,
t3.TENANT_NAME,
t2.NAME AS RESOURCE_POOL_NAME,
t1.MIGRATE_FROM_SVR_IP,
t1.MIGRATE_FROM_SVR_PORT,
t1.MANUAL_MIGRATE
FROM
oceanbase.DBA_OB_UNITS AS t1
JOIN oceanbase.DBA_OB_RESOURCE_POOLS AS t2 ON t1.RESOURCE_POOL_ID = t2.RESOURCE_POOL_ID
JOIN oceanbase.DBA_OB_TENANTS t3 ON t2.TENANT_ID = t3.TENANT_ID;
查询结果示例:
+---------+------------------+-------+-----------+----------+--------+--------------+-----------+-------------+--------------------+---------------------+-----------------------+----------------+
| UNIT_ID | RESOURCE_POOL_ID | ZONE | SVR_IP | SVR_PORT | STATUS | REPLICA_TYPE | TENANT_ID | TENANT_NAME | RESOURCE_POOL_NAME | MIGRATE_FROM_SVR_IP | MIGRATE_FROM_SVR_PORT | MANUAL_MIGRATE |
+---------+------------------+-------+-----------+----------+--------+--------------+-----------+-------------+--------------------+---------------------+-----------------------+----------------+
| 1 | 1 | zone1 | 127.0.0.1 | 2882 | ACTIVE | FULL | 1 | sys | sys_pool | NULL | NULL | NULL |
+---------+------------------+-------+-----------+----------+--------+--------------+-----------+-------------+--------------------+---------------------+-----------------------+----------------+
4.6 查看租户信息
查询默认的 SYS 租户信息:
obclient [oceanbase]> SELECT * FROM DBA_OB_TENANTS;
结果示例:
+-----------+-------------+-------------+----------------------------+----------------------------+--------------+---------------+-------------------+--------------------+--------+---------------+--------+-------------+-------------------+------------------+----------+----------------+--------------+--------------------+--------------+----------------------------+----------+------------+-----------+
| TENANT_ID | TENANT_NAME | TENANT_TYPE | CREATE_TIME | MODIFY_TIME | PRIMARY_ZONE | LOCALITY | PREVIOUS_LOCALITY | COMPATIBILITY_MODE | STATUS | IN_RECYCLEBIN | LOCKED | TENANT_ROLE | SWITCHOVER_STATUS | SWITCHOVER_EPOCH | SYNC_SCN | REPLAYABLE_SCN | READABLE_SCN | RECOVERY_UNTIL_SCN | LOG_MODE | ARBITRATION_SERVICE_STATUS | UNIT_NUM | COMPATIBLE | MAX_LS_ID |
+-----------+-------------+-------------+----------------------------+----------------------------+--------------+---------------+-------------------+--------------------+--------+---------------+--------+-------------+-------------------+------------------+----------+----------------+--------------+--------------------+--------------+----------------------------+----------+------------+-----------+
| 1 | sys | SYS | 2023-10-24 10:27:27.897488 | 2023-10-24 10:27:27.897488 | RANDOM | FULL{1}@zone1 | NULL | MYSQL | NORMAL | NO | NO | PRIMARY | NORMAL | 0 | NULL | NULL | NULL | NULL | NOARCHIVELOG | DISABLED | 1 | 4.2.1.0 | 1 |
+-----------+-------------+-------------+----------------------------+----------------------------+--------------+---------------+-------------------+--------------------+--------+---------------+--------+-------------+-------------------+------------------+----------+----------------+--------------+--------------------+--------------+----------------------------+----------+------------+-----------+
说明:默认 SYS 租户为 MySQL 模式租户,其名称为
sys
,Tenant_ID 为1
,Primary Zone 为RANDOM
。
4.7 查看租户资源部署位置
obclient [oceanbase]> SELECT a.TENANT_NAME, a.TENANT_ID, b.SVR_IP
FROM DBA_OB_TENANTS a, GV$OB_UNITS b
WHERE a.TENANT_ID = b.TENANT_ID;
查询结果示例:
+-------------+-----------+-----------+
| TENANT_NAME | TENANT_ID | SVR_IP |
+-------------+-----------+-----------+
| sys | 1 | 127.0.0.1 |
+-------------+-----------+-----------+
说明:SYS 租户的资源部署在本地节点
127.0.0.1
上。
4.8 查询数据库列表
obclient [oceanbase]> SELECT
o.CREATED AS GMT_CREATE,
o.OBJECT_ID AS DATABASE_ID,
d.DATABASE_NAME,
c.ID AS COLLATION_TYPE,
NULL AS PRIMARY_ZONE,
0 AS READ_ONLY
FROM
oceanbase.DBA_OB_DATABASES d
JOIN oceanbase.DBA_OBJECTS o
ON d.DATABASE_NAME = o.OBJECT_NAME
JOIN information_schema.collations c
ON d.COLLATION = c.COLLATION_NAME
WHERE
o.OBJECT_TYPE = 'DATABASE';
查询结果示例:
+---------------------+-------------+--------------------+----------------+--------------+-----------+
| GMT_CREATE | DATABASE_ID | DATABASE_NAME | COLLATION_TYPE | PRIMARY_ZONE | READ_ONLY |
+---------------------+-------------+--------------------+----------------+--------------+-----------+
| 2023-07-20 16:32:22 | 500001 | test | 45 | NULL | 0 |
| ... | ... | ... | ...| ... | ... |
+---------------------+-------------+--------------------+----------------+--------------+-----------+
说明:通过以上 SQL 可查询集群中所有已创建的数据库信息。
4.9 查看租户白名单
obclient> SHOW VARIABLES LIKE 'ob_tcp_invited_nodes';
查询结果示例:
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| ob_tcp_invited_nodes | % |
+----------------------+-------+
说明:默认情况下,租户白名单设置为
%
,表示允许所有 IP 连接该租户。
4.10 查看租户系统变量
查询 session 和 global 级别的系统变量,例如 ob_query_timeout
:
obclient [oceanbase]> SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME = 'ob_query_timeout';
结果示例:
+------------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+------------------+----------------+
| ob_query_timeout | 10000000 |
+------------------+----------------+
查询 global 变量:
obclient [oceanbase]> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'ob_query_timeout';
结果示例:
+------------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+------------------+----------------+
| ob_query_timeout | 10000000 |
+------------------+----------------+
4.11 查看集群配置项
通过查询 GV$OB_PARAMETERS 视图查看指定配置项:
obclient [oceanbase]> SELECT * FROM GV$OB_PARAMETERS WHERE NAME LIKE '%syslog_level%';
结果示例:
+-----------+----------+-------+---------+-----------+--------------+-----------+-------+------------------------------------------------------------------------------------------------------------------------------+----------+-------------------+
| SVR_IP | SVR_PORT | ZONE | SCOPE | TENANT_ID | NAME | DATA_TYPE | VALUE | INFO | SECTION | EDIT_LEVEL |
+-----------+----------+-------+---------+-----------+--------------+-----------+-------+------------------------------------------------------------------------------------------------------------------------------+----------+-------------------+
| 127.0.0.1 | 2882 | zone1 | CLUSTER | NULL | syslog_level | NULL | WDIAG | specifies the current level of logging. There are DEBUG, TRACE, WDIAG, EDIAG, INFO, WARN, ERROR, seven different log levels. | OBSERVER | DYNAMIC_EFFECTIVE |
+-----------+----------+-------+---------+-----------+--------------+-----------+-------+------------------------------------------------------------------------------------------------------------------------------+----------+-------------------+
创建租户
OceanBase 集群支持 MySQL 模式和 Oracle 模式的租户。本文档以开源版 OceanBase 为例,仅支持 MySQL 模式的租户创建。创建租户的流程包括三个步骤:创建资源规格、创建资源池、创建租户。
注意事项:创建租户前,请做好充分的资源规划。本文以 root 用户为例,所有操作通过 SQL 命令行进行。
步骤一:创建资源规格
资源规格定义了 CPU、内存、磁盘空间、IOPS 等资源项。
查看已有资源规格
obclient [oceanbase]> SELECT * FROM DBA_OB_UNIT_CONFIGS;
示例输出显示系统默认的
sys_unit_config
规格。创建新的资源规格
示例:创建名称为s1_unit_config
的资源规格,配置为 1 核 CPU、2G 内存、6G 日志盘空间:obclient [oceanbase]> CREATE RESOURCE UNIT s1_unit_config MEMORY_SIZE = '2G', MAX_CPU = 1, MIN_CPU = 1, LOG_DISK_SIZE = '6G', MAX_IOPS = 10000, MIN_IOPS = 10000, IOPS_WEIGHT = 1;
参数说明:
UNIT_NAME
:资源规格名称。MAX_CPU
和MIN_CPU
:CPU 上下限,单位为核。MEMORY_SIZE
:内存大小,最小为 1G。LOG_DISK_SIZE
:日志盘空间,默认值为内存的 3 倍,最小为 2G。- IOPS 参数用于租户间 IOPS 隔离,可选。
确认规格创建成功
obclient [oceanbase]> SELECT * FROM DBA_OB_UNIT_CONFIGS WHERE NAME = 's1_unit_config';
步骤二:创建资源池
创建资源池时,可以指定刚创建的资源规格。
查看已有资源池
obclient [oceanbase]> SELECT * FROM DBA_OB_RESOURCE_POOLS;
创建新的资源池
示例:创建名称为mq_pool_01
的资源池,在zone1
区域创建 1 个 Unit,使用前面创建的s1_unit_config
规格:obclient [oceanbase]> CREATE RESOURCE POOL mq_pool_01 UNIT='s1_unit_config', UNIT_NUM=1, ZONE_LIST=('zone1');
参数说明:
UNIT
:指定资源规格名称。UNIT_NUM
:在目标 Zone 中创建的 Unit 数量。ZONE_LIST
:指定资源池的区域分布列表。
确认资源池创建成功
obclient [oceanbase]> SELECT * FROM DBA_OB_RESOURCE_POOLS WHERE NAME = 'mq_pool_01';
步骤三:创建租户
在创建完资源池后,即可创建租户并将资源池分配给租户。
查看现有租户信息
obclient [oceanbase]> SELECT * FROM DBA_OB_TENANTS;
创建新的租户
示例:创建名为mq_t1
的租户,设置 Primary Zone 为zone1
,指定资源池为mq_pool_01
,并允许所有 IP 连接:obclient [oceanbase]> CREATE TENANT IF NOT EXISTS mq_t1 PRIMARY_ZONE='zone1', RESOURCE_POOL_LIST=('mq_pool_01') SET OB_TCP_INVITED_NODES='%';
参数说明:
IF NOT EXISTS
:可选参数,若租户已存在则跳过创建。tenant_name
:租户名称,2~128 个字符,只能包含字母、数字和下划线,以字母或下划线开头。PRIMARY_ZONE
:指定租户的主区域。可使用RANDOM
表示随机选择。RESOURCE_POOL_LIST
:指定分配给租户的资源池列表。多个资源池要求 UNIT_NUM 一致且 Zone 互斥。OB_TCP_INVITED_NODES
:租户连接的 IP 白名单,%
表示允许所有客户端连接。
确认租户创建成功
obclient [oceanbase]> SELECT * FROM DBA_OB_TENANTS WHERE TENANT_NAME = 'mq_t1';
结果示例:
+-----------+-------------+-------------+----------------------------+----------------------------+--------------+---------------+-------------------+--------------------+--------+... | 1002 | mq_t1 | USER | 2023-10-24 10:47:07.457885 | 2023-10-24 10:47:23.921931 | zone1 | FULL{1}@zone1 | NULL | MYSQL | NORMAL | ... +-----------+-------------+-------------+----------------------------+----------------------------+--------------+---------------+-------------------+--------------------+--------+...
修改租户管理员密码并重新登录
租户创建成功后,默认管理员用户(MySQL 模式为 root)的密码为空。建议立即修改密码。 退出当前连接:obclient> exit
重新登录新租户
mq_t1
的 root 用户:$ obclient -h127.0.0.1 -P2881 -uroot@mq_t1 -A
在连接后修改密码:
obclient [(none)]> ALTER USER root IDENTIFIED BY '新密码';
修改密码成功后,退出并使用新的密码重新登录:
$ obclient -h127.0.0.1 -P2881 -uroot@mq_t1 -p新密码 -A
创建数据库
在 OceanBase 集群的 MySQL 模式下,Database 是数据库对象的集合。创建数据库有助于分离管理不同应用的数据。
权限要求
确保当前登录用户拥有 CREATE
权限。默认情况下,root 用户已具备此权限。
创建步骤
连接集群并切换到 sys 租户
$ obclient -h127.0.0.1 -uroot@sys -P2881 -Doceanbase -A
创建数据库 创建名为
testdb
的数据库,并指定字符集为utf8mb4
:obclient [(none)]> CREATE DATABASE testdb DEFAULT CHARACTER SET utf8mb4;
查询数据库列表验证创建
obclient [oceanbase]> SHOW DATABASES;
输出应包含
testdb
数据库:+--------------------+ | Database | +--------------------+ | information_schema | | LBACSYS | | mysql | | oceanbase | | ORAAUDITOR | | SYS | | test | | testdb | +--------------------+
使用创建好的数据库
obclient [oceanbase]> USE testdb;
提示符将切换至
[testdb]>
,表示当前数据库为testdb
。
创建用户
在日常操作中,往往需要为应用创建具有特定权限的数据库用户。
权限要求
创建用户需要 CREATE USER
权限。默认情况下,仅集群管理员和租户管理员拥有此权限。
用户命名规则
- 用户名在同一租户内唯一,不同租户下可重名。
- 用户名长度不超过 64 个字节,建议遵循以字母开头、包含字母、数字和下划线的命名规则。
创建步骤
连接指定租户 以 root 用户登录
mq_t1
租户,并切换到test
数据库:$ obclient -h127.0.0.1 -P2881 -uroot@mq_t1 -Dtest -A
创建普通用户并授权
- 创建用户
test
并设置密码:obclient [test]> CREATE USER 'test' IDENTIFIED BY '密码';
- 授予用户
test
对testdb
库中所有表的 SELECT 权限:obclient [test]> GRANT SELECT ON testdb.* TO test;
- 创建用户
查看创建的用户
obclient [(test)]> SELECT user FROM mysql.user WHERE user='test';
输出:
+------+ | user | +------+ | test | +------+ 1 row in set
创建超级权限用户
- 创建用户
dba_test
并设置密码:obclient [test]> CREATE USER 'dba_test' IDENTIFIED BY '密码';
- 授予
dba_test
超级权限:obclient [test]> GRANT ALL ON *.* TO dba_test;
说明:超级权限用户仅为示例,在生产环境中应遵循最小权限原则。
- 创建用户
查看用户权限
- 查看用户
test
被授予的权限:输出示例:obclient [test]> SHOW GRANTS FOR test;
+--------------------------------------+ | Grants for test@% | +--------------------------------------+ | GRANT USAGE ON *.* TO 'test' | | GRANT SELECT ON `testdb`.* TO 'test' | +--------------------------------------+
- 查看用户级权限:
obclient [test]> SELECT * FROM mysql.user WHERE user='test'\G;
- 查看数据库级权限:
obclient [test]> SELECT * FROM mysql.db WHERE user='test'\G;
- 查看用户
连接 OceanBase 集群
本节介绍如何使用 OBClient 连接 OceanBase 集群的不同租户。
连接操作
基本连接命令格式
obclient -hIP -u用户名@租户名#集群名 -P端口 -p密码 -c -A -D数据库名
参数说明:
-h
:OceanBase 节点 IP 地址。-u
:连接账户,格式为用户名@租户名#集群名
。例如root@sys#obcluster
。-P
:连接端口,默认2881
(直连方式)或2883
(通过 OBProxy)。-p
:密码,可选参数,若不指定则会提示输入密码。-c
:在 MySQL 运行环境中不忽略注释。-A
:连接时不自动获取统计信息。-D
:指定要访问的数据库名称。
示例连接 使用 OBClient 连接
sys
租户:$ obclient -h127.0.0.1 -uroot@sys -P2881 -Doceanbase -A
成功连接后,终端提示符类似于:
Welcome to the OceanBase. Commands end with ; or \g. Your OceanBase connection id is 3221684181 Server version: OceanBase 4.2.1.0 (Built ...) obclient [oceanbase]>
输入
exit
或按Ctrl+D
可退出 OBClient 命令行。
参考链接
通过本指南,您已经了解了从部署单机版 OceanBase 集群到基本管理操作的全过程。本文档覆盖了集群部署、资源配置、租户和数据库管理以及用户管理等方方面面,帮助您快速上手 OceanBase 数据库。