php-MySQL复制速度

假设我们在局域网上有3台服务器:

APP-PHP应用服务器

MASTER-主Mysql数据库服务器

从站-从站Mysql数据库服务器(复制MASTER)

在一个代码块(php)中,APP插入到MASTER中,检索last_insert_id,然后将其用于从SLAVE中选择刚插入的数据.

所以问题是,复制是否及时进行,以便SLAVE从MASTER获取数据?这是否受到主或从负载的影响?

最后,如果可用数据存在问题,是否有办法确保从SLAVE接收到最新数据?

解决方法:

因为MySQL复制时间是一个不可控制的变量(即使在正确的实现中,也会出现停止复制或阻止复制的问题),所以最好不要依赖数据复制.您可以将问题分为两种情况:

1)我是用户在执行CUD操作,我希望R操作后缀可以反映我刚才所做的更改.在这种情况下,您绝对需要从主数据库中提取数据,因为用户希望他的更改有效.

2)我是外部用户,我不知道发生了CUD命令,而且我通常不在乎,因此返回陈旧数据是可以接受的(在99%的实现中,否则您可能不会使用PHP * ).

#1的替代方法是通知用户他的更改正在传播,并且在某些情况下是可以接受的,例如许多网站都会告诉您,x可能最多需要y分钟才能显示,这是这种情况.

>如果需要即时更新,则可以尝试写入与(可能不可靠的)DB数据一起轮询的缓存层.诸如memcached之类的东西将是最佳选择.

上一篇:使用MySQL复制扩展PHP应用程序而无需更改PHP代码?


下一篇:python – 如何将数组复制到特定长度的数组