MySQL 复制如何保持同步?
How does MySQL replication stay in sync?
我有 1 个 MySQL 服务器来支持 PHP 应用程序。应用程序中的逻辑需要多个查询。例如,要添加交易,我需要创建多个查询对象并 运行 单独创建这些查询而不使用 commit
。意味着首先在 table 中使用一个对象添加交易数据。为了添加付款方式,我创建了不同的对象。
现在很好,因为我只有 1 个 MySQL 服务器。如果我有多个服务器(MySQL Master-Slave)会发生什么。
在一次操作中创建不同的对象将调用不同的服务器。并且由于延迟数据可能在另一台服务器上不可用。
请建议我正确执行此操作。如果问题不清楚,请要求澄清。谢谢!
这确实不是复制的问题。假设您有查询 A,然后是查询 B(依赖于 A)和查询 C(依赖于 B)。
所以你做的事情很直接,运行 它们按 A、B 和 C 的顺序排列。复制以相同的顺序将它们放入日志中。所以当你的奴隶执行它们时,它会以相同的方式和相同的顺序执行它们。
即使它们不同步,从站也知道它在日志中最后一次停止的位置,并将在那里重新开始。如果您使用 RDS 设置从站,则会自动为您处理。
如果您正在考虑使用 RDS,您将查询一个集群端点。该集群端点将自动访问活动的服务器并在那里创建查询。
提交查询后,从数据库将自动同步以反映您的更改。这需要几毫秒。
我有 1 个 MySQL 服务器来支持 PHP 应用程序。应用程序中的逻辑需要多个查询。例如,要添加交易,我需要创建多个查询对象并 运行 单独创建这些查询而不使用 commit
。意味着首先在 table 中使用一个对象添加交易数据。为了添加付款方式,我创建了不同的对象。
现在很好,因为我只有 1 个 MySQL 服务器。如果我有多个服务器(MySQL Master-Slave)会发生什么。
在一次操作中创建不同的对象将调用不同的服务器。并且由于延迟数据可能在另一台服务器上不可用。
请建议我正确执行此操作。如果问题不清楚,请要求澄清。谢谢!
这确实不是复制的问题。假设您有查询 A,然后是查询 B(依赖于 A)和查询 C(依赖于 B)。
所以你做的事情很直接,运行 它们按 A、B 和 C 的顺序排列。复制以相同的顺序将它们放入日志中。所以当你的奴隶执行它们时,它会以相同的方式和相同的顺序执行它们。
即使它们不同步,从站也知道它在日志中最后一次停止的位置,并将在那里重新开始。如果您使用 RDS 设置从站,则会自动为您处理。
如果您正在考虑使用 RDS,您将查询一个集群端点。该集群端点将自动访问活动的服务器并在那里创建查询。 提交查询后,从数据库将自动同步以反映您的更改。这需要几毫秒。