1
passerbytiny 2020-09-10 16:53:37 +08:00 via Android
如果要求 100 %数据完整性,除了重启或临时下线,别无它法。数据库是最底层的东西,想做热重载不是一般的难。
|
2
passerbytiny 2020-09-10 16:59:33 +08:00 via Android
补充一下,是无缝热重载不好做,不重启但是数据库下线再上线(期间所有与数据库相关的功能,要么等待新事务开启,要么超时,要么回滚)还是很好做的。
|
3
passerbytiny 2020-09-10 17:04:43 +08:00 via Android
不赚钱的项目,就弄个脚本让改密码的人在改密码后手动执行一下吧。
spring 体系中要想刷新配置,需要上 spring cloud config,管理起来还是很麻烦的。 |
4
limuyan44 2020-09-10 17:08:47 +08:00
通常遇到这种什么不想做的但是什么都想要的,我都会拿起 shell 一把梭,整个定时半夜 12 点改密码写配置起服务。
|
5
itskingname 2020-09-10 17:15:47 +08:00 1
这个时候就显示出 sprint boot 的不灵活了。
我用 Apollo 做配置中间。用 fastapi 做后端。发现配置改了,可以直接动态修改连接对象。 |
6
justfindu 2020-09-10 17:16:23 +08:00
你给他一个操作接口, 接口内进行 shell 操作并进行应用数据库密码更改... 是不是有些危险.
|
7
smallfish1990 2020-09-10 17:20:03 +08:00 2
讲一个上家公司的方案:
( 1 )数据库做 2 套账户,错开定期修改; ( 2 )应用层走负载,一套一套修改,用户无感 ( 3 )改密、负载切换都是走 devops 的,现场运维对密码都不可知 |
8
594duck 2020-09-10 17:30:17 +08:00
@itskingname 老哥这个回答靠谱的,走配置中心是最方便的。
另外,如果是半年一次的话其实可以走 maintenance time 的。哪怕是 Google SRE 都推荐要做做重启动作来熟悉感觉。 |
9
bk201 2020-09-10 17:32:14 +08:00
配置中心?
|
10
zlowly 2020-09-10 17:36:06 +08:00
肯花钱的话,有专门商业化的账号安全管理系统可以干这些事情。
|
11
wangdashuai 2020-09-10 18:32:19 +08:00
可以在 mysql 和应用中间加一层,屏蔽密码认证。
|
12
iColdCat 2020-09-10 20:20:33 +08:00 1
不知道 xxl conf 能不能解
|
13
buaacss 2020-09-10 20:41:26 +08:00 via iPhone 1
两套账号,要改密的时候,ops 生成新密码,创建 temp 账号,同时更新 k8s 里的 temp secret,重新部署后使用临时密钥,改之前的线上密钥,再更新 online secret 最后再部署一次,删除临时 secret,开发都不知道这玩意儿换过了。ansible 改环境变量也差不多
|
17
intmax2147483647 2020-09-11 14:55:55 +08:00
好愚蠢的要求
|
18
LemonCoo1 2020-09-11 17:19:20 +08:00
https://blog.csdn.net/jackson_hou03/article/details/106408666
可以集成配置中心,比如 nacos apollo 等,自己实现刷新数据源。 |