mysql读写分离

时间:2021-01-12 21:25:55
严格意义上讲,MySQL 读、写分离确实存在上述情况,这是由Master-Slave 异步复制存在延迟所导致的,且Master binlog的写入为多线程,而Slave同步的sql_thread为单线程(MySQL5.6之前),两者写入速度不一致,在高并发写入的情况下,Slave节点延迟会更大;

所以,读、写分离时,一般的做法是,前端程序加判断,首先检查SLAVE节点同步位置以及状态是否同步至最新,确认其正常后,然后将查询请求发送至此节点。
方法如下:
1、请求发送过来时,首先在Master节点执行"Show master status",记录下当前的binlog以及position
2、在SLAVE节点上,执行 select master_pos_wait(binlog, pos[, timeout]), 等待同步到最新节点,然后发送查询请求