Advanced MySQL
  Replication for the
        masses

Giuseppe Maxia, QA Director, Continuent, Inc



     Facts. And Demos. Possibly fun
                                               1
Once Upon A Time,
 In The Life Of A
    Database
  Consultant ...
                    2
The story of a steel
       foundry

• Used MySQL databases to store
  production monitoring data
• Inserted a zillion records per second.
• Slaves often lagged behind


                                           3
transaction
                                             transaction
                                   MySQL       transaction
                                           transaction
                                                 transaction
                                   DBMS      transaction
                                                   transaction
                                               transaction
                                                     transaction
                                                 transaction
                                                   transaction
                                                     transaction



                            BINARY LOG




    ns act act tio n
tra ansio ns sac ntio
      ac ion ion n
                     ac
    nr tr tra aniton
    tsa a n csio
             nts ct n
          rn a o
         taa scti
               r
        trnsa



             n
             n
         tio
        ct
      tra

tra
REPLICATION
              transaction
              transaction




          MySQL
          DBMS




                                                                   4
The story of a shoe
        maker

• Had a successful business, spread to a
  dozen stores.
• Needed to aggregate the data from the
  stores in his headquarters database.




                                           5
MySQL
   MySQL
                           DBMS     MySQL
   DBMS
                                    DBMS




                            store
store                                store




                   MySQL
                   DBMS




           headquarters


                                             6
The story of a widgets
        seller
• Had a successful business, designed for one
  server.
• Products were created in several sites.
• Needed to allow insertions from more
  than one master at the time



                                                7
MySQL   MySQL
 DBMS    DBMS




master   master




 MySQL   MySQL
 DBMS    DBMS




master   master
                  8
All these stories tell us:

Nice dream, but MySQL
       can’t do it
                              9
Enter Tungsten Replicator




                            10
Tungsten Replicator 2.0


• What is it?



                          11
http://code.google.com/p/tungsten-replicator




                 Open Source
                 100% GPL v2



                                               12
What can it do?

• Easy failover
• Multiple masters
• Multiple sources to a single slave
• Parallel replication
• Replicate to Oracle and PostgreSQL database

                                                13
MySQL to foreign services


                      MySQL setup
                        to run as
                      MySQL master


        Master DB
                             Data is applied to
                              PostgreSQL or
                                   Oracle



                       Bin
                      Logs
           (Binlogs
           enabled)                               Slave DB

© Continuent 2010


                                                             14
From the beginning ...




                         15
Fail-over (1)




                16
Fail-over (2)




                17
Fail-over (3)




                18
Fail-over (4)




                19
Fail-over (5)




                20
Fail-over (6)




                21
Fail-over (7)




                22
Fail-over (8)




                23
Failover


• DEMO



                    24
master/slave with an attitude




                                25
The steel foundry dream
 or parallel replication
             From here ...




                             26
The steel foundry dream
 or parallel replication
              To here.




                           27
Parallel replication facts

• Sharded by database
• Good choice for slave lag problems
• Bad choice for single database projects


                                            28
Slave Lagging: why?

• Complex queries on the master
• Long lasting DDL
• Slave restart


                                  29
Testing parallel
  replication


                   30
db0
                        preparation (1)
 db1                                 sysbench



      db2                             sysbench


       db3                              sysbench


            db4                           sysbench



             db5                            sysbench


                  db6                           sysbench


                   db7                           sysbench



                        db8                        sysbench



                         db9                         sysbench


                                                       sysbench




                                                                  31
preparation (2)
db0


 db1


      db2


       db3


            db4


             db5


                  db6


                   db7


                        db8


                         db9




                                                 32
before the test (1)
db0


 db1


      db2


       db3


            db4


             db5


                  db6


                   db7


                        db8


                         db9




                                                     33
before the test (2)
   SQL thread




  RELAY logs

                    IO thread



                                          binary logs

MySQL slave

                   RELAY logs

  Tungsten slave           direct:
                            alpha
                           (slave)

                       replicator alpha




                                                        34
starting the test
   SQL thread




  RELAY logs

                    IO thread



                                         binary logs

MySQL slave

                   RELAY logs

  Tungsten slave          direct:
                           alpha
                          (slave)

                      replicator alpha




                                                       35
MySQL native
      replication


slave catch up in 00:59:30



                             36
Tungsten parallel
       replication


slave catch up in 00:25:40



                             37
The widget seller
dream, or multi masters

• Tungsten Replicator recipe: use more
  services




                                         38
Bi-directional replication




                             39
Bi-directional replication with slaves




                                         40
True multiple master



 We’ll see that in a moment.
           But first




                               41
The shoe maker dream,
 or multiple sources

• Tungsten Replicator recipe is still valid: use
  more services




                                                   42
Multiple source replication




                              43
Multiple masters replication: 3 nodes




                                        44
Multiple masters replication: 4 nodes




                                        45
Updating 4 masters : 1 flow




                             46
Updating 4 masters : 2 flows




                              47
Updating 4 masters : 3 flows




                              48
Updating 4 masters : 4 flows




                              49
Tungsten in practice


• installation



                         50
Installation

• Get the binaries
• Expand the tarball
• Run ./tools/tungsten-installer


                                   51
Tools

• replicator
• trepctl
• thl


                       52
replicator

• It’s the service provider
• You launch it once when you start
• You may restart it when you change config


                                             53
trepctl

• Tungsten Replicator ConTroLler
• It’s the driving seat for your replication
• You can start, update, and stop services
• You can get specific info

                                               54
thl


• Transaction History List
• Gives you access to the Tungsten relay logs


                                                55
ADVERTISING



              56
WE ARE HIRING!

QA and support
  engineers
http://www.continuent.com/about/careers



                                          57
Conclusion and
                    Questions

© Continuent 2011

                                     58
Contact Information


 Worldwide
 560 S. Winchester Blvd., Suite 500
 San Jose, CA 95128
 Tel (866) 998-3642
 Fax (408) 668-1009
 e-mail: sales@continuent.com




                          Continuent Web Site:
                       http://www.continuent.com
                            Tungsten Project
                    http://tungsten-replicator.org


© Continuent 2011

                                                     59

Advanced mysql replication for the masses