V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
awanganddong
V2EX  ›  Go 编程语言

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

  •  
  •   awanganddong · 2022-12-10 11:50:45 +08:00 · 2079 次点击
    这是一个创建于 713 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    11 条回复    2022-12-10 22:37:00 +08:00
    sardina
        1
    sardina  
       2022-12-10 12:05:25 +08:00
    没 可以初始化两个 DB 实例,读写用不同的 DB 实例去操作
    awanganddong
        2
    awanganddong  
    OP
       2022-12-10 12:06:27 +08:00
    明白了
    securityCoding
        3
    securityCoding  
       2022-12-10 12:06:52 +08:00 via Android
    应该没有,云上都是 vip 自动做了,自建 db server 的吗?
    awanganddong
        4
    awanganddong  
    OP
       2022-12-10 12:13:11 +08:00
    现在 mysql 是 1 主 3 从,没有前置 vip,想自己来控制读写。
    yuancoder
        5
    yuancoder  
       2022-12-10 12:30:05 +08:00
    读写分离,其实就是根据 sql 来控制调用哪个 db 的连接,自己使用的话手动选择一下就行了。
    EminemW
        6
    EminemW  
       2022-12-10 12:30:26 +08:00
    模仿这个改一下也行 https://github.com/go-gorm/dbresolver
    q1angch0u
        7
    q1angch0u  
       2022-12-10 12:58:08 +08:00 via iPhone
    @securityCoding 想请教一下,vip 不是用于三层冗余度吗?为什么能实现 mysql 的读写分离呢?还是说这个地儿的 vip 指的是广义上的四七层负载呢?感谢。
    dzdh
        8
    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
        9
    q1angch0u  
       2022-12-10 13:10:40 +08:00 via iPhone
    @dzdh 感谢解答,我还以为 vip 有什么骚操作我没查到呢😂
    securityCoding
        10
    securityCoding  
       2022-12-10 21:01:44 +08:00 via Android
    就是一个代理,分析你的 sql 再决定转发目标读写库
    cdlnls
        11
    cdlnls  
       2022-12-10 22:37:00 +08:00
    可以试试看 mycat 这样的中间件
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2172 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:51 · PVG 08:51 · LAX 16:51 · JFK 19:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.