我正在尝试将 MySQL 表与 SQL Server 2008 中的表同步。我想要的是从 SQL 服务器同步到 MySQL。我已经将表从 SQL Server 转移到 MySQL,我现在需要的是 PHP 代码,它将在运行时自动更新表(检查更改、插入新行、删除不存在的行)。谁能帮帮我?
最佳答案
虽然我不完全相信这是个好主意,但我知道这在某些用例中可能是必要的(请参阅最后一段),因为不久前我们有类似的要求。
这很有效:
在发送方(无论是什么,在您的情况下是 SQL 服务器)
- 创建一个包含 id (pk)、表名、tablepk、操作、数据文本字段的表“changelog”
- 在相关表上创建触发器,在操作成功后将更改写入 changelog 表
- 让您的代码将更改日志表的内容传输到发送端
- 如果成功,将其从变更日志表中删除(注意:这里可能存在竞争条件!)
在接收方(无论是什么,在您的情况下是 MySQL)
- 接收变更日志数据
- 解析它
- 对数据库运行更改
- 如果可行,请发送确认
这个方案工作得很好,即使在 2 个主机之间只能“交谈”它们之间的 HTTP - 它也非常健壮,因为丢失的连接(或接收方重启)只会缓冲发送方的变化changelog 表,在重新建立连接时将其清除。
关于php - SQL Server 和 MySQL 之间的一种同步方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9208213/