Replikace (CSPUG 19.4.2011)

1,233 views

Published on

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).

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,233
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Replikace (CSPUG 19.4.2011)

  1. 1. Replikace v PostgreSQL CSPUG, Praha Tom´ˇ Vondra (tv@fuzzy.cz) asCzech and Slovak PostgreSQL Users Group 19.4.2011
  2. 2. Agenda ´c Uˇely replikace Varianty replikace Historie replikace v PostgreSQL Zabudovan´ replikace a Extern´ n´stroje ı a Srovn´n´ s dalˇ´ DB a ı sımi T. Vondra (CSPUG) Replikace v PostgreSQL
  3. 3. ´cUˇely replikace high-availability ˇk´lov´n´ v´konu (read vs. write) s a a ı y load balancing query partitioning migrace a upgrade bez v´padku y jin´ verze stejn´ datab´ze a e a uplnˇ jin´ datab´ze ´ e a a rychlejˇ´ pˇıstup pˇes WAN sı r´ r lok´ln´ kopie na poboˇk´ch a ı c a road warriors / kopie pro mobiln´ zaˇızen´ ı r´ ı T. Vondra (CSPUG) Replikace v PostgreSQL
  4. 4. Varianty replikace master-master vs. master-slave synchronn´ vs. asynchronn´ ı ı fyzick´ vs. logick´ a a warm standby vs. hot standby zp˚sob implementace u xlog (log file shipping vs. streaming) trigger statement-based T. Vondra (CSPUG) Replikace v PostgreSQL
  5. 5. Master vs. slave master autoritativn´ zdroj informac´ ı ı zpracov´v´ poˇadavky na zmˇny, pˇed´v´ je d´le a a z e r a a a slave zmˇny se pˇej´ ı z master datab´ze, jinak read-only e r ımaj´ a v podstatˇ jen “kopie” master datab´ze e a master-slave jednoduˇˇ´ “jednosmˇrn´” replikace ssı e a read scalability master-master obousmˇrn´ replikace - nutno ˇeˇit kolize e a r s write scalability T. Vondra (CSPUG) Replikace v PostgreSQL
  6. 6. Synchronn´ vs. asynchronn´ replikace ı ı synchronn´ ı commit ˇek´ na potvrzen´ dokonˇen´ replikace c a ı c ı pomalejˇ´ ale vˇdy konzistentn´ jako celek sı, z ı asynchronn´ ı na dokonˇen´ replikace se neˇek´, zap´se se jen lok´lnˇ c ı c a ıˇ a e rychlejˇ´ ale m˚ˇe doj´ k nekonzistenci mezi origin´lem sı, uz ıt a a replikou (replika je “pozadu”) semi-synchronn´ ı kompromis mezi spolehlivost´ a v´konem ı y v´ replik, ˇek´ se jen na potvrzen´ z prvn´ ıce c a ı ı T. Vondra (CSPUG) Replikace v PostgreSQL
  7. 7. Fyzick´ replikace a bin´rn´ kopie datov´ch blok˚ (xlog) a ı y u masteru do XLogu zap´se “bin´rn´ diff” (zmˇˇ byte X v ıˇ a ı en bloku Y na Z) slave pˇeˇte a aplikuje na bloky (v podstatˇ recovery) r c e T. Vondra (CSPUG) Replikace v PostgreSQL
  8. 8. Fyzick´ replikace a klady minim´ln´ overhead (1%) a ı velmi jednoduch´ na nastaven´ e ı z´pory a jen kompletn´ datab´ze ı a stejn´ verze DB (form´t) a a stejn´ HW (zejm´na CPU architektura) y e jen master-slave (nemoˇnost ˇeˇen´ konflikt˚) z r s ı u T. Vondra (CSPUG) Replikace v PostgreSQL
  9. 9. Fyzick´ replikace / Log file shipping a 1 UPDATE znamen´ zmˇnu nˇkolika datov´ch blok˚ a e e y u 2 kaˇd´ zmˇna generuje z´znam v transakˇn´ logu z a e a c ım 3 pˇi zaplnˇn´ segmentu (16MB) se archivuje (NFS, ...) r e ı 4 archivovan´ segment se aplikuje na slave datab´zi y a 5 v´sledkem je bin´rn´ kopie y a ı T. Vondra (CSPUG) Replikace v PostgreSQL
  10. 10. Fyzick´ replikace / Streaming replication a 1 UPDATE znamen´ zmˇnu nˇkolika datov´ch blok˚ a e e y u 2 kaˇd´ zmˇna generuje z´znam v transakˇn´ logu z a e a c ım 3 z´znamy se (asynchronnˇ) pˇen´ˇ´ do slave datab´ze a e r ası a 4 zmˇny se aplikuj´ e ı 5 v´sledkem je (opˇt) bin´rn´ kopie y e a ı T. Vondra (CSPUG) Replikace v PostgreSQL
  11. 11. Warm standby vs. Hot standby warm standby datab´ze nastartovan´ v “recovery m´du” a a o pˇij´ a z master datab´ze zmˇny a aplikuje je r ım´ a e slouˇ´ jen pro HA - nelze se pˇipojit a spouˇtˇt dotazy zı r se hot standby datab´ze nastartovan´ v “read-only m´du” a a o lze spouˇtˇt read-only dotazy (nedostane XID) se T. Vondra (CSPUG) Replikace v PostgreSQL
  12. 12. Logick´ replikace a ne aplikace bin´rn´ zmˇn bez znalosti struktury dat a ıch e aplikace logick´ch operac´ (INSERT/UPDATE/DELETE) y ı klady replikace jen ˇ´sti datab´ze (napˇ. jedna tabulka) ca a r replikace do jin´ verze / jin´ DB (uprage a migrace) e e umoˇnuje multi-master replikaci zˇ z´pory a n´roˇnˇjˇ´ na nastaven´ i na zdroje a c e sı ı nutnost ˇeˇen´ konflikt˚ (specifick´ dle aplikace) r s ı u e T. Vondra (CSPUG) Replikace v PostgreSQL
  13. 13. Logick´ replikace / zp˚soby implementace a u log vˇech SQL / opakovan´ aplikace na repliku s a zpˇtn´ interpretace xlog z´znam˚ e a a u triggery proxy zachycuj´ ı SQL ıc´ T. Vondra (CSPUG) Replikace v PostgreSQL
  14. 14. Replikace nenahrazuje z´lohov´n´ a a ı replikuje se vˇechno (vˇetnˇ omyl˚) s c e u hacker, idiot, unit test omylem na produkˇn´ DB c ı DROP DATABASE, DELETE, ... Z´lohujte! Z´lohujte! Z´lohujte! a a a T. Vondra (CSPUG) Replikace v PostgreSQL
  15. 15. Replikace v PostgreSQL Historie, souˇasnost a budoucnost c T. Vondra (CSPUG) Replikace v PostgreSQL
  16. 16. Historie replikace v PostgreSQL “Unixov´ mentalita” core teamu a menˇ´ flexibiln´ n´stroje, moˇnost kombinace sı ı a z mnoho moˇnost´ implementace - radˇji externˇ z ı e e odpor k pˇid´v´n´ takov´ch vlastnost´ r a a ı y ı do verze 8.4 (vˇetnˇ) c e XLog file shipping replikace + “warm standby” (HA) zaj´ ımav´ extern´ n´stroje (Bucardo, Londiste, slony-I, ...) e ı a verze 9.0 asynchronn´ XLog streaming replikace ı moˇnost “hot standby” z verze 9.1 synchronn´ XLog streaming replikace ı T. Vondra (CSPUG) Replikace v PostgreSQL
  17. 17. Zabudovan´ replikace a fyzick´ (a)synchronn´ replikace a ı rozpor mezi n´roky na HA a reporting (zab´ ı queries) a ıjen´ trochu probl´m pˇi ´mrt´ mastera (s v´ slavy) e r u ı ıce T. Vondra (CSPUG) Replikace v PostgreSQL
  18. 18. HA vs. reporting / query cancellation high-availability c´ ılem je minim´ln´ delay oproti masteru (kv˚li failoveru) a ı u reporting dlouho bˇˇ´ ı dotazy nad velk´mi datov´mi objemy ezıc´ y y dotaz potˇebuje blok kter´ se zmˇnil − je zabit r y e → rychl´ aplikace zmˇn − vˇtˇ´ pravdˇpodobnost zabit´ a e → e sı e ı zaj´ ımav´ nastaven´ a ı vacuum defer cleanup age (master) hot standby feedback (standby) T. Vondra (CSPUG) Replikace v PostgreSQL
  19. 19. HA vs. reporting / query cancellation ˇeˇen´ - dva slaves, jeden pro HA a druh´ pro reporting r s ı y T. Vondra (CSPUG) Replikace v PostgreSQL
  20. 20. Demo 1 vytvoˇıme a nakonfigurujeme mastera r´ 2 vytvoˇıme slave, napoj´ na master r´ ıme 3 provedeme nˇco na masterovi e 4 pod´ ame se jak se to zpropagovalo na slave ıv´ 5 zkus´ nˇjak´ dotazy nad slave (read / write) ıme e e 6 zastav´ mastera ıme 7 provedeme failover T. Vondra (CSPUG) Replikace v PostgreSQL
  21. 21. Demo / master postgresql.conf listen_addresses = ’127.0.0.1’ port = 5432 # archivn´ reˇim ı z wal_level = hot_standby max_wal_senders = 10 # archivn´ reˇim ı z archive_mode = on archive_command = ’cp %p /var/pg9/archive/%f’ pg hba.conf # IPv4 local connections host replication repuser 127.0.0.1/32 trust T. Vondra (CSPUG) Replikace v PostgreSQL
  22. 22. Demo / slave postgresql.conf listen_addresses = ’127.0.0.1’ port = 5433 hot_standby = on recovery.conf standby_mode = ’on’ primary_conninfo = ’host=127.0.0.1 port=5432 user=repuser’ # ukonˇen´ recovery (touch) c ı trigger_file = ’/var/pg9/failover’ # naˇten´ z archivu log˚ c ı u restore_command = ’cp /var/pg9/archive/%f "%p"’ T. Vondra (CSPUG) Replikace v PostgreSQL
  23. 23. Nev´hody zabudovan´ replikace y e 1 slave je jen pro ˇten´ c ı nenapln´ si TEMP tabulku (probl´m pro reporting) ıte e nenaˇtete hodnotu ze sekvence c nelze udˇlat standardn´ z´lohu e ı a 2 ne ´plnˇ elegantn´ monitoring u e ı lag replikace na slave se d´ monitorovat pˇes “ps” a r v´raznˇ se zlepˇ´ ve verzi 9.1 y e sı 3 nelze dˇlat kask´du (vˇichni vis´ na jednom masterovi) e a s ı T. Vondra (CSPUG) Replikace v PostgreSQL
  24. 24. Extern´ n´stroje ı a typ technika M/M M/S sync async PostgreSQL 9.0 fyzick´ a xlog ne ano ne ano PostgreSQL 9.1 fyzick´ a xlog ne ano ano ano Londiste logick´ a triggers ne ano ne ano Bucardo logick´ a triggers ano ano ne ano slony-I logick´ a triggers ne ano ne ano pgpool-II logick´ a proxy ano* ne* ano ne Postgres-XC cluster - ano ne ne ano * u proxy kategorie jako master nebo slave nemaj´ ´plnˇ smysl ıu e T. Vondra (CSPUG) Replikace v PostgreSQL
  25. 25. Londiste naps´no Skype, souˇ´st SkyTools (i dalˇ´ n´stroje) a ca sı a implementov´no v Pythonu (jako skoro vˇe ve Skype) a s PgQ - vlastn´ implementace fronty ı jen master/slave replikace (logick´) a http://wiki.postgresql.org/wiki/Londiste Tutorial http://wiki.postgresql.org/wiki/Skytools T. Vondra (CSPUG) Replikace v PostgreSQL
  26. 26. Bucardo http://bucardo.org/ triggery a d´mon - implementov´no v Perlu (PL/Perl) e a zaloˇeno na LISTEN/NOTIFY z transakˇn´ notifikace zabudovan´ pˇımo do DB c ı e r´ jednoduch´ komunikace sessions pˇes frontu a r nedok´ˇe replikovat DDL (nejsou DDL triggery) az master to master - aktu´lnˇ jen dva mastery a e master to many slaves T. Vondra (CSPUG) Replikace v PostgreSQL
  27. 27. pgpool-II http://pgpool.projects.postgresql.org/ pouˇ´ a proxy koncept (statement-based middleware) zıv´ spojuje nˇkolik pokroˇil´ch vlastnost´ e c y ı connection pooling replikace (vˇetnˇ online recovery) c e load balancing (rozhazov´n´ queries na repliky) a ı parallel queries (distribuovan´ tabulky) e nˇkolik m´d˚, ne vˇdy je moˇno vˇe (parallel vs. failover) e o u z z s pokud chcete HA ˇeˇen´ jsou asi jednoduˇˇ´ n´stroje r s ı, ssı a T. Vondra (CSPUG) Replikace v PostgreSQL
  28. 28. slony-I http://slony.info/ master-slave replikace (max. 20 subscriber˚) u zaloˇeno na triggerech a C funkc´ z ıch plusy 5 let zkuˇenost´ z provozu s ı t´mˇˇ kompletn´ ˇeˇen´ (failover, provisioning, ...) e er ır s ı m´ ınusy fronta ud´lost´ je ˇeˇena pˇes tabulku (nutno VACUUM) a ı r s r vyˇˇ´ overhead neˇ ˇeˇen´ s jinak ˇeˇenou frontou ssı zr s ı r s komplexn´ - sloˇit´ nastaven´ obt´zn´ ˇeˇen´ probl´m˚ ı z e ı, ıˇ e r s ı e u T. Vondra (CSPUG) Replikace v PostgreSQL
  29. 29. Jin´ DB e Oracle & MySQL T. Vondra (CSPUG) Replikace v PostgreSQL
  30. 30. Jin´ DB / Oracle e DataGuard pouˇ´ a XLog, dva m´dy - “Redo Apply” a “SQL Apply” zıv´ o Redo Apply - fyzick´ replikace (= streaming replikace) a SQL Apply - logick´ replikace, obohacen´ XLog, r˚zn´ a y u a omezen´ (ne vˇechny objekty, ne vˇechny datov´ typy) ı s s e Active Data Guard (dalˇ´ $) umoˇnuje “hot standby” sı zˇ Streams logick´ replikace, postaven´ nad Advanced Queueing a a obecnˇ n´stroj pro distribuci informac´ (ne jen replikace) e a ı GoldenGate log-based logick´ replikace pro heterogenn´ prostˇed´ a ı r ı (Oracle, DB2, MSSQL, MySQL, ...) Oracle doporuˇuje jako n´hradu za Streams c a T. Vondra (CSPUG) Replikace v PostgreSQL
  31. 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 pˇıkazy (kter´ zmˇnily data) ı r´ e e ne vˇechny SQL pˇıkazy jsou “bezpeˇn´” s r´ c e row-based (RBR) loguj´ se fin´ln´ zmˇny jednotliv´ch ˇ´dk˚ ı a ı e y ra u bezpeˇnˇjˇ´ ale vˇtˇ´ objem dat neˇ SBR c e sı e sı z mixed-based (MBR) SBR nebo RBR podle typu eventu MySQL Cluster (NDB engine) - synchronn´ replikace ı zaloˇen´ na 2PC (ne na binlogu) z a T. Vondra (CSPUG) Replikace v PostgreSQL
  32. 32. Odkazy / obecn´ e 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.html T. Vondra (CSPUG) Replikace v PostgreSQL
  33. 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 config http://www.postgresql.org/docs/current/static/runtime-config-wal.html http://developer.postgresql.org/pgdocs/postgres/runtime-config-wal.html PostgreSQL / Comparison of Different Solutions http://developer.postgresql.org/pgdocs/postgres/different-replication-solutions.html repmgr https://github.com/greg2ndQuadrant/repmgr T. Vondra (CSPUG) Replikace v PostgreSQL

×