V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
elnath
V2EX  ›  数据库

MySQL 支持跨库事务吗?

  •  
  •   elnath · 37 天前 · 1798 次点击
    这是一个创建于 37 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前提:1.同一 MySQL 实例; 2.所有库都是 InnoDB
    可以直接使用 Begin 和 Commit 加 DB_A.Table DB_B.Table 之类的 SQL 进行事务操作吗?

    大致用 transaction 搜索了一下官方文档,好像没有看到特别明确的说明。

    看到一篇博客说如果是用 IP + Port 直接连接的实例则可,如果指定了 IP + Port + DB 则不可。
    这种说法是正确的吗?
    如果 MySQL 同一实例下有数个 InnoDB 数据库,MySQL 实例,引擎和库之间是什么样的关系呢?
    4 条回复    2024-11-19 10:03:21 +08:00
    timepast
        1
    timepast  
       37 天前
    分布式事务范畴了
    liprais
        2
    liprais  
       37 天前 via iPhone
    一个实例下面为啥不行?
    Dlin
        3
    Dlin  
       37 天前
    “这种说法”你试试不就知道了嘛
    edwardzcn98
        4
    edwardzcn98  
       37 天前
    1.同一 MySQL 实例; 2.所有库都是 InnoDB
    可以直接使用 Begin 和 Commit 加 DB_A.Table DB_B.Table 之类的 SQL 进行事务操作吗?

    可以

    看到一篇博客说如果是用 IP + Port 直接连接的实例则可,如果指定了 IP + Port + DB 则不可。
    不正确

    跨实例应该用实现了 2PC 的分布式事务,原生 Mysql 8.0 XA https://dev.mysql.com/doc/refman/8.4/en/glossary.html#glos_xa 。一些商用版比如 PolarDB 是自己实现了插件+transaction 写法实现多主写。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5123 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 05:41 · PVG 13:41 · LAX 21:41 · JFK 00:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.