10
博客odp 升级影响因素(root@proxysys 与 proxyro@sys 密码问题)

odp 升级影响因素(root@proxysys 与 proxyro@sys 密码问题)-c7电子娱乐

前言

最近接到变更通知,后续准备将生产环境的odp升级至4.3.2。据说该版本对于 zone优先级为random的租户有性能提升(random的租户 运行sql 有时候会产生 分布式执行计划 或者 远程执行计划,影响sql运行效率)  准备先在测试环境进行升级操作,观察一下升级的情况 以及 升级后的效果。本以为用ocp点击odp升级选项后,就可以静候佳音,结果被现实狠狠打脸,问题层出不断,被 root@proxysys 与 proxyro@sys 两个用户折磨的苦不堪言,本文主要以  root@proxysys 与 proxyro@sys 两个用户的密码维度来验证odp升级效果,特别是当修改了root@proxysys 与  proxyro@sys 用户的密码会触发什么事件?


注:

odp 指 obproxy数据库代理,本文以odp作为简称,odp详情信息可见c7电子娱乐官网说明


root@proxysys 与 proxyro@sys

root@proxysys 是 odp 的管理员账号,之前没系统了解这个用户的时候,乍一看认为它是一个租户。在部署odp时可以设置该用户密码 并且 记住该用户密码。 root@proxysys 的密码对应配置项 obproxy_sys_password,c7电子娱乐官网声明如果要修改该用户密码 可以通过登录 root@proxysys 的方式(如 mysql -h127.1 -p2883 -uroot@proxysys -pxxx),使用命令 alter proxyconfig set obproxy_sys_password = 'xxx'; 设置密码。


部署odp时可以手动设置该用户密码

1732630721


proxyro@sys 是 odp 访问 oceanbase 数据库的账号,部署ob时系统会自动赋予该用户一个默认密码proxyro@sys强烈不建议修改密码尤其不能使用黑屏命令行修改密码proxyro@sys 的密码对应配置项 observer_sys_password,实际上不只是 observer_sys_password 存储了该用户密码。关于该用户密码存储,c7电子娱乐官网已给出详细信息






集群信息

ip角色数量
10.0.0.63ocp1
10.0.0.62odp1
10.0.0.62ob集群1


odp升级

本节 简单概括 正常情况下odp升级的流程

升级版本

社区版4.2.3 升级至 社区版4.3.2

验证凭证

升级前 一定要对 以上两个账号 进行凭据验证,否则先不要进行升级

1732630945



1732630965



上传安装包

将 odp4.3.2软件包 上传至ocp

1732631076


执行升级

进入odp页面,odp已经接管了ob集群

1732631140


点击升级

1732631193



升级过程中,会将原版本的odp卸载

1732631247



卸载原版本odp之后,会下载新版本的odp进行替换

1732631280


替换完成后,会重启obproxyd守护进程

1732631360


之后执行odp 版本的重置环节(set obproxy version),proy_id更新(check and reset proxy_id if need),最后更新odp的状态(update obproxy status),玩成升级

1732631500


总结

以上 简单概括 正常情况下odp升级的流程(ocp白屏方式),升级流程非本文重点。以上内容想表达的重点是 在执行odp升级前 一定要验证  root@proxysys 与 proxyro@sys 的密码凭据是否正确。




以下内容开始描述  root@proxysys 或 proxyro@sys 用户密码发生改变时 对odp升级的影响


root@proxysys用户密码修改

命令行修改密码

起初设置 root@proxysys 密码为 aaaa11__

 [root@observer062 ~]# mysql -h127.1 -p2883 -uroot@proxysys -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 1048738
server version: 5.6.25
c7电子娱乐 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>
mysql>
mysql> exit
bye


命令行修改 root@proxysys 密码

[root@observer062 ~]# mysql -h10.0.0.62 -p2883 -uroot@sys#obv4 -p'aaaa11__'
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 1048787
server version: 5.6.25 oceanbase_ce 4.2.1.8 (r108000022024072217-3149c25ca2dadbb7707686ad02a1367b1b43e0b5) (built jul 23 2024 02:01:58)
c7电子娱乐 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>
mysql> alter proxyconfig set obproxy_sys_password='abcd__1324';
query ok, 0 rows affected (0.01 sec)
mysql>
mysql> exit
bye


验证 root@proxysys 修改后的密码

使用原有密码 aaaa11__ 此时已经无法登录,需要使用修改后的密码 abcd__1324 登录,证明命令行方式修改密码成功

