浅谈OceanBase服务名(SERVICE_NAME)

server/2025/3/2 23:28:48/

服务名定义

官方声明

在 OceanBase 数据库 V2.x 或 V3.x 版本中,物理备库的产品形态为集群级主备,互为主备关系的集群的集群名及其对应的租户名均相同,而不同的主备库集群,其集群名也不相同,故集群名可以作为主备集群的唯一标识。用户在通过 ODP 连接数据库时,可以使用指定集群名的方式将连接自动路由到主集群。

从 V4.1.0 版本开始,物理备库的产品形态变更为租户级主备,主备租户所属的集群不一定相同,主备租户之间无感知,即主租户不记录备租户的信息,备租户也不记录主租户信息。为了实现租户级主备的自动路由,OceanBase 数据库引入了服务的概念。一个服务下可以有多个同集群或跨集群的租户。用户在通过 ODP 连接数据库时,可以使用指定服务名的方式将连接自动路由到主租户。

使用限制

不支持为 sys 租户或 Meta 租户创建服务。

一个用户租户最多只能创建一个服务。

不允许在通过服务名建立的 Session 中执行 CREATE SERVICE 命令。

该功能的使用依赖 OCP 和 ODP 等产品,相关产品的版本要求如下:

ODP:V4.3.1 及之后版本

OCP:V4.3.1 及之后版本

创建服务名

前提

官方声明租户创建服务名时,需要先确认租户的 Unit 中是否有临时下线的机器。如果有临时下线的机器,则在执行 CREATE SERVICE 命令后,可能会有部分机器暂时无法通过该服务名提供服务,建议等待临时下线的机器恢复或永久下线后再执行 CREATE SERVICE 命令。或者,用户也可以先执行 CREATE SERVICE 命令,等待临时下线的机器恢复或永久下线后再执行 START SERVICE 命令启动服务。

使用sys租户登录OB,执行以下SQL语句查看是否有临时下线的机器,tenant_id为目标租户ID

[root@server061 1002]# mysql -h10.0.0.61 -P2883 -uroot@sys#obdemo61 -paaAA11__ -c -A
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2625955
Server version: 5.6.25 OceanBase 4.2.1.10 (r110020012024120420-760d3c19482ba306e5a10e214a8ec64422bbf1f0) (Built Dec  4 2024 20:33:18)Copyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>
mysql> SELECT SVR_IP, SVR_PORT, LAST_OFFLINE_TIME, NOW() FROM oceanbase.DBA_OB_SERVERS WHERE LAST_OFFLINE_TIME IS NOT NULL AND (SVR_IP, SVR_PORT) IN (SELECT DISTINCT SVR_IP, SVR_PORT FROM oceanbase.DBA_OB_UNITS WHERE TENANT_ID = 1006);
Empty set (0.00 sec)mysql>
mysql>
mysql>

为租户创建服务时,要求租户的 SWITCHOVER_STATUSNORMAL即保证租户不处于主备角色切换的中间状态。

[root@server061 1002]# mysql -h10.0.0.61 -P2883 -uroot@sys#obdemo61 -paaAA11__ -c -A
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2625963
Server version: 5.6.25 OceanBase 4.2.1.10 (r110020012024120420-760d3c19482ba306e5a10e214a8ec64422bbf1f0) (Built Dec  4 2024 20:33:18)Copyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> SELECT TENANT_ID, TENANT_NAME, TENANT_ROLE, SWITCHOVER_STATUS FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'obmysql';
+-----------+-------------+-------------+-------------------+
| TENANT_ID | TENANT_NAME | TENANT_ROLE | SWITCHOVER_STATUS |
+-----------+-------------+-------------+-------------------+
|      1006 | obmysql     | PRIMARY     | NORMAL            |
+-----------+-------------+-------------+-------------------+
1 row in set (0.03 sec)mysql>

由于一个服务下最多只有一个主租户,故在创建服务前,用户需要确认当前租户的角色

[root@server061 1002]# mysql -h10.0.0.61 -P2883 -uroot@sys#obdemo61 -paaAA11__ -c -A
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2625965
Server version: 5.6.25 OceanBase 4.2.1.10 (r110020012024120420-760d3c19482ba306e5a10e214a8ec64422bbf1f0) (Built Dec  4 2024 20:33:18)Copyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> SELECT TENANT_ID, TENANT_NAME, TENANT_ROLE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'obmysql';
+-----------+-------------+-------------+
| TENANT_ID | TENANT_NAME | TENANT_ROLE |
+-----------+-------------+-------------+
|      1006 | obmysql     | PRIMARY     |
+-----------+-------------+-------------+
1 row in set (0.02 sec)mysql>
mysql>

