暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分布式数据库学习Note219:OceanBase社区版中,登录 OceanBase 租户

欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/

OceanBase 数据库采用了多租户架构。多租户架构适用于资源整合(Resource Consolidation)、云服务等场景,同时也降低了运维复杂度。

OceanBase 数据库 4.0 开始,有三种类型的租户:系统租户、用户租户以及每个用户租户对应的 Meta 租户。

租户类型1

登录系统租户

系统租户是 OceanBase 数据库内部用来处理集群公共任务的数据库实例。Root Service 基于系统租户承担 OceanBase 数据库的管理工作,包括集群管理、租户管理、资源管理、负载均衡、每日合并调度、迁移复制等。系统租户是集群默认创建的租户,与集群生命期一致,负责管理集群和所有租户的生命周期。

系统租户兼容 MySQL 模式,可以通过 MySQL 客户端登录也可以通过 OceanBase 客户端(OBClient)登录。

通过 MySQL 客户端登录

通过 MySQL 客户端登录数据库连接串示意如下:

mysql -h 主机 IP -P 端口号 -u 账号 -p '数据库密码' -D 默认数据库 -Ac --prompt "OceanBase(\u@\d)> "

主要参数介绍:

  • -h:登录 OceanBase 数据库的主机 IP。OceanBase 支持通过 ODP 登录和直连 OBServer 节点登录。建议通过 ODP 登录,ODP 可以更好的处理 OceanBase 数据库的分布式特性,包括路由和容灾功能。
  • -P:登录 OceanBase 数据库的端口号。OceanBase 数据库支持部署时在配置文件中修改端口号,可以查看配置文件中各 OBServer 节点的 mysql_port 参数和 ODP 的 listen_port 参数。如果没有显式指定,则为默认值。
    • 通过 ODP 登录时,默认端口号是 2883。
    • 直连 OBServer 节点登录时,默认端口号是 2881。
  • -u:登录 OceanBase 数据库的账号。不同于传统数据库,OceanBase 数据库的账号包含更多字段,包括用户名、租户名和集群名。
    • 通过 ODP 登录时,需要指定用户名、租户名和集群名,其格式为 用户名@租户名#集群名。例如以 root 用户登录 test 集群的 SYS 租户,其账号为 root@sys#test
    • 直连 OBServer 节点登录时,需要指定用户名和租户名,其格式为 用户名@租户名。例如以 root 用户登录 test 集群的 SYS 租户,其账号为 root@sys
  • -p:登录 OceanBase 数据库的密码。新搭建的集群,其 SYS 租户 root 用户的初始密码为空。建议新搭建集群后的第一件事就是修改 root 用户密码 alter user root identified by 'xxxxxx'

关于通过 MySQL 客户端连接的详细信息,参见 通过 MySQL 客户端连接 OceanBase 租户

通过 OBClient 登录

除了使用 MySQL 客户端登录,还可以使用 OceanBase 客户端(OBClient)登录。OBClient 是推荐的 OceanBase 数据库黑屏客户端工具,其用户与 MySQL 客户端兼容,其数据库连接串示意如下:

obclient -h 主机 IP -P 端口号 -u 账号 -p '数据库密码' -D 默认数据库 -Ac --prompt "OceanBase(\u@\d)> "

关于通过 OBClient 客户端连接的详细信息,参见 通过 OBClient 连接 OceanBase 租户