[root@observer062 ~]# mysql -h127.1 -p2883 -uroot@proxysys -paaaa11__
mysql: [warning] using a password on the command line interface can be insecure.
error 1045 (42000): access denied for user 'root@proxysys'@'127.0.0.1' (using password: yes)
[root@observer062 ~]#
[root@observer062 ~]#
[root@observer062 ~]# mysql -h127.1 -p2883 -uroot@proxysys -pabcd__1324
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 1048808
server version: 5.6.25
c7电子娱乐 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>


凭据验证

由于使用黑屏命令行修改密码,没有更新ocp上的凭据,此时凭据验证失败

1732632188


odp状态(不可用)

可以看到,由于ocp上凭据密码没有进行修改,ocp(10.0.0.63) 访问 odp会报密码错误,此时odp集群处于不可用状态,无法进行升级等操作

持续时间:2分钟3秒
原因:未知异常,类型:odpconnectfailedexception,错误信息:[odpsdk] check odp connection failed, connectproperties=connectproperties(address=10.0.0.62, port=2883, password=xxx username=root, tenantname=proxysys), cause:failed to obtain jdbc connection; nested exception is java.sql.sqlsyntaxerrorexception: could not connect to 10.0.0.62:2883 : (conn=1048747) access denied for user 'root@proxysys'@'10.0.0.63' (using password: yes)
c7电子娱乐的解决方案:请联系c7电子娱乐的技术支持

1732632240



更新凭据 再次升级

更新ocp中 root@proxysys 用户的凭据

1732632324


更新完后凭据验证成功

1732632373


凭据验证成功后,可以执行升级操作,并且升级成功

1732632410


总结

命令行修改 root@proxysys 密码后,一定要更改ocp上的凭据,方可进行odp相关运维操作


proxyro@sys用户密码修改(黑屏修改)

命令行修改密码

proxyro 用户密码 系统会自动生成,这里使用 黑屏命令行 进行修改

[root@observer062 ~]# mysql -h10.0.0.62 -p2883 -uroot@sys#obv4 -p'aaaa11__'
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 1048760
server version: 5.6.25 oceanbase_ce 4.2.1.8 (r108000022024072217-3149c25ca2dadbb7707686ad02a1367b1b43e0b5) (built jul 23 2024 02:01:58)
c7电子娱乐 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>
mysql> alter user 'proxyro'@'%' identified by 'aaaa11__';
query ok, 0 rows affected (0.06 sec)
mysql>
mysql>
mysql> exit
bye
[root@observer062 ~]#



凭据验证

用户凭据没有更新,此时验证失败

1732632765


由于该用户属于 sys租户的用户,并不是odp管理用户,此时odp状态显示是可用的

1732632820



不更该凭据 执行升级

发现可以执行升级操作,升级成功,乍一看命令行修改完该用户密码后,好像不影响odp运行

1732632885



odp连接ob

此时发现使用 odp 2883 端口 连接 ob集群连接不上了。分析是  命令行修改proxyro密码后,ocp上该用户的凭据 或者 其它存储密码的系统表 并没有进行更新 ,导致通过odp连接ob失败。由于本人的ocp是obd部署的社区版本,不存在ocp容器,根据官方文档   的解释说明,还有 ocp用户凭据 以及 ocp.ops_config   中的密码信息没有修改。下面我们 一 一 进行修改


1732633269



更新凭据

更新该用户的ocp密码凭据

1732715464



1732715502


更新完ocp中的 proxyro凭据之后依然连接失败,由于还有 ocp.ops_config 密码没有进行修改,此时连接失败还可以理解

1732715924



修改`ocp`.`ops_config`

根据c7电子娱乐官网的 proxyro 用户的密码信息都保存在哪里- 文档 得出——如果使用黑屏命令行修改 proxyro 用户密码的话,只会修改mysql.user表中的记录不会修改 ocp.ops_config 与 ocp凭据(profile_credential)的密码信息,当前凭据已经修改完成,尝试修改ocp.ops_config中的密码信息(与mysql.user密码信息一致),验证修改完后是否可以通过odp代理连接ob


登录接管的业务ob的sys租户,查看 mysql.user 与 ocp.ops_config 中的 proxyro密码信息

[root@observer062 ~]# mysql -h10.0.0.62 -p2881 -uroot@sys -p'aaaa11__'
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 3221489063
server version: 5.7.25 oceanbase_ce 4.2.1.8 (r108000022024072217-3149c25ca2dadbb7707686ad02a1367b1b43e0b5) (built jul 23 2024 02:01:58)
c7电子娱乐 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 name, value from `ocp`.`ops_config` where name = 'ob.proxyro.password';
 --------------------- ---------------------------------- 
| name                | value                            |
 --------------------- ---------------------------------- 
| ob.proxyro.password | cd2321e5bd2efe7e6b44f784e7f13a7e |
 --------------------- ---------------------------------- 
