Database Replication with MySQL and PostgresSQL Fabian Mauchle Schedule Theory Why Replication Replication Layout and Types Conflicts Usage Scenarios Implementations Test Setup and Scenario Conclusion Questions? Bibliography Fabian Mauchle 2 Theory Fabian Mauchle 3 1
Why Replication? Few Data, Few Users: Lots of Data, Few Users: Few Data, Lots of Users: Lots of Data, Lots of Users:? Fabian Mauchle 4 How Replication? Use multiple servers! (with replication) Requirements Transparency Consistency (ACID) Fabian Mauchle 5 Dimensions of Database Replication Fabian Mauchle 6/ 30 2
Number Dimensions of Database Replication N Fabian Mauchle 7 Bandwidth Delay Dimensions of Database Replication d Fabian Mauchle 8 Replication Layout and Type Fabian Mauchle 9/ 30 3
Replication Layout and Type Synchronous Asynchronous Master-Slave Multi-Master Fabian Mauchle 10 Master-Slave Replication Layout and Type read update read replicate Fabian Mauchle 11 Multi-Master Replication Layout and Type read update read update replicate Fabian Mauchle 12 4
Asynchronous Replication Layout and Type Update Commit Commit OK Replicate Fabian Mauchle 13 Synchronous Replication Layout and Type Update Commit Commit OK Update Commit Commit OK Fabian Mauchle 14 Conflicts Fabian Mauchle 15 / 30 5
Conflicts Update Commit Commit OK Update Commit Commit OK Replicate Replicate Fabian Mauchle 16 1. Avoid Conflicts! 2. Avoid Conflicts! 3. Use Conflict Handler 4. Write Conflict Handler 5. Resolve Manually Conflicts Fabian Mauchle 17 Update Conflict Conflicts 1 A update update 1 B 1 C Fabian Mauchle 18 6
Conflicts Uniqueness Conflict 1 A insert insert 1 A 2 B 1 A 2 C Fabian Mauchle 19 Delete Conflict Conflicts 1 A delete update 1 A 2 C Fabian Mauchle 20 Usage Scenarios Fabian Mauchle 21 / 30 7
Usage Scenarios High Performance Cluster Synchronous Multi-Master (req. low distance) Asynchronous Multi-Master (req. conflict resolution) read update Fabian Mauchle 22 Usage Scenarios Distributed Databases (large distance) Asynchronous Master-Slave (few updates) Asynchronous Multi-Master (req. conflict resolution) Fabian Mauchle 23 Usage Scenarios Backup and Data Warehouse Asynchronous Master-Slave Main Application Public Access Backup Data Warehouse read update read replicate Fabian Mauchle 24 8
Implementations Fabian Mauchle 25 / 30 Implementations Synchronous Asynchronous Master-Slave Multi-Master Use Multi-Master (see next slide) Fabian Mauchle 26 Implementations Multi-Master Replication by circular Master-Slave Replication by (Maxia, 2006) No automatic conflict resolution Fabian Mauchle 27 9
MySQL replication internal Implementations Query: update... Transaction-log 1. insert 2. update... Replicate Transaction-log 1. insert 2. update... Replay Query Server 1 (master) Server 2 (slave) Fabian Mauchle 28 Implementations No built-in replication support! Fabian Mauchle 29 PostgreSQL extensions Implementations Synchronous Asynchronous Master-Slave Use Multi-Master -Slony-I -Burcado Multi-Master -Pgpool -Pgcluster -PgReplicator -Burcado Fabian Mauchle 30 10
Implementations User Origin User Subscriber sl_log sl_log Other Subscribers CREATE TRIGGER fills sl_log CREATE TRIGGER prevents modifications CREATE TABLE... Slonik Source: (Momjian, 2008) Fabian Mauchle 31 Test Setup and Scenario Fabian Mauchle 32 / 30 Test Setup and Scenario Test against conflict behaviour Replication delay not considered Performance under high load not considered VM1 VM2 VirtualBox VM3 Fabian Mauchle 33 11
Database Table Test Setup and Scenario CREATE TABLE test( INT id PRIMARY KEY AUTO_INCREMENT, CHAR(10) text NOT NULL UNIQUE, INT counter NOT NULL); Fabian Mauchle 34 MySQL Results Using Multi-Master layout by (Maxia, 2006) Remember: no conflict resolution! Conflict Auto Increment Update Conflict Uniqueness Conflict Delete Conflict Result Breaks Consistency Breaks Replication Breaks Consistency Fabian Mauchle 35 Conclusion Fabian Mauchle 36 / 30 12
Conclusion Few Data, Few Users: Lots of Data, Few Users: Few Data, Lots of Users: Lots of Data, Lots of Users: but... Fabian Mauchle 37 Conclusion Consider at design Select layout carefuly Try to avoid conflicts Closely monitor replication status (especialy with MySQL Multi-Master Replication) Fabian Mauchle 38 Questions? Fabian Mauchle 39 / 30 13
Bibliography Keating, B. (2001). Challenges Involved in Multimaster Replication. Retrieved 2008, from www.dbspecialists.com/files/presentations/mm_replication.html Maxia, G. (2006, 20 4). Advanced MySQL Replication. Retrieved 2008, from www.onlamp.com/pub/a/onlamp/2006/04/20/advanced-mysql-replication.html Momjian, B. (2008, 12). Replication Solutions. Retrieved 2008, from http://momjian.us/main/writings/pgsql/replication.pdf MySQL. (n.d.). Mysql Documentation. Retrieved 11 17, 2008, from http://dev.mysql.com/doc/ pgreplicator. (n.d.). PostgreSQL Replicator. Retrieved 2008, from http://pgreplicator.sourceforge.net t t Postgres-R. (n.d.). Terms and Definitons for Database Replication. Retrieved 2008, from www.postgres-r.org/documentation/terms Wikipedia. (2008, 6 27). Optimistic replication. Retrieved 11 17, 2008, from http://en.wikipedia.org/wiki/lazy_replication Wikipedia. (2008, 11 7). Replication (computer science). Retrieved 11 17, 2008, from http://en.wikipedia.org/wiki/replication_(computer_science) Fabian Mauchle 14