WorkLog Frontpage Log in / Register
High-Level Description | Task Dependencies | High-Level Specification | Low-Level Design | File Attachments | User Comments | Time Estimates | Funding and Votes | Progress Reports

 New replication APIs
Title
Task ID107
Queue
Version
Status
Priority
Copies toSergei

Created byKnielsen15 Mar 2010Done
Supervisor   
Lead Architect    
Architecture Review  
Implementor  
Code Review  
QA  
Documentation  
 High-Level Description
This is a top-level task for the project of designing a new set of replication
APIs for MariaDB.

This task is for the initial discussion of what to do and where to focus.

The project is started in this email thread:

    https://lists.launchpad.net/maria-developers/msg01998.html

Wiki page for the project:

    http://askmonty.org/wiki/ReplicationProject


The following sub-parts of the project are identified:

1. Event generator API: MWL#120

2. Event applier API: MWL#133

3. TC plugin: MWL#132

4. Materialisation of events (allowing plugins to transport/store events
   as opaque entities, without understanding of the internals).

 Task Dependencies
Others waiting for Task 107Task 107 is waiting forGraph
120 Replication API for stacked event generators 
132 Transaction coordinator plugin 
133 Event applier API 
 
Further Dependencies
116 Efficient group commit for binary log
 High-Level Specification
Current ideas/status after discussions on the mailing list:

 - Implement a set of plugin APIs and use them to move all of the existing
   MySQL replication into a (set of) plugins.

 - Design the APIs so that they can support full MySQL replication, but also
   so that they do not hardcode assumptions about how this replication
   implementation is done, and so that they will be suitable for other types of
   replication (Tungsten, Galera, parallel replication, ...).

 - APIs need to include the concept of a global transaction ID. Need to
   determine the extent to which the semantics of such ID will be defined
   by the API, and to which extend it will be defined by the plugin
   implementations.

 - APIs should properly support reliable crash-recovery with decent
   performance (eg. not require multiple mandatory fsync()s per commit, and
   not make group commit impossible).

 - Would be nice if the API provided facilities for implementing good
   consistency checking support (mainly checking master tables against slave
   tables is hard here I think, but also applying wrong binlog data and
   individual event checksums).


Steps to make this more concrete:

 - Investigate the current MySQL replication, and list all of the places where
   a plugin implementation will need to connect/hook into the MySQL server.
    * handler::{write,update,delete}_row()
    * Statement execution
    * Transaction start/commit
    * Table open
    * Query safe/not/safe for statement based replication
    * Statement-based logging details (user variables, random seed, etc.)
    * ...

 - Use this list to make an initial sketch of the set of APIs we need.

 - Use the list to determine the feasibility of this project and the level of
   detail in the API needed to support a full replication implementation as a
   plugin.
 Low-Level Design
 File Attachments
 NameTypeSizeByDate
 User Comments
 Time Estimates
NameHours WorkedLast Updated
Knielsen6921 Jun 2010
All Sub Tasks78 
Total147 
 Hrs WorkedProgressCurrentOriginal
This Task6900
Sub Tasks7800
Total14700
 
 Funding and Votes
Votes: 1: 100%
 Change vote: Useless    Nice to have    Important    Very important    

Funding: 0 offers, total 0 Euro
 Progress Reports
(Knielsen - Tue, 07 Sep 2010, 11:34
    
High Level Description modified.
--- /tmp/wklog.107.old.8531	2010-09-07 11:34:46.000000000 +0000
+++ /tmp/wklog.107.new.8531	2010-09-07 11:34:46.000000000 +0000
@@ -14,7 +14,7 @@
 
 The following sub-parts of the project are identified:
 
-1. Event generator API: MWL#116
+1. Event generator API: MWL#120
 
 2. Event applier API: MWL#133
 

(Knielsen - Fri, 27 Aug 2010, 13:20
    
High Level Description modified.
--- /tmp/wklog.107.old.32235	2010-08-27 13:20:54.000000000 +0000
+++ /tmp/wklog.107.new.32235	2010-08-27 13:20:54.000000000 +0000
@@ -16,8 +16,7 @@
 
 1. Event generator API: MWL#116
 
-2. Event applier API, allowing a plugin to apply/execute an event (eg. on a
-   slave) [1].
+2. Event applier API: MWL#133
 
 3. TC plugin: MWL#132
 
@@ -25,7 +24,4 @@
    as opaque entities, without understanding of the internals).
 
 
-[1] Applier API is described briefly here:
-http://kristiannielsen.livejournal.com/13382.html
-
 

(Knielsen - Fri, 27 Aug 2010, 13:18
    
Dependency created: WL#107 now depends on WL#133

(Knielsen - Wed, 25 Aug 2010, 12:19
    
High Level Description modified.
--- /tmp/wklog.107.old.16163	2010-08-25 12:19:31.000000000 +0000
+++ /tmp/wklog.107.new.16163	2010-08-25 12:19:31.000000000 +0000
@@ -11,3 +11,21 @@
 
     http://askmonty.org/wiki/ReplicationProject
 
+
+The following sub-parts of the project are identified:
+
+1. Event generator API: MWL#116
+
+2. Event applier API, allowing a plugin to apply/execute an event (eg. on a
+   slave) [1].
+
+3. TC plugin: MWL#132
+
+4. Materialisation of events (allowing plugins to transport/store events
+   as opaque entities, without understanding of the internals).
+
+
+[1] Applier API is described briefly here:
+http://kristiannielsen.livejournal.com/13382.html
+
+

(Knielsen - Tue, 24 Aug 2010, 14:09
    
Dependency created: WL#107 now depends on WL#132

(Sergei - Tue, 29 Jun 2010, 13:50
    
Status updated.
--- /tmp/wklog.107.old.31164	2010-06-29 13:50:15.000000000 +0000
+++ /tmp/wklog.107.new.31164	2010-06-29 13:50:15.000000000 +0000
@@ -1 +1 @@
-Un-Assigned
+In-Progress

(Knielsen - Thu, 24 Jun 2010, 12:04
    
Dependency created: WL#107 now depends on WL#120

(Knielsen - Mon, 21 Jun 2010, 08:36
    
Research and design thoughts.
Worked 19 hours and estimate 0 hours remain (original estimate increased by 19 hours).

(Knielsen - Mon, 07 Jun 2010, 12:11
    
High Level Description modified.
--- /tmp/wklog.107.old.31097	2010-06-07 12:11:57.000000000 +0000
+++ /tmp/wklog.107.new.31097	2010-06-07 12:11:57.000000000 +0000
@@ -7,3 +7,6 @@
 
     https://lists.launchpad.net/maria-developers/msg01998.html
 
+Wiki page for the project:
+
+    http://askmonty.org/wiki/ReplicationProject

(Knielsen - Mon, 29 Mar 2010, 07:33
    
Research and design discussions: Galera, 2pc/XA, group commit, multi-engine transactions.
Worked 14 hours and estimate 0 hours remain (original estimate increased by 14 hours).
-- View All Progress Notes (14 total) --


Report Generator:
 
Saved Reports:

WorkLog v4.0.0
  © 2010  Sergei Golubchik and Monty Program AB
  © 2004  Andrew Sweger <yDNA@perlocity.org> and Addnorya
  © 2003  Matt Wagner <matt@mysql.com> and MySQL AB