外观
OceanBase 常用命令
集群管理命令
OceanBase 集群管理命令用于监控和维护集群的运行状态,包括查看集群信息、资源使用情况、节点管理和配置修改等。
集群状态查询
通过以下命令可以查看 OceanBase 集群的整体状态、版本信息和节点详情。
查看集群整体状态
sql
-- 查看集群状态,返回集群的基本信息和健康状态
SHOW CLUSTER STATUS;
-- 查看集群版本信息,包括版本号、编译时间等
SELECT * FROM oceanbase.GV$OB_VERSION;
-- 查看集群所有节点信息,包括IP、状态、所属Zone等
SELECT * FROM oceanbase.GV$OB_SERVERS;查看集群资源使用情况
sql
-- 查看指定Zone(如zone1)的CPU使用情况
SELECT * FROM oceanbase.GV$OB_SERVERS WHERE zone = 'zone1';
-- 查看集群内存使用情况,将内存转换为GB单位
SELECT svr_ip, mem_total/1024/1024/1024 AS mem_total_gb, mem_used/1024/1024/1024 AS mem_used_gb
FROM oceanbase.GV$OB_SERVERS;
-- 查看集群磁盘使用情况,将磁盘转换为GB单位
SELECT svr_ip, disk_total/1024/1024/1024 AS disk_total_gb, disk_used/1024/1024/1024 AS disk_used_gb
FROM oceanbase.GV$OB_SERVERS;集群维护命令
用于集群节点的添加、删除、重启、停止以及集群配置的查看和修改。
节点管理命令
sql
-- 添加新节点到指定Zone
-- <new-server-ip>: 新节点的IP地址
-- <rpc-port>: 新节点的RPC端口
-- <zone-name>: 新节点所属的Zone名称
ALTER SYSTEM ADD SERVER '<new-server-ip>:<rpc-port>' ZONE '<zone-name>';
-- 从集群中删除节点
-- <server-ip>: 要删除的节点IP
-- <rpc-port>: 要删除的节点RPC端口
ALTER SYSTEM DELETE SERVER '<server-ip>:<rpc-port>';
-- 重启指定节点
ALTER SYSTEM RESTART SERVER '<server-ip>:<rpc-port>';
-- 停止指定节点
ALTER SYSTEM STOP SERVER '<server-ip>:<rpc-port>';集群配置命令
sql
-- 查看集群级别的配置参数,过滤包含'cluster'的参数
SHOW PARAMETERS LIKE '%cluster%' SCOPE = CLUSTER;
-- 修改集群级别的配置参数
-- <parameter_name>: 要修改的参数名
-- <value>: 新的参数值
ALTER SYSTEM SET <parameter_name> = <value> SCOPE = CLUSTER;
-- 查看节点级别的内存相关配置
SHOW PARAMETERS LIKE '%memory_limit%' SCOPE = SERVER;
-- 修改指定节点的配置参数
ALTER SYSTEM SET <parameter_name> = <value> SCOPE = SERVER WHERE server = '<server-ip>:<rpc-port>';租户管理命令
OceanBase 是多租户架构,租户管理命令用于创建、修改、查看和管理租户,以及管理租户的资源。
租户创建与管理
创建租户
sql
-- 创建租户,指定字符集、Zone列表、主Zone和资源池
CREATE TENANT <tenant-name>
CHARSET = utf8mb4, -- 字符集设置为utf8mb4,支持emoji等特殊字符
ZONE_LIST = ('zone1', 'zone2', 'zone3'), -- 租户分布的Zone列表
PRIMARY_ZONE = 'zone1,zone2,zone3', -- 租户主Zone设置
RESOURCE_POOL_LIST = ('<resource-pool-name>'); -- 租户使用的资源池
-- 查看所有租户列表
SELECT * FROM oceanbase.DBA_OB_TENANTS;
-- 查看租户状态,只显示租户ID、名称和状态
SELECT tenant_id, tenant_name, status FROM oceanbase.GV$OB_TENANTS;修改租户
sql
-- 为租户添加新的资源池
ALTER TENANT <tenant-name> RESOURCE_POOL_LIST ADD ('<new-resource-pool-name>');
-- 修改租户主可用区设置
ALTER TENANT <tenant-name> SET PRIMARY_ZONE = '<new-primary-zone>';
-- 停止指定租户
ALTER SYSTEM STOP TENANT <tenant-name>;
-- 启动指定租户
ALTER SYSTEM START TENANT <tenant-name>;租户资源管理
资源管理是 OceanBase 多租户架构的核心,包括资源单元和资源池的创建与管理。
资源池管理
sql
-- 创建资源单元,定义CPU、内存、IOPS等资源限制
CREATE RESOURCE UNIT <unit-name>
MAX_CPU = 8, -- 最大CPU核数
MIN_CPU = 8, -- 最小CPU核数
MEMORY_SIZE = '64G', -- 内存大小
MAX_IOPS = 10000, -- 最大IOPS
MIN_IOPS = 10000, -- 最小IOPS
IOPS_WEIGHT = 1, -- IOPS权重
LOG_DISK_SIZE = '128G'; -- 日志磁盘大小
-- 创建资源池,关联资源单元和Zone
CREATE RESOURCE POOL <pool-name>
UNIT = '<unit-name>', -- 关联的资源单元
UNIT_NUM = 3, -- 每个Zone中的资源单元数量
ZONE_LIST = ('zone1', 'zone2', 'zone3'); -- 资源池分布的Zone列表
-- 查看所有资源池信息
SELECT * FROM oceanbase.DBA_OB_RESOURCE_POOLS;备份恢复命令
备份恢复是数据库运维的重要组成部分,OceanBase 提供了全面的备份恢复命令,支持全量备份、增量备份和点-in-time恢复等功能。
备份管理
全量备份
sql
-- 创建指定数据库的全量备份
BACKUP DATABASE <database-name>;
-- 创建指定租户的全量备份
BACKUP TENANT <tenant-name>;
-- 查看所有备份任务的执行情况
SELECT * FROM oceanbase.GV$OB_BACKUP_TASKS;
-- 查看所有备份集的信息
SELECT * FROM oceanbase.GV$OB_BACKUP_SETS;增量备份
sql
-- 创建指定数据库的增量备份,基于最新的全量备份
BACKUP DATABASE <database-name> INCREMENTAL FROM LATEST FULL;
-- 创建指定租户的增量备份,基于最新的全量备份
BACKUP TENANT <tenant-name> INCREMENTAL FROM LATEST FULL;恢复管理
全量恢复
sql
-- 从指定备份路径恢复数据库
RESTORE DATABASE <database-name> FROM '<backup-path>';
-- 从指定备份路径恢复租户
RESTORE TENANT <tenant-name> FROM '<backup-path>';点-in-time恢复
sql
-- 恢复数据库到指定时间点
RESTORE DATABASE <database-name> FROM '<backup-path>' UNTIL TIMESTAMP '2023-10-01 12:00:00';
-- 恢复租户到指定时间点
RESTORE TENANT <tenant-name> FROM '<backup-path>' UNTIL TIMESTAMP '2023-10-01 12:00:00';监控诊断命令
监控诊断命令用于实时监控 OceanBase 集群的性能状态、诊断问题和排查故障,包括会话监控、慢查询监控、集群诊断和节点诊断等。
性能监控
会话与连接监控
sql
-- 查看活跃会话,排除Sleep状态的会话
SELECT * FROM oceanbase.GV$OB_PROCESSLIST WHERE command != 'Sleep';
-- 查看会话等待事件,了解会话正在等待什么资源
SELECT * FROM oceanbase.GV$OB_SESSION_WAIT;
-- 查看连接统计信息,了解连接的来源和数量
SELECT * FROM oceanbase.GV$OB_CONNECTION_STATISTICS;慢查询监控
sql
-- 查看慢查询日志,按请求时间倒序排列
SELECT * FROM oceanbase.GV$OB_SLOW_QUERY ORDER BY request_time DESC;
-- 查看慢查询统计信息,了解慢查询的分布和趋势
SELECT * FROM oceanbase.GV$OB_SLOW_QUERY_STATISTICS;诊断命令
集群诊断
sql
-- 查看集群事件,了解集群中发生的重要事件
SELECT * FROM oceanbase.GV$OB_EVENTS ORDER BY event_time DESC;
-- 查看集群错误日志,了解集群中发生的错误
SELECT * FROM oceanbase.GV$OB_ERRORS ORDER BY error_time DESC;
-- 查看异常的分区副本,找出状态不正常的副本
SELECT * FROM oceanbase.GV$OB_PARTITION_REPLICA WHERE status != 'NORMAL';节点诊断
sql
-- 查看节点负载情况,了解每个节点的负载水平
SELECT * FROM oceanbase.GV$OB_SERVER_LOAD;
-- 查看节点内存使用情况,了解内存的分配和使用
SELECT * FROM oceanbase.GV$OB_MEMORY_USAGE;
-- 查看节点IO统计信息,了解磁盘IO的使用情况
SELECT * FROM oceanbase.GV$OB_IO_STAT;数据管理命令
数据管理命令用于创建和管理数据库对象(如表、索引)以及对数据进行增删改查操作。
表与索引管理
创建与管理表
sql
-- 创建表,包括列定义和分区设置
CREATE TABLE <table-name> (
<column1> <data-type> PRIMARY KEY, -- 主键列
<column2> <data-type>, -- 普通列
...
) PARTITION BY <partition-type> (...)
PARTITIONS <num>; -- 分区数
-- 查看指定数据库中的表列表
SELECT * FROM information_schema.TABLES WHERE table_schema = '<database-name>';
-- 修改表结构,添加新列
ALTER TABLE <table-name> ADD COLUMN <column-name> <data-type>;
-- 删除表
DROP TABLE <table-name>;索引管理
sql
-- 创建索引,提高查询性能
CREATE INDEX <index-name> ON <table-name> (<column1>, <column2>, ...);
-- 查看指定表的索引信息
SELECT * FROM information_schema.STATISTICS WHERE table_schema = '<database-name>' AND table_name = '<table-name>';
-- 删除索引
DROP INDEX <index-name> ON <table-name>;数据操作命令
数据查询
sql
-- 基本查询,查询表中满足条件的所有列
SELECT * FROM <table-name> WHERE <condition>;
-- 聚合查询,计算行数和平均值,并按指定列分组
SELECT COUNT(*), AVG(<column-name>) FROM <table-name> GROUP BY <group-column>;
-- 连接查询,连接两个表并查询相关数据
SELECT * FROM <table1> JOIN <table2> ON <table1>.<column> = <table2>.<column>;数据修改
sql
-- 插入数据,向表中插入一行或多行数据
INSERT INTO <table-name> (<column1>, <column2>, ...) VALUES (<value1>, <value2>, ...);
-- 更新数据,修改表中满足条件的行
UPDATE <table-name> SET <column1> = <value1>, <column2> = <value2> WHERE <condition>;
-- 删除数据,删除表中满足条件的行
DELETE FROM <table-name> WHERE <condition>;权限管理命令
权限管理命令用于创建和管理用户、角色,以及授予和回收权限,确保数据库的安全性和访问控制。
用户与角色管理
用户管理
sql
-- 创建用户并设置密码
CREATE USER <user-name> IDENTIFIED BY '<password>';
-- 查看所有用户列表
SELECT * FROM mysql.user;
-- 修改用户密码
ALTER USER <user-name> IDENTIFIED BY '<new-password>';
-- 删除用户
DROP USER <user-name>;角色管理
sql
-- 创建角色
CREATE ROLE <role-name>;
-- 授予角色对指定表的SELECT和INSERT权限
GRANT SELECT, INSERT ON <database-name>.<table-name> TO <role-name>;
-- 将角色授予给用户
GRANT <role-name> TO <user-name>;
-- 在当前会话中激活角色
SET ROLE <role-name>;权限授予与回收
授予权限
sql
-- 授予用户对指定数据库的所有权限
GRANT ALL PRIVILEGES ON <database-name>.* TO <user-name>;
-- 授予用户对指定表的SELECT、INSERT、UPDATE、DELETE权限
GRANT SELECT, INSERT, UPDATE, DELETE ON <database-name>.<table-name> TO <user-name>;
-- 授予用户系统级权限,如CREATE USER和RELOAD
GRANT CREATE USER, RELOAD ON *.* TO <user-name>;回收权限
sql
-- 回收用户对指定数据库的所有权限
REVOKE ALL PRIVILEGES ON <database-name>.* FROM <user-name>;
-- 回收用户对指定表的DELETE权限
REVOKE DELETE ON <database-name>.<table-name> FROM <user-name>;
-- 回收用户的RELOAD系统权限
REVOKE RELOAD ON *.* FROM <user-name>;常见问题(FAQ)
Q1: 如何快速查看集群的整体健康状态?
A1: 使用以下命令快速查看集群健康状态:
sql
-- 查看集群状态
SHOW CLUSTER STATUS;
-- 查看节点状态
SELECT svr_ip, status, zone FROM oceanbase.GV$OB_SERVERS;
-- 查看分区副本异常
SELECT * FROM oceanbase.GV$OB_PARTITION_REPLICA WHERE status != 'NORMAL';Q2: 如何查看租户的资源使用情况?
A2: 使用以下命令查看租户资源使用情况:
sql
-- 查看租户CPU使用情况
SELECT * FROM oceanbase.GV$OB_TENANT_STAT;
-- 查看租户内存使用情况
SELECT * FROM oceanbase.GV$OB_TENANT_MEMORY_USAGE;
-- 查看租户IO使用情况
SELECT * FROM oceanbase.GV$OB_TENANT_IO_STAT;Q3: 如何诊断慢查询问题?
A3: 使用以下命令诊断慢查询问题:
sql
-- 查看慢查询日志
SELECT * FROM oceanbase.GV$OB_SLOW_QUERY ORDER BY request_time DESC LIMIT 10;
-- 查看慢查询统计
SELECT query_sql, count(*) as exec_count, avg(request_time) as avg_time
FROM oceanbase.GV$OB_SLOW_QUERY
GROUP BY query_sql
ORDER BY avg_time DESC LIMIT 10;
-- 查看当前执行的慢查询
SELECT * FROM oceanbase.GV$OB_PROCESSLIST WHERE command != 'Sleep' AND time > 10;Q4: 如何备份和恢复单个表?
A4: 使用以下命令备份和恢复单个表:
sql
-- 备份单个表
BACKUP TABLE <database-name>.<table-name>;
-- 恢复单个表
RESTORE TABLE <database-name>.<table-name> FROM '<backup-path>';Q5: 如何查看和修改OceanBase的配置参数?
A5: 使用以下命令查看和修改配置参数:
sql
-- 查看所有配置参数
SHOW PARAMETERS;
-- 查看特定配置参数
SHOW PARAMETERS LIKE '%memory_limit%';
-- 修改集群配置参数
ALTER SYSTEM SET <parameter_name> = <value> SCOPE = CLUSTER;
-- 修改节点配置参数
ALTER SYSTEM SET <parameter_name> = <value> SCOPE = SERVER WHERE server = '<server-ip>:<rpc-port>';