查询待创建的服务下的租户情况

可以发现,目前没有租户使用 s_hz 服务名,可以为租户创建s_hz服务名

mysql>  SELECT t.tenant_id, t.tenant_name, t.tenant_role-> FROM oceanbase.CDB_OB_SERVICES AS s JOIN oceanbase.DBA_OB_TENANTS AS t-> ON s.tenant_id = t.tenant_id-> WHERE s.service_name = 's_hz';
Empty set (0.03 sec)mysql>
mysql>

黑屏方式

sys租户为普通租户创建服务名

mysql>
mysql>
mysql> ALTER SYSTEM CREATE SERVICE s_hz TENANT = obmysql;
Query OK, 0 rows affected (0.04 sec)mysql>
mysql>

用户租户为本租户创建服务名

mysql> ALTER SYSTEM CREATE SERVICE s_hz 
Query OK, 0 rows affected (0.04 sec)mysql>
mysql>

使用服务名登录

ip:ODP 的 IP 地址。

port:ODP 的端口号。

user_name:待登录的租户的用户名。

service_name:待登录的租户的服务名。

[root@server061 1002]# mysql -h10.0.0.61 -P2883 -uroot@SERVICE:s_hz -paaAA11__
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2626368
Server version: 5.6.25 OceanBase 4.2.1.10 (r110020012024120420-760d3c19482ba306e5a10e214a8ec64422bbf1f0) (Built Dec  4 2024 20:33:18)Copyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> exit
Bye

白屏方式

白屏方式比较简单,在OCP上新建租户是就可以为该租户指定服务名

也可以在租户概览界面,手动添加服务名

文章来源:https://blog.csdn.net/weixin_68243500/article/details/145365974
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/server/163951.html

相关文章

Docker容器数据恢复

Docker容器数据恢复 1 创建mongo数据库时未挂载数据到宿主机2 查找数据卷位置3 将容器在宿主机上的数据复制到指定目录下4 修改docker-compose并挂载数据(注意端口)5 重新运行新容器 以mongodb8.0.3为例。 1 创建mongo数据库时未挂载数据到宿主机 versi…

【超详细】ELK实现日志采集(日志文件、springboot服务项目)进行实时日志采集上报

本文章介绍,Logstash进行自动采集服务器日志文件,并手把手教你如何在springboot项目中配置logstash进行日志自动上报与日志自定义格式输出给logstash。kibana如何进行配置索引模式,可以在kibana中看到采集到的日志 日志流程 logfile-> l…

基于STM32的阿里云智能农业大棚

目录 前言: 项目效果演示: 一、简介 二、硬件需求准备 三、硬件框图 四、CubeMX配置 4.1、按键、蜂鸣器GPIO口配置 4.2、ADC输入配置 4.3、IIC——驱动OLED 4.4、DHT11温湿度读取 4.5、PWM配置——光照灯、水泵、风扇 4.6、串口——esp8266模…

【Proteus仿真】【51单片机】多功能计算器系统设计

目录 一、主要功能 二、使用步骤 三、硬件资源 四、软件设计 五、实验现象 联系作者 一、主要功能 1、LCD1602液晶显示 2、矩阵按键​ 3、加减乘除,开方运算 4、带符号运算 5、最大 999*999 二、使用步骤 基于51单片机多功能计算器 包含:程序&…

一个基于Python+Appium的手机自动化项目~~

本项目通过PythonAppium实现了抖音手机店铺的自动化询价,可以直接输出excel,并带有详细的LOG输出。 1.excel输出效果: 2. LOG效果: 具体文件内容见GitCode: 项目首页 - douyingoods:一个基于Pythonappium的手机自动化项目,实现了…

vue3项目中编写less

css,less,sass文件一般写在vue3的asset目录下 1.引入依赖 npm install -D less2.定义less文件 3.在其他文件中引入less文件 如在app.vue文件中引入, 可使用绝对路径也可以使用相对路径

Unity自学之旅05

Unity自学之旅05 Unity学习之旅⑤📝 AI基础与敌人行为🥊 AI导航理论知识(基础)开始实践 🎃 敌人游戏机制追踪玩家攻击玩家子弹碰撞完善游戏失败条件 🤗 总结归纳 Unity学习之旅⑤ 📝 AI基础与敌…

从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(绘图设备封装)

目录 图像层的底层抽象——绘图设备抽象 如何抽象一个绘图设备? 桥接绘图设备,特化为OLED设备 题外话:设备的属性,与设计一个相似函数化简的通用办法 使用函数指针来操作设备 总结一下 图像层的底层抽象——绘图设备抽象 在…