0

在我的系统中,我们执行操作,为了报告,我们在另一台服务器上记录该操作(如果感兴趣,则为星型模式)。显然我需要动作更新/插入与日志记录在同一个事务中。
那么,有没有办法在同一个事务中包含两个不同的 sql 到两个不同的服务器?
现在我在代码级别(php)管理它

4

3 回答 3

0

复杂的方法是:

  1. 在同一台服务器上创建同一张表。
  2. 使此服务器成为主服务器
  3. 设置此表的副本

如果您希望该日志表不是很大,您可以执行以下操作:

  1. 第一个表名设置_tmp
  2. 在插入和更新时在从属 log_tmp 触发器上创建以将数据复制到日志表
  3. 一段时间后从 master 中的 log_tmp 中删除一些数据。
于 2010-06-21T14:55:43.033 回答
0

单独使用 MySQL 是不可能的。虽然 MySQL 确实有一个联合存储引擎(即:远程访问其他 MySQL 服务器),但它不支持事务。这意味着您不能直接通过 MySQL 协调多服务器事务。MySQL 确实支持InnoDB 表的XA ,因此您可以在 MySQL 中使用外部事务管理器,但 PHP 不支持 XA。通常,这被认为是企业级功能,您可以使用JavaC#/.NET来实现。

于 2010-06-21T14:21:00.270 回答
0

您可以使用分布式事务协调器。

配置 DTC。

于 2010-06-21T13:33:27.823 回答