最近的工作需要为rdf数据库创建主从群集。 由于rdf数据库本身不支持主从复制功能,因此正在考虑从较高的APP应用程序中实现主从复制。 借鉴mysql和redis主从复制的实现原理,实现比较简单的主从复制功能。 本文介绍了mysql和redis的主从复制。
1.mysql主从复制
mysql二进制日志文件。 mysql将通过此文件复制。 有两种形式:基于语句的副本和基于行的副本。 根据语句的复制方式,将数据库的执行语句保存到日志文件中。 此方法具有某些指令语句random (、date )等缺点,但并非所有语句都可以正确执行。 在update或create语句中修改大量数据会增加锁定的范围和时间。 从mysql5.1开始,不再提供对这种复制方法的支持,而是采用行复制方法。 基于行的复制方法是将数据库中的修改行数据存储在日志文件中的方法。 与基于语句的复制方法相比,这种方法的优点主要是锁定范围更小,确保所有语句都正确执行。 缺点主要是数据恢复时间长,日志中存储的数据量大。
简要介绍主从机的复制过程。
1 .提交主库事务后,在数据更新完成之前,将更新更改记录写入二进制日志文件。
2 .备用库将主库的二进制日志数据复制到中继日志中。 备份数据库启动I/O线程并连接到主库,然后读取主库的二进制日志数据。
3 .备用库读取中继日志,将数据重新定位到备用库。 重放时使用单线程sql从中继日志读取事件,重放将事件更新数据读取到备用库中,完成数据重放,最终与主库中的数据匹配。
redis继续……
参考资料:
《高性能mysql》
《redis的设计与实现》