登录最佳实践

  • root 用户权限较大,如果随意扩散,对数据库安全会造成极大隐患。建议 root 用户仅用于管理其他用户,并创建符合“最小够用”原则的专用的运维用户和只读用户。

  • 查看视图建议以专用的只读用户登录。

    OceanBase 数据库 4.0 相比以前版本最大的变化是内部信息的查询全面转向视图,通过系统租户的 OceanBase 数据库可以查看丰富的视图信息。

    obclient> use oceanbase obclient> show tables; +-------------------------------------------+ | Tables_in_oceanbase | +-------------------------------------------+ | CDB_INDEXES | | CDB_IND_COLUMNS | | CDB_IND_PARTITIONS | | CDB_IND_SUBPARTITIONS | | CDB_OBJECTS | | CDB_OB_ARCHIVELOG | | CDB_OB_ARCHIVELOG_PIECE_FILES | ......

    这些视图分为两大类:数据字典视图和动态性能视图。

    • 数据字典视图:命名特点是以 DBA_CDB_ 开头,DBA_ 开头的视图展示的是各个租户内的信息,比如 DBA_OB_LS 视图展示的是租户内的日志流信息,系统租户内的 DBA_OB_LS 表只展示系统租户自身的日志流信息。CDB_ 开头的视图是系统租户专用的,用于在系统租户内查看集群所有租户的数据库状态,比如 CDB_OB_LS 视图展示的是集群所有租户的所有日志流信息。一般每个 DBA_ 开头的视图在系统租户下都有对应的 CDB_ 开头的视图。
    • 动态性能视图的命名特点是以 GV$V$ 开头,V$ 只展示登录到的机器上的信息,GV$ 是租户所有机器信息的汇总。OceanBase 4.0 在普通租户下也增加了很多动态性能视图,比如 GV$OB_UNITS 视图可以在租户内查询到本租户的 Unit 分布信息。系统租户的动态性能视图是特殊处理的,会直接展示整个集群所有租户信息的汇总。

    例如查看 OceanBase 集群的节点信息:

    obclient> use oceanbase Database changed obclient> select * from 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 | +-------------+----------+----+--------------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+ | 6.x.xxx.xx | 2882 | 6 | sa128_obv4_2 | 2881 | NO | ACTIVE | 2022-12-30 16:17:03.173519 | NULL | NULL | 2022-12-30 16:08:04.749100 | 2023-01-04 11:48:36.589270 | 4.0.0.0_101000022022120716-0d7927892ad6d830e28437af099f018b0ad9a322(Dec 7 2022 16:22:15) | | 6.x.xxx.xx | 2882 | 4 | sa128_obv4_3 | 2881 | NO | ACTIVE | 2022-12-30 16:36:35.567437 | NULL | NULL | 2022-12-30 16:08:02.755200 | 2023-01-04 14:13:36.976548 | 4.0.0.0_101000022022120716-0d7927892ad6d830e28437af099f018b0ad9a322(Dec 7 2022 16:22:15) | | 6.x.xxx.xxx | 2882 | 3 | sa128_obv4_3 | 2881 | NO | ACTIVE | 2022-12-12 12:42:00.054759 | NULL | NULL | 2022-11-03 15:37:09.530894 | 2022-12-22 14:43:26.717736 | 4.0.0.0_101000022022120716-0d7927892ad6d830e28437af099f018b0ad9a322(Dec 7 2022 16:22:15) | | 6.x.xx.xx | 2882 | 1 | sa128_obv4_1 | 2881 | NO | ACTIVE | 2022-12-12 12:25:17.555651 | NULL | NULL | 2022-11-03 15:37:08.990683 | 2022-12-12 12:25:18.553763 | 4.0.0.0_101000022022120716-0d7927892ad6d830e28437af099f018b0ad9a322(Dec 7 2022 16:22:15) | | 6.x.xx.xxx | 2882 | 2 | sa128_obv4_2 | 2881 | YES | ACTIVE | 2022-12-12 11:46:37.222980 | NULL | NULL | 2022-11-03 15:37:09.490511 | 2022-12-12 11:47:31.075335 | 4.0.0.0_101000022022120716-0d7927892ad6d830e28437af099f018b0ad9a322(Dec 7 2022 16:22:15) | | 6.x.xx.xx | 2882 | 5 | sa128_obv4_1 | 2881 | NO | ACTIVE | 2022-12-30 16:25:45.420996 | NULL | NULL | 2022-12-30 16:08:03.928478 | 2023-01-04 11:48:36.578231 | 4.0.0.0_101000022022120716-0d7927892ad6d830e28437af099f018b0ad9a322(Dec 7 2022 16:22:15) | +-------------+----------+----+--------------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+ 6 rows in set (0.03 sec)
  • 建议以专用的运维用户执行集群运维命令。

    通过系统租户可以执行集群运维命令,例如隔离某个异常节点:

    obclient> ALTER SYSTEM STOP SERVER 'xx.xx.xx.xx:2882';

    成功执行后可以通过 DBA_OB_SERVERS 视图中对应节点的 STOP_TIME 字段确认是否隔离成功。

登录用户租户

与系统租户对应的是用户租户,用户租户是由用户创建的租户,对外提供完整的数据库功能,支持 MySQL 和 Oracle 两种兼容模式。

登录系统租户,查询 DBA_OB_TENANTS 视图即可查看所有的租户信息:

  • TENANT_TYPE 表示租户类型:SYS 为系统租户,META 为 Meta 租户,User 为用户租户。租户 ID 为 1 的是系统租户。租户 ID 大于 1000 的租户中,偶数的是用户租户,奇数的是 Meta 租户,并且用户租户的租户 ID 比其对应 Meta 租户大 1。
  • COMPATIBILITY_MODE 表示租户兼容模式:MYSQL 为 MySQL 兼容模式,ORACLE 为 Oracle 兼容模式。

登录 MySQL 模式的用户租户,可以用 MySQL 客户端 和 OBClient 客户端登录。登录 Oracle 模式的用户租户,只能用 OBClient 客户端登录。登录方式与登录系统租户一致,区别是登录账号中的租户名需要改为对应的租户名。

在 MySQL 模式的用户租户下,OceanBase 数据库自有的数据字典视图和动态性能视图都在 oceanbase 这个命名空间下。在 Oracle 模式的用户租户下,OceanBase 数据库自有的视图是在 SYS 用户下。两种模式下,OceanBase 数据库视图的名字、字段和使用体验都是一致的。

登录 Meta 租户

Meta 租户是 OceanBase 数据库内部自管理的租户,每创建一个用户租户会创建一个对应的 Meta 租户,其生命周期与用户租户保持一致。Meta租户不能直接登录,它的信息可以通过用户租户和系统租户进行访问。
欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论