Mysql 如果我将数据更新/插入到从数据库中复制时忽略的表中,会发生什么情况?

Mysql 如果我将数据更新/插入到从数据库中复制时忽略的表中,会发生什么情况?,mysql,replication,master-slave,Mysql,Replication,Master Slave,我在MySQL 5.1中设置了主从复制,复制时忽略了表“sessions”(-replicate ignore table=ak.sessions)。如果我将数据更新/插入从属数据库中的会话表,会发生什么情况?复制还会继续吗?或者它会因为错误而停止复制过程吗?主从复制规则拇指是master用于insert/update/delete,slave用于select 因此,根据定义,当任何插入/更新/删除发生时,它将被复制到从机。现在,我们需要确保永远不要在从机上执行insert/update/del

我在MySQL 5.1中设置了主从复制,复制时忽略了表“sessions”(-replicate ignore table=ak.sessions)。如果我将数据更新/插入从属数据库中的会话表,会发生什么情况?复制还会继续吗?或者它会因为错误而停止复制过程吗?

主从复制规则拇指是
master
用于
insert/update/delete
,slave用于select

因此,根据定义,当任何
插入/更新/删除
发生时,它将被复制到从机。现在,我们需要确保永远不要在从机上执行
insert/update/delete
,因为不可能执行相反的操作,这将导致潜在的灾难

数据库的一些PHP库提供了主从式设置,如


但是,如果选择编写自定义数据库处理程序,则可能需要创建两个连接,一个用于主数据库,一个用于从数据库,并根据查询类型使用它们执行查询。

为什么要直接在从数据库中添加数据?即使您没有将会话表复制到从属服务器中,添加也不应妨碍,但如果您需要激活该表的复制,该怎么办?这将是一场灾难。规则是“主”用于插入/更新,“从”用于选择。谢谢你,阿比克。在我的例子中,问题是,我使用的是一个遗留框架,它是在只考虑masterdb的情况下构建的。现在有了主/从设备,我想将读到从设备和写到主设备分开。但该框架强制更新每个mysql\u连接的会话表。所以,如果我连接到Slave,它会更新Slave中的会话。或者,通过mysql配置,有没有办法将读取分为Slave和master?(除了应用程序代码更改)不,我在Vtiger CRM中遇到了同样的问题,我必须重新编写他们的sql连接对象。一个想法是创建2 DB连接,一个用于主设备,一个用于从设备。你必须有一些
查询
功能,在那里你可以检测它是否选择或插入/更新/删除并在相关服务器上执行。哦,好的。我正在寻找一个快速修复的替代方案,而不是改变他们的核心库。现在看来无论如何我都得修改它:)。我想没有其他选择。你能提供一些见解吗?@Emily你有人回答,这是正确的方法,如果你在插入/更新后立即调用,这取决于网络速度和复制发生的速度,那么最好从主机选择。这是高流量站点使用的策略之一。因此,假设您有一个api,有人向DB中添加了一些数据,您希望返回最后插入的数据作为响应,明智的做法是在主设备上选择,而不是从设备上选择,以确保复制延迟不会造成混淆。