我在没有连接到互联网的不同地方创建了 3 个数据库。
DB A 是总部数据库
DB B 是分支机构 1 数据库
DB C 是分支机构 2 数据库
每天晚上我需要将事务表中的数据从 B & C 复制到 A。并在第二天早上将 A 数据复制到 B & C 以使库存数据同步。
事务表由 2 个表组成
1. 事务主管
| 身份证 | TRX_NUMBER | 日期 | 客户 ID |
2. 交易明细
| 身份证 | TRANSACTION_MASTER_ID | 项目 ID | 数量 | 价格 | 总计 |
transaction-details.TRANSACTION_MASTER_ID 是 transaction-master.ID 的外键
问题是 transaction-master.ID 是自动增量值,那么如何将transaction-master 和 transaction-details数据复制到 A 而不破坏transaction-master 和 transaction-details 外键值?
因为如果在 B 上我的表有 1 作为 transaction-master.ID 值,那么当我将 B 数据插入 A 时,可能 1 已经在使用中并且将变为 2(因为自动递增)并且会导致事务上的外键-details.TRANSACTION_MASTER_ID 将中断
解决此问题的最佳做法是什么?
解决方案: 我从 IRC 上的 MySQL 频道得到了很好的解决方案,在 MySQL 上使用“auto_increment_offset”和“auto_increment_increment”
设置 auto_increment_offset A: 1, B: 2, C:3
在 A、B 和 C 上设置 auto_increment_increment 3
这样每个分支上的主键永远不会相同