ITPub博客

首页 > 数据库 > 国内数据库 > ODP升级影响因素(root@proxysys 与 proxyro@sys密码问题)

ODP升级影响因素(root@proxysys 与 proxyro@sys密码问题)

国内数据库 编辑:ITPUB 时间:2024-11-28 17:17:56 0 删除 编辑

前言

最近接到变更通知,后续准备将生产环境的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详情信息可见官网说明

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001049992

root@proxysys 与 proxyro@sys

root@proxysys 是 ODP 的管理员账号,之前没系统了解这个用户的时候,乍一看认为它是一个租户。 在部署ODP时可以设置该用户密码 并且   记住该用户密码。 root@proxysys 的密码对应配置项 obproxy_sys_password,官网声明如果要修改该用户密码 可以通过登录 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 存储了该用户密码。关于该用户密码存储,官网已给出详细信息

https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000988450?back=kb

集群信息

IP 角色 数量
10.0.0.63 OCP 1
10.0.0.62 ODP 1
10.0.0.62 OB集群 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
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)
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
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)
解决方案:请联系技术支持

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)
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容器,根据官方文档    https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000988450?back=kb 的解释说明,还有  OCP用户凭据 以及  ocp.ops_config   中的密码信息没有修改。下面我们 一 一 进行修改

1732633269

更新凭据

更新该用户的OCP密码凭据

1732715464

1732715502

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

1732715924

修改`ocp`.`ops_config`

根据官网的 proxyro 用户的密码信息都保存在哪里- 文档  https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000988450?back=kb  得出——如果使用黑屏命令行修改 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)
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修改)

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

https://www.oceanbase.com/docs/common-ocp-1000000001406021?_gl=1*1oqcmv2*_ga*MTE1OTQwOTkzMy4xNjkzMTk0NzQy*_ga_T35KTM57DZ*MTczMjcxMzgwMy40OTkuMS4xNzMyNzE1MDEzLjUzLjAuMA..

下面我们试一下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)
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接管


来自 “ ”, 原文作者: ;原文链接:,如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2018-09-19

  • 博文量
    240
  • 访问量
    510671