
Alex Yurchenko <alexey.yurchenko@codership.com> writes:
So when refactoring replication code and API we suggest to think of replication as of redundancy service and establish a general API for such service that can be utilized by different implementations with different qualities of service. In other words - make a whole replication system a plugin (like storage engines are), not only some measly filters.
Serg pointed me to this page, which is an early description of a plugin API for replication that the replication team at MySQL has implemented: http://forge.mysql.com/wiki/ReplicationFeatures/ReplicationInterface It seems this is what they used to implement Semi-Synchronous replication, which (as I mentioned) is available as a feature preview: http://forge.mysql.com/wiki/ReplicationFeatures/SemiSyncReplication You might want to look into it. The semi-synchronous replication is in fact loaded as a plugin in the MySQL implementation; this is from the presentation: On master – INSTALL PLUGIN 'rpl_semi_sync_master' SONAME 'libsemisync_master.so'; – SET rpl_semi_sync_master_enabled=1; – SET rpl_semi_sync_master_timeout=1000; (1s, default 10ms) On slave – INSTALL PLUGIN 'rpl_semi_sync_slave' SONAME 'libsemisync_slave.so'; – SET rpl_semi_sync_slave_enabled=1; – START SLAVE; We already have a number of links now, so I created a wiki page to collect this and other information for easy access: http://askmonty.org/wiki/index.php/ReplicationProject (Let me know if you need edit rights on this page; we haven't fully sorted out how to handle community access to edit on the wiki, but we will add it somehow if necessary). - Kristian.