我想让一个主DB将特定的用户数据复制到其他数据库中,例如:
它们都在一个表中,并运行在MySQL 5.5.37上(可以更新到5.6)。
我之所以想这么做,是因为我有多个网站使用不同的数据库,而且它们都有不同的登录。一旦我完成了这个任务,我就可以让SSO跨越它们,并且节省超过50 %的用户--一个大麻烦--不要在不同的站点上注册更多。
我该从哪里开始?有什么好的信息可读吗?我一直在查找MySQL帮助文件,但没有找到任何关于如何为特定行执行此操作的信息。
发布于 2014-08-19 18:30:33
实际上,我用engine=FEDERATED来实现同步。不需要复制,所有信息都是最新的。站点特定字段将在单独的表中捕获。
发布于 2014-06-23 14:53:22
为什么不为您的SSO创建一个单独的数据库,每个站点都可以访问?当两个站点正在编辑“相同的字段”时,复制周围的数据会造成问题。
如果只想使用副本设置,则可以:
CREATE TABLE newdb.users LIKE otherdb.users;
INSERT newdb.users SELECT * FROM otherdb.users;如果您真的想在数据库之间连续地同步表,则必须使用自定义脚本进行同步。在这种情况下,最重要的是在发生冲突时怎么办的问题?但是我真的会考虑为SSO创建一个特定的db。
发布于 2014-06-24 16:34:44
简短的回答: MySQL不支持这个特性。
更长的版本:复制过滤器的最小粒度在表级。
如果只使用MySQL (在中间不使用脚本),则可以通过在主机上设置一个阴影表来实现类似的目的,然后将触发器插入其中。由此产生的触发器更改可以以所需的格式复制到从程序中。注意到这将需要启用基于行的复制才能工作,否则会触发从站的触发器。
如果在中间使用脚本,则可以很容易地监视复制流中的更改并应用任何转换。我有一个如何做这个这里的例子。
https://dba.stackexchange.com/questions/68828
复制相似问题