go-sql-driver/mysql 支持读写分离吗

2022-12-10 11:50:45 +08:00
 awanganddong

查看官方文档没找到主从配置, 是不是需要自己实现该功能?

如果没有相关配置,有什么推荐的 mysql 包吗,orm 类的暂时不需要。

2079 次点击
所在节点    Go 编程语言
11 条回复
sardina
2022-12-10 12:05:25 +08:00
没 可以初始化两个 DB 实例,读写用不同的 DB 实例去操作
awanganddong
2022-12-10 12:06:27 +08:00
明白了
securityCoding
2022-12-10 12:06:52 +08:00
应该没有,云上都是 vip 自动做了,自建 db server 的吗?
awanganddong
2022-12-10 12:13:11 +08:00
现在 mysql 是 1 主 3 从,没有前置 vip,想自己来控制读写。
yuancoder
2022-12-10 12:30:05 +08:00
读写分离,其实就是根据 sql 来控制调用哪个 db 的连接,自己使用的话手动选择一下就行了。
EminemW
2022-12-10 12:30:26 +08:00
模仿这个改一下也行 https://github.com/go-gorm/dbresolver
q1angch0u
2022-12-10 12:58:08 +08:00
@securityCoding 想请教一下,vip 不是用于三层冗余度吗?为什么能实现 mysql 的读写分离呢?还是说这个地儿的 vip 指的是广义上的四七层负载呢?感谢。
dzdh
2022-12-10 13:02:13 +08:00
@q1angch0u

就是个 fake mysql 。实现了 mysql 的协议,可以用 mysql 客户端连上,可以解析出来 sql 。根据 sql 前五个字符来判断是 select 就走从库,insert/update/delete 就走主库。

当然就是简单这么一说啊,真正实现还要考虑事物、预处理、健康检查、虚拟表映射等等等等

比如 https://blog.csdn.net/weixin_39594296/article/details/113555158 这个。就是用 go 实现的是 mysql 服务器。可以用 php/go/python/java 等连接。
q1angch0u
2022-12-10 13:10:40 +08:00
@dzdh 感谢解答,我还以为 vip 有什么骚操作我没查到呢😂
securityCoding
2022-12-10 21:01:44 +08:00
就是一个代理,分析你的 sql 再决定转发目标读写库
cdlnls
2022-12-10 22:37:00 +08:00
可以试试看 mycat 这样的中间件

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/901500

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX