作者:书友31617792 | 来源:互联网 | 2023-06-30 11:05
一、obproxy工具的作用OceanBase是一个大型分布式数据库集群,生产环境最少三台甚至上百台服务器,有这么多服务器意味着涉及多个IP,而应用数据的每个表甚至
一、obproxy工具的作用
OceanBase是一个大型分布式数据库集群,生产环境最少三台甚至上百台服务器,有这么多服务器意味着涉及多个IP,而应用数据的每个表甚至每个表的不同分区都可能存放在不同的服务器上并且不固定,所以应用不可能知道数据在哪个服务器,对于应用而言,应用不想记录那么多IP。OBProxy 便是在这种情况下应运而生,以解决分布式数据库系统的连接、SQL转发等问题。
二、obproxy工具安装部署
安装部署详情见我昨天写的另一篇文章[https://www.modb.pro/db/539417]
- bin目录:保存 obproxy 的二进制文件。
- etc目录和 .conf 目录:保存配置信息,.conf 是 etc 的备份,如果etc目录被删除,会使用.conf中的内容。
- sharding-config目录:保存sharding相关的配置文件
- log目录:保存日志文件的目录,磁盘占用最大,日志文件也分为多种,帮助排查定位问题
- obproxyd.sh:守护脚本,内容简单,大家可以通过阅读脚本代码了解实现原理
三、obproxy如何连接oceanbase 集群
1、在OB集群sys租户中创建obproxy的内部proxyro用户并授权
备注:为什么安装初始化要建二个账户?
root@proxysys账号:OBProxy的管理员账号
proxyro@sys账号:OBProxy访问OB集群的账号,OBProxy需要跟OceanBase集群保持通信
(1)登任一zone下的OB集群sys租户,查看是否有proxyro用户,如果没有创建obproxy的内部proxyro用户并授权
2、使用OBProxy连接ob集群
备注:相比直连OceanBase集群,连接OBProxy的连接串主要有两点不同:
(1):用户名添加了#集群名
(2):端口号为OBProxy的服务端口,一般使用2883。
另外,通过OBProxy连接OceanBase集群的命令有两种格式,区别在于用户名的格式。
(1):[用户名]@[租户名]#[集群名] ,如下图:
(2):[集群名]:[租户名]:[用户名]
四、obproxy日志
obproxy有5大日志,掌握了5大日志相当于掌握了obproxy运维的精髓,在日常排查问题时非常的有用。下面简单给大家列举下:
错误日志(obproxy\_error.log):错误日志会记录执行错误的请求,包括 OBProxy 自身错误和 OBServer 返回错误。
审计日志(obproxy\_digest.log):审计日志记录执行时间大于参数 `query_digest_time_threshold` 阈值(默认 100ms)的请求和错误响应请求。
慢日志(obproxy\_slow.log):慢日志记录执行时间大于 `slow_query_time_threshold` 阈值(默认 500ms)的请求。
统计日志 (obproxy\_stat.log): 统计日志默认每分钟(monitor\_stat\_dump\_interval参数控制)输出一次。
主日志(obproxy.log):有 DEBUG、TRACE、INFO、ERROR 四种级别,通过 `syslog_level` 参数控制,当需要进一步排查问题原因时,通过 trace\_id 字段可以过滤得到一个session上的所有日志。
五、obproxy日常运维命令
(1).查看当前连接
(2).杀掉一个连接
(3).查看版本
obclient [(none)]> show proxyinfo binary;
(4).查看LDC时路由机房信息
(5).查看内存
(6)查看参数
show proxyconfig like ‘%automatic_match_work_thread%’;
(7)修改参数
alter proxyconfig set enable_metadb_used=False;
(8)检查obproxy进程是否启动成功
ps -ef | grep obproxy
(9)重启
pkill obproxy
cd /usr/local/obproxy && ./bin/obproxy