1 row in set (0.00 sec)
mysql>
mysql> select user,host,password from mysql.user where user = 'proxyro'\g;
*************************** 1. row ***************************
    user: proxyro
    host: %
password: *4d874e0808d0c8355f04caa0e3b9225b3f7c2699
1 row in set (0.00 sec)



ocp.ops_config中的密码 修改与 mysql.user密码信息 一致

mysql> replace into `ocp`.`ops_config` (`name`, `value`) values ('ob.proxyro.password', '*4d874e0808d0c8355f04caa0e3b9225b3f7c2699');
query ok, 2 rows affected (0.00 sec)
mysql>
mysql> select * from ops_config\g
error 1046 (3d000): no database selected
mysql>
mysql> select * from ocp.ops_config\g
*************************** 1. row ***************************
         id: 1000002
       name: ob.proxyro.password
      value: *4d874e0808d0c8355f04caa0e3b9225b3f7c2699
create_time: 2024-11-21 23:31:57
update_time: 2024-11-21 23:31:57
1 row in set (0.00 sec)
mysql> select user,host,password from mysql.user where user = 'proxyro'\g;
*************************** 1. row ***************************
    user: proxyro
    host: %
password: *4d874e0808d0c8355f04caa0e3b9225b3f7c2699
1 row in set (0.00 sec)



修改完成后再次通过odp连接ob集群还是不行

1732716379


总结

当使用黑屏命令行修改 proxyro@sys 用户的密码后,obproxy 可以升级成功,但是由于ob集群连接obproxy的密码修改了,升级后ob无法通过obproxy 2883 端口连接,只能通过2881端口本地连接(无论后期是否更新 ocp上的凭据 还是 `ocp`.`ops_config` 里的信息)



proxyro@sys用户密码修改(ocp修改)

查看c7电子娱乐官网 以及 社区老师的回答 得知 proxyro@sys 用户修改密码的标准方式为 ocp白屏修改,这种方式修改会同步更新该用户相关的密码存储信息

下面我们试一下ocp白屏修改会遇到什么问题?


ob迁出odp

使用ocp修改时报 ob集群已关联odp,不允许修改。经过 社区老师 的反馈,必须将ob迁出odp之后,才可对改密码进行修改

1732717123



进入odp集群页面,将ob迁出odp

1732717644



修改proxyro@sys用户密码

ob从odp迁出后,修改密码成功

1732717758



凭据验证成功,说明使用ocp修改该用户密码确实会 自动同步 与该用户相关的密码信息

1732717958



接管ob执行升级

odp重新接管ob集群,执行升级

1732718098



1732718141



升级成功

1732718201



odp连接ob

此时通过odp连接ob是可以连接成功的,证实 ocp方式修改 proxyro@sys  的标准性

[root@observer062 obbackup]# mysql -h10.0.0.62 -p2883 -uroot@sys#obv4 -p'aaaa11__'
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 3145823
server version: 5.6.25 oceanbase_ce 4.2.1.8 (r108000022024072217-3149c25ca2dadbb7707686ad02a1367b1b43e0b5) (built jul 23 2024 02:01:58)
c7电子娱乐 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


总结

proxyro@sys 用户修改密码的标准方式是通过ocp白屏修改

如果ob集群已经关联到odp,不允许通过ocp白屏命令修改proxyro@sys用户密码


全文总结

之前一直没有仔细地了解 root@proxysys 与 proxyro@sys 的用户,此次工作中的测试的odp升级算是让本人初步了解了这两个用户,尤其是对于密码更改需求。本文内容为作者亲测,结论不成立的地方 请 社区老师 以及 各位专家 指出。


1.部署odp的时候一定要记住 root@proxysys 的密码

2.修改 root@proxysys 后,一定要更改ocp上该用户的凭据

3.proxyro@sys用户的密码 不到万不得已 不能进行修改

4.如果 proxyro@sys用户的密码 不得不修改的话,一定要通过ocp修改,不能使用黑屏命令行修改

5.使用ocp修改 ob集群的 proxyro@sys用户密码 的话,ob集群不允许被odp接管

点赞10
收藏

声明

本网站下的“博客”等板块为技术爱好者提供分享、交流的平台。发布者发布的任何内容、信息等,并不反映或代表本网站的观点、立场或政策。本网站不对其任何内容和信息的错误以及由此产生的损失或损坏承担任何责任。

尊重知识产权是本网站的基本原则之一,如您在使用本网站过程中发现本网站中存在侵犯您或其他第三人合法知识产权的情况,请您即可将侵权材料及初步证据提交至下述邮箱:obcompliance@oceanbase.com 。本网站将在收到材料后尽快进行审核及处理。

l

已发布 5 篇博文

网站地图