replikace (cspug 19.4.2011)

of 33 /33
Replikace v PostgreSQL CSPUG, Praha Tom´ s Vondra ([email protected]) Czech and Slovak PostgreSQL Users Group 19.4.2011

Author: tomas-vondra

Post on 03-Jul-2015

913 views

Category:

Technology


0 download

Embed Size (px)

DESCRIPTION

Přehled variant databázové replikace (master-slave vs. master-master, physical vs. logical) a jejich pro a proti. Krátká historie replikace v PostgreSQL s přehled nástrojů které dnes máme k dispozici (slony-I, pgpool-II, Londiste a Bucardo). A nakonec stručné srovnání s replikací ve dvou populárních databázích (MySQL a Oracle).

TRANSCRIPT

  • 1. Replikace v PostgreSQLCSPUG, Praha Tom Vondra ([email protected])asCzech and Slovak PostgreSQL Users Group 19.4.2011

2. Agenda c Uely replikace Varianty replikace Historie replikace v PostgreSQL Zabudovan replikace a Extern nstroje a Srovnn s dal DB a smiT. Vondra (CSPUG) Replikace v PostgreSQL 3. cUely replikacehigh-availabilityklovn vkonu (read vs. write)s a a yload balancingquery partitioningmigrace a upgrade bez vpadku yjin verze stejn databze aeaupln jin databze e a arychlej pstup pes WAN s r rlokln kopie na pobokch a c aroad warriors / kopie pro mobiln zazen r T. Vondra (CSPUG) Replikace v PostgreSQL 4. Varianty replikacemaster-master vs. master-slavesynchronn vs. asynchronn fyzick vs. logicka awarm standby vs. hot standbyzpsob implementaceuxlog (log le shipping vs. streaming)triggerstatement-based T. Vondra (CSPUG) Replikace v PostgreSQL 5. Master vs. slavemasterautoritativn zdroj informac zpracovv poadavky na zmny, pedv je dlea a z e r a aaslavezmny se pej z master databze, jinak read-only e r maj av podstat jen kopie master databze e amaster-slavejednodu jednosmrn replikacesse aread scalabilitymaster-masterobousmrn replikace - nutno eit kolizee ar swrite scalability T. Vondra (CSPUG) Replikace v PostgreSQL 6. Synchronn vs. asynchronn replikace synchronn commit ek na potvrzen dokonen replikace c ac pomalej ale vdy konzistentn jako celeks, zasynchronn na dokonen replikace se neek, zapse se jen loklnc c a a e rychlej ale me doj k nekonzistenci mezi originlems,uzta a replikou (replika je pozadu)semi-synchronn kompromis mezi spolehlivost a vkonem y v replik, ek se jen na potvrzen z prvnce c a T. Vondra (CSPUG) Replikace v PostgreSQL 7. Fyzick replikaceabinrn kopie datovch blok (xlog) a y umasteru do XLogu zapse binrn di (zm byte X v a enbloku Y na Z)slave pete a aplikuje na bloky (v podstat recovery) r c e T. Vondra (CSPUG) Replikace v PostgreSQL 8. Fyzick replikaceakladyminimln overhead (1%)a velmi jednoduch na nastaven ezpory ajen kompletn databze astejn verze DB (formt) aastejn HW (zejmna CPU architektura) y ejen master-slave (nemonost een konikt) zr s u T. Vondra (CSPUG) Replikace v PostgreSQL 9. Fyzick replikace / Log le shippinga1 UPDATE znamen zmnu nkolika datovch blok aee y u2 kad zmna generuje zznam v transakn logu z ae a c m3 pi zaplnn segmentu (16MB) se archivuje (NFS, ...) r e 4 archivovan segment se aplikuje na slave databziy a5 vsledkem je binrn kopie ya T. Vondra (CSPUG) Replikace v PostgreSQL 10. Fyzick replikace / Streaming replicationa1 UPDATE znamen zmnu nkolika datovch bloka e e yu2 kad zmna generuje zznam v transakn logu z a eac m3 zznamy se (asynchronn) pen do slave databze ae r asa4 zmny se aplikuje 5 vsledkem je (opt) binrn kopie yea T. Vondra (CSPUG) Replikace v PostgreSQL 11. Warm standby vs. Hot standby warm standbydatabze nastartovan v recovery mduaa opij a z master databze zmny a aplikuje jer maeslou jen pro HA - nelze se pipojit a spoutt dotazy z r se hot standbydatabze nastartovan v read-only mdua a olze spoutt read-only dotazy (nedostane XID)se T. Vondra (CSPUG) Replikace v PostgreSQL 12. Logick replikaceane aplikace binrn zmn bez znalosti struktury dat a ch eaplikace logickch operac (INSERT/UPDATE/DELETE) ykladyreplikace jen sti databze (nap. jedna tabulka)ca a rreplikace do jin verze / jin DB (uprage a migrace)eeumonuje multi-master replikaci zzpory anronj na nastaven i na zdroje a c e s nutnost een konikt (specick dle aplikace)r s u e T. Vondra (CSPUG) Replikace v PostgreSQL 13. Logick replikace / zpsoby implementacea ulog vech SQL / opakovan aplikace na repliku s azptn interpretace xlog zznam e aautriggeryproxy zachycuj SQL c T. Vondra (CSPUG) Replikace v PostgreSQL 14. Replikace nenahrazuje zlohovn a a replikuje se vechno (vetn omyl) s c e u hacker, idiot, unit test omylem na produkn DBc DROP DATABASE, DELETE, ... Zlohujte! Zlohujte! Zlohujte!aaaT. Vondra (CSPUG) Replikace v PostgreSQL 15. Replikace v PostgreSQLHistorie, souasnost a budoucnost cT. Vondra (CSPUG) Replikace v PostgreSQL 16. Historie replikace v PostgreSQLUnixov mentalita core teamu amen exibiln nstroje, monost kombinace s a zmnoho monost implementace - radji externz e eodpor k pidvn takovch vlastnost r a a ydo verze 8.4 (vetn) c eXLog le shipping replikace + warm standby (HA)zaj mav extern nstroje (Bucardo, Londiste, slony-I, ...) e averze 9.0asynchronn XLog streaming replikacemonost hot standby zverze 9.1synchronn XLog streaming replikace T. Vondra (CSPUG) Replikace v PostgreSQL 17. Zabudovan replikace a fyzick (a)synchronn replikace a rozpor mezi nroky na HA a reporting (zab queries)a jen trochu problm pi mrt mastera (s v slavy)e r u ce T. Vondra (CSPUG) Replikace v PostgreSQL 18. HA vs. reporting / query cancellationhigh-availabilityc lem je minimln delay oproti masteru (kvli failoveru)a ureportingdlouho b dotazy nad velkmi datovmi objemy ezc yydotaz potebuje blok kter se zmnil je zabitrye rychl aplikace zmn vt pravdpodobnost zabit ae e se zaj mav nastaven a vacuum defer cleanup age (master)hot standby feedback (standby) T. Vondra (CSPUG) Replikace v PostgreSQL 19. HA vs. reporting / query cancellationeen - dva slaves, jeden pro HA a druh pro reportingr s y T. Vondra (CSPUG) Replikace v PostgreSQL 20. Demo 1 vytvome a nakongurujeme mastera r 2 vytvome slave, napoj na master rme 3 provedeme nco na masterovie 4 pod ame se jak se to zpropagovalo na slave v 5 zkus njak dotazy nad slave (read / write)me e e 6 zastav masterame 7 provedeme failover T. Vondra (CSPUG) Replikace v PostgreSQL 21. Demo / masterpostgresql.conflisten_addresses = 127.0.0.1port = 5432# archivn reim zwal_level = hot_standbymax_wal_senders = 10# archivn reim zarchive_mode = onarchive_command = cp %p /var/pg9/archive/%fpg hba.conf# IPv4 local connectionshost replication repuser 127.0.0.1/32trustT. Vondra (CSPUG) Replikace v PostgreSQL 22. Demo / slavepostgresql.conflisten_addresses = 127.0.0.1port = 5433hot_standby = onrecovery.confstandby_mode = onprimary_conninfo = host=127.0.0.1 port=5432 user=repuser# ukonen recovery (touch)c trigger_file = /var/pg9/failover# naten z archivu logc urestore_command = cp /var/pg9/archive/%f "%p"T. Vondra (CSPUG) Replikace v PostgreSQL 23. Nevhody zabudovan replikace ye1 slave je jen pro ten c nenapln si TEMP tabulku (problm pro reporting) tee nenatete hodnotu ze sekvencec nelze udlat standardn zlohue a2 ne pln elegantn monitoring u e lag replikace na slave se d monitorovat pes psar vrazn se zlep ve verzi 9.1y es3 nelze dlat kaskdu (vichni vis na jednom masterovi) ea s T. Vondra (CSPUG) Replikace v PostgreSQL 24. Extern nstroje a typ technikaM/MM/S sync async PostgreSQL 9.0fyzick axlog ne ano neano PostgreSQL 9.1fyzick axlog ne anoanoano Londistelogick atriggers ne ano neano Bucardo logick atriggersano ano neano slony-I logick atriggers ne ano neano pgpool-II logick a proxy ano* ne*ano ne Postgres-XC cluster- anone neano* u proxy kategorie jako master nebo slave nemaj pln smyslu e T. Vondra (CSPUG) Replikace v PostgreSQL 25. Londistenapsno Skype, soust SkyTools (i dal nstroje) aca s aimplementovno v Pythonu (jako skoro ve ve Skype) a sPgQ - vlastn implementace fronty jen master/slave replikace (logick)ahttp://wiki.postgresql.org/wiki/Londiste Tutorialhttp://wiki.postgresql.org/wiki/SkytoolsT. Vondra (CSPUG) Replikace v PostgreSQL 26. Bucardo http://bucardo.org/ triggery a dmon - implementovno v Perlu (PL/Perl) e a zaloeno na LISTEN/NOTIFY ztransakn notikace zabudovan pmo do DB c e rjednoduch komunikace sessions pes frontu a r nedoke replikovat DDL (nejsou DDL triggery)az master to master - aktuln jen dva masterya e master to many slavesT. Vondra (CSPUG) Replikace v PostgreSQL 27. pgpool-IIhttp://pgpool.projects.postgresql.org/pou a proxy koncept (statement-based middleware)zvspojuje nkolik pokroilch vlastnost e c y connection poolingreplikace (vetn online recovery)c eload balancing (rozhazovn queries na repliky) a parallel queries (distribuovan tabulky) enkolik md, ne vdy je mono ve (parallel vs. failover) e o uzz spokud chcete HA een jsou asi jednodu nstroje r s ,ss a T. Vondra (CSPUG) Replikace v PostgreSQL 28. slony-Ihttp://slony.info/master-slave replikace (max. 20 subscriber)uzaloeno na triggerech a C funkcz chplusy5 let zkuenost z provozu s tm kompletn een (failover, provisioning, ...) e err s m nusyfronta udlost je eena pes tabulku (nutno VACUUM)a r srvy overhead ne een s jinak eenou frontou ss zr s r skomplexn - sloit nastaven obtzn een problmz e , e r s e uT. Vondra (CSPUG) Replikace v PostgreSQL 29. Jin DB eOracle & MySQL T. Vondra (CSPUG) Replikace v PostgreSQL 30. Jin DB / Oracle e DataGuard pou a XLog, dva mdy - Redo Apply a SQL Applyzvo Redo Apply - fyzick replikace (= streaming replikace)a SQL Apply - logick replikace, obohacen XLog, rzn a y u a omezen (ne vechny objekty, ne vechny datov typy) ss e Active Data Guard (dal $) umonuje hot standbysz Streams logick replikace, postaven nad Advanced Queueing aa obecn nstroj pro distribuci informac (ne jen replikace) e a GoldenGate log-based logick replikace pro heterogenn prosted a r (Oracle, DB2, MSSQL, MySQL, ...) Oracle doporuuje jako nhradu za Streams c aT. Vondra (CSPUG) Replikace v PostgreSQL 31. Jin DB / MySQL e asynchronn logick master-slave replikace (od 5.5 a semi-synchronn) postaveno na tzv. binlogu (statement-based log) statement-based (SBR) loguje kompletn SQL pkazy (kter zmnily data)re e ne vechny SQL pkazy jsou bezpen s rc e row-based (RBR) loguj se nln zmny jednotlivch dka e y ra u bezpenj ale vt objem dat ne SBRc e s e sz mixed-based (MBR) SBR nebo RBR podle typu eventu MySQL Cluster (NDB engine) - synchronn replikace zaloen na 2PC (ne na binlogu) z aT. Vondra (CSPUG) Replikace v PostgreSQL 32. Odkazy / obecne Replication @ wikipedia http://en.wikipedia.org/wiki/Replication (computer science) MySQL 5.5 Replication http://dev.mysql.com/doc/refman/5.5/en/replication.html http://dev.mysql.com/doc/refman/5.5/en/replication-sbr-rbr.html http://dev.mysql.com/doc/refman/5.5/en/replication-rbr-usage.html Drizzle http://docs.drizzle.org/replication.html http://code.google.com/p/protobuf/ Oracle Data Guard http://en.wikipedia.org/wiki/Oracle Data Guard Oracle Streams http://www.oracle.com/technetwork/database/features/data-integration/default-159085.html Oracle GoldenGate http://www.oracle.com/technetwork/middleware/goldengate/overview/index.htmlT. Vondra (CSPUG)Replikace v PostgreSQL 33. Odkazy / PostgreSQL Replication, Clustering, and Connection Pooling http://wiki.postgresql.org/wiki/Replication, Clustering, and Connection Pooling Replication solutions for PostgreSQL (Peter Eisentraut) http://www.slideshare.net/petereisentraut/replication-solutions-for-postgresql 9.0 Streaming Replication vs Slony (Steve Singer) http://scanningpages.wordpress.com/2010/10/09/9-0-streaming-replication-vs-slony/ PostgreSQL / WAL cong http://www.postgresql.org/docs/current/static/runtime-cong-wal.html http://developer.postgresql.org/pgdocs/postgres/runtime-cong-wal.html PostgreSQL / Comparison of Dierent Solutions http://developer.postgresql.org/pgdocs/postgres/dierent-replication-solutions.html repmgr https://github.com/greg2ndQuadrant/repmgrT. Vondra (CSPUG)Replikace v PostgreSQL