2010-06-21 48 views
0

在我的系统中,我们执行操作,为了报告起见,我们将该操作记录在另一台服务器上(如果它感兴趣,则使用星型模式)。 很明显,我需要动作更新/插入与日志记录在同一个事务中。
那么,有没有办法在同一个事务中包含两个不同的sqls到两个不同的服务器?
现在我管理,在代码级别(PHP)有没有办法让几个SQL在同一个事务里面分散服务器?

回答

0

这是不可能单独使用的MySQL。尽管MySQL有一个Federated Storage Engine(即:远程访问其他MySQL服务器),但它不支持事务。这意味着你不能直接通过MySQL协调多服务器事务。 MySQL支持XAfor InnoDB tables,所以你可以在MySQL中使用外部事务管理器,但PHP不支持XA。通常这被认为是企业级功能,你可以使用JavaC#/.NET来实现。

0

复杂的方法是:

  1. 同一台服务器上创建相同的表。
  2. 使这个服务器主
  3. 设置副本的这个表

,如果你想要的日志表是不是很大,你可以这样做:

  • 第一表名称设置_tmp
  • 创建从属log_tmp触发器插入并更新以将数据复制到日志表
  • 经过一段时间后从master_log中删除一些数据。
  • 相关问题