hzc989
(Hzc989)
1
【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】6.1, 7.5
【遇到的问题:问题现象及影响】
我们需求背景是:计划在跳板机上配置两个 MySQL client ,一个用于只读,比如就叫 mysql ,一个用于变更比如 叫mysql_rw,这样无论传参使用什么账户密码都可以默认兜住一些不必要的更新。
MySQL 可以在init_connect里面设置 SET TRANSACTION READ ONLY=1 来让当前会话只读,但 TiDB 没有实现这个系统变量,还有其他方案吗? 新增一个专用的 全局读账户可以,但如果我们想的无论什么账户密码连上去,都默认只读呢?
找了许久,没发现好的法子,是在不行最后我最后就得加个全局只读账户了。
DBAER
(66666)
2
hzc989
(Hzc989)
3
不是姿势不对,现在就是没找到姿势 TiDB 没有优雅实现这个呀
林夕一指
(林夕一指)
4
如果是只是用于开发访问数据库这种场景,为什么不用archery,或者是yearning亦或者是Bytebase 等这些数据库管理平台呢
1 个赞
最佳解决办法是创建只读账户,
另外, 可以使用 MySQL Proxy 或 MariaDB MaxScale 等中间件,在代理层设置只读模式
hzc989
(Hzc989)
6
感谢大家的建议,但这就是为了挡住 DBA 自己 Commandline 误操作呢,这和开放只读查询给 dev 同学查询,那就就不是一个场景了哦。
hzc989
(Hzc989)
7
感谢,中间件这个是一个思路~不过有点重度。。还不如创建一个只读账户了
小龙虾爱大龙虾
(Minghao Ren)
9
你用 START TRANSACTION READ ONLY 还不是一样一提交还是 能更新吧,如果怕误操作,可以用
-U, --safe-updates Only allow UPDATE and DELETE that uses keys.
-U, --i-am-a-dummy Synonym for option --safe-updates, -U.
虽然不是完全不能执行更新,但是应该能挡住 90 % 的误操作了吧
有猫万事足
12
1 个赞
hzc989
(Hzc989)
13
谢谢,这个safe update 参数我们有用,现在是想进别区分隔离变更入口和只读入口。
system
(system)
关闭
15
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。