Mysql多线程复制方案
背景
Mysql的复制方案为一个进程负责读取复制数据,另一个进程负责执行sql,这种方案很好的保护了数据的安全和准确性,但效率偏低。当主机的操作量比较大的时候,会引起数据复制延迟。已经严重的影响了应用。
方案
利用mysql的复制协议,采用锁表方式,来进行多线程复制。以下为方案的详细信息。
数据流程图:
[attach]1275[/attach]
流程图说明:
- []利用mysql复制协议,从主机获得复制数据。[/][]复制进程负责按事物写进共享内存。[/][]管理进程负责根据sql语句,解析出数据库和表名,回写共享内存。并按事物派生一个执行线程。[/][]执行线程在执行sql语句前,搜索当前共享内存中之前的语句是否有同库同表的语句,有就等待,没有就执行。[/]
- []数据的准确性,需要长期的运行观察,通过对帐来检查。[/][]数据的安全性,在发生灾难的时候,如何确保数据操作信息被正确保存并且在灾难消除后可以快速继续复制。[/][]易用性,需要提供和mysql复制功能的同样的操作。[/]