SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Replikacija u bazama podataka


      Vatroslav Mileusnić, univ.bacc.inf.

      mileusnic.vatroslav@gmail.com


                                                 DORS/CLUC
                                            Zagreb, 24.5.2012.
Što je replikacija?
Replikacija baza podataka je kreiranje i održavanje
 višestrukih kopija iste baze.
Vrste replikacija:
   sinkrona i asinkrona
   master-slave i master-master (multimaster)
   ...
Sinkrona                      Asinkrona
propagira svaku transakciju     propagira skup transakcija
puno veći overhead zbog         koristi manje mrežne
  uspostavljanja konekcije za     propusnosti i pruža bolje
  svaku transakciju               performanse
zaustavlja replikaciju ako je   visoka dostupnost
  jedan server nedostupan          replikacijske grupe
                                mogućnost sukoba podataka
                                mogućnost izgubljenih
                                 transakcija
Master-slave                Multimaster
1 glavna, ostale kopije    višegospodarska
zapisuje se na master        replikacija
propagira se ostalima      moguće zapisivati na bilo
                            koji server, pa se
čitanje se dijeli između    propagira svim ostalima
   svih servera
                           čitanje se dijeli između
konfiguriranje slave          svih servera
  servera da preuzme
  ulogu master-a ako       snažna i fleksibilna
  pravi master ispadne       mogućnost, ali i vrlo
                             kompleksna
Problemi kod multimaster replikacije
mogućnost sukoba u asinkronoj replikaciji
  sukob ažuriranja
  sukob jedinstvenosti
  sukob brisanja
moguća rješenja:
  konfiguriranje aplikacije da piše u samo jednu bazu
  omogućiti da aplikacija može pisati u drugu bazu, ako prva
    ispadne
Problemi kod multimaster replikacije
vrlo kratki intervali pražnjenja redova
  korištenje velikog broja resursa sustava
  pokretanje i zaustavljanje pražnjenja redova zahtijeva puno
    procesorskih ciklusa
rješenje:
  ne pretjerivati sa zahtjevima intervala pražnjenja
  intervali od 1 ili više minuta su sasvim u redu
Problemi kod multimaster replikacije
alat za nadgledanje replikacijskog sustava
  ako koristimo sinkronu replikaciju, svi serveri moraju biti
    aktivni i ispravni
  automatizirani alat koji periodično provjera status svih
    servera
  ako alat odredi da je neki server nedostupan, pokušat će
    ga ponovno pokrenuti, a ako ne uspije, uklonit će ga iz
    replikacije, tako da replikacija može dalje funkcionirati
Primjer replikacije
Asinkrona master-slave replikacija u MySQL-u
Asinkrona master-slave replikacija u PostgreSQL-u
Asinkrona multimaster replikacija u CouchDB-u


Prikazana rješenja nisu konfigurirana za produkcijske
  servere, ali su dovoljno dobra za učenje i shvaćanje
MySQL
Na serverima kreirati bazu podataka (replicate_me)
Na master serveru izmijeniti: /etc/mysql/my.cnf
  #skip-networking
  #bind-address         = 127.0.0.1
  log-bin = /var/log/mysql/mysql-bin.log
  binlog-do-db = replicate_me
  server-id=1
Snimiti datoteku i resetirati MySQL
MySQL
Ući u MySQL i dodijeliti prava slave korisniku:
  GRANT REPLICATION SLAVE ON *.* TO
   slave_korisnik@192.168.1.101 IDENTIFIED BY 'lozinka';
  GRANT RELOAD SLAVE ON *.* TO
   slave_korisnik@192.168.1.101 IDENTIFIED BY 'lozinka';
  GRANT SUPER SLAVE ON *.* TO
   slave_korisnik@192.168.1.101 IDENTIFIED BY 'lozinka';
  FLUSH PRIVILEGES;
MySQL
Izvršiti naredbe za prikazivanje statusa mastera:
  USE replicate_me;
  SHOW MASTER STATUS;
     obratimo pažnju na vrijednosti stupaca File i Position
  UNLOCK TABLES;
MySQL
Na slave serveru u /etc/mysql/my.cnf dodati:
  server-id = 2
  master-host = 192.168.1.100
  master-user = slave_korisnik
  master-password = lozinka
  master-connect-retry = 60
  replicate-do-db = replicate_me
MySQL
Na slave serveru ući u MySQL i izvršiti:
  STOP SLAVE;
  CHANGE MASTER TO MASTER_HOST = '192.168.1.100'
  MASTER_USER='slave_korisnik',
   MASTER_PASSWORD='lozinka',
   MASTER_LOG_FILE='mysql-bin.000001',
   MASTER_LOG_POS=106;
  START SLAVE;
PostgreSQL
Kao postgres korisnik inicijalizirati klaster i na masteru
 i na slave serverima:
   initdb /var/lib/pgsql/data
Omogućiti komunikaciju postgres korisnika
   SSH ili drugi način
PostgreSQL
Na master u /var/lib/pgsql/data/postgresql.conf
  wal_level = hot_standby
  archive_mode = on
  archive_command =
     'scp %p postgres@192.168.1.101:/var/lib/pgsql/archive/%f'
Pokrenemo klaster
  pg_ctl -D /var/lib/pgsql/data start
PostgreSQL
Napravimo backup
  psql -c "SELECT pg_start_backup('osnovni backup')"
    template1
  tar cvf pg_base_backup.tar /var/lib/pgsql/data
  psql -c "SELECT pg_stop_backup()" template1
Dobivenu datoteku kopiramo na slave i raspakiramo
  mv /var/lib/pgsql/pg_base_backup.tar /
  tar xvf pg_base_backup.tar
Na slave-u izbrišemo /data/postmaster.pid
PostgreSQL
Master, /var/lib/pgsql/data/postgresql.conf
  listen_addresses = '*'
  max_wal_senders = 5
  wal_keep_segments = 32
Master, /var/lib/pgsql/data/pg_hba.conf
  host replication postgres 192.168.1.101/24 trust
PostgreSQL
Na slave serveru /var/lib/pgsql/data/postgresql.conf
  hot_standby = on
Dodati recovery.conf
  standby_mode = 'on'
  primary_conninfo = 'host=192.168.1.100 port=5432
     user=postgres'
  može (trebao bi) imati i dodatne postavke
Pokrenuti servere
  pg_ctl -D /var/lib/pgsql/data start
CouchDB
Pristupimo konzoli za administraciju Futon
  <IP adresa računala>:5984/_utils
U Configuration namjestimo da sluša sve IP adrese
  bind_address u 0.0.0.0
Kreiramo baze podataka
U Replicator namjestiti
  <IP drugog računala>/baza_na_drugom_racunalu
  uključimo Continuous
  gumb Replicate
CouchDB
Kako bi napravili multimaster replikaciju, ponoviti
 podešavanje pomoću alata Replicator na drugom
 računalu
  <IP drugog računala>/baza_na_prvom_racunalu
  uključimo Continuous
  gumb Replicate
Zaključak
Dojmovi
  uobičajena MySQL vs PostgreSQL diskusija
  realno: nećemo birati koji sustav koristimo samo temeljem
    toga čija je replikacija bolja
  za male projekte i kućnu upotrebu, CouchDB


hr.linkedin.com/in/vatroslavmileusnic
Pitanja?

Weitere ähnliche Inhalte

Was ist angesagt?

Filipino^module 3 forewarned, forearmed
Filipino^module 3   forewarned, forearmedFilipino^module 3   forewarned, forearmed
Filipino^module 3 forewarned, forearmedpeosonline
 
Filipino^module 6 country cozy-middle east and africa
Filipino^module 6   country cozy-middle east and africaFilipino^module 6   country cozy-middle east and africa
Filipino^module 6 country cozy-middle east and africapeosonline
 
Filipino^module 6 country cozy-asia pacific
Filipino^module 6   country cozy-asia pacificFilipino^module 6   country cozy-asia pacific
Filipino^module 6 country cozy-asia pacificpeosonline
 
Institution of Civil Engineers, the Reviewer's perspective
Institution of Civil Engineers, the Reviewer's perspectiveInstitution of Civil Engineers, the Reviewer's perspective
Institution of Civil Engineers, the Reviewer's perspectiveianjenkinson
 
MODULE 8 - POEA - CARING ALL THE WAY
MODULE 8 - POEA - CARING ALL THE WAY MODULE 8 - POEA - CARING ALL THE WAY
MODULE 8 - POEA - CARING ALL THE WAY WorkAbroadph
 
Filipino^module 2 job search
Filipino^module 2   job searchFilipino^module 2   job search
Filipino^module 2 job searchpeosonline
 
MODULE 3 - FOREWARNED, FOREARMED
MODULE 3 - FOREWARNED, FOREARMED MODULE 3 - FOREWARNED, FOREARMED
MODULE 3 - FOREWARNED, FOREARMED WorkAbroadph
 
MODULE 5 - SEAL THE DEAL
MODULE 5 - SEAL THE DEAL MODULE 5 - SEAL THE DEAL
MODULE 5 - SEAL THE DEAL WorkAbroadph
 
Filipino^module 8 poea caring all the way
Filipino^module 8   poea caring all the wayFilipino^module 8   poea caring all the way
Filipino^module 8 poea caring all the waypeosonline
 

Was ist angesagt? (12)

Filipino^module 3 forewarned, forearmed
Filipino^module 3   forewarned, forearmedFilipino^module 3   forewarned, forearmed
Filipino^module 3 forewarned, forearmed
 
Filipino^module 6 country cozy-middle east and africa
Filipino^module 6   country cozy-middle east and africaFilipino^module 6   country cozy-middle east and africa
Filipino^module 6 country cozy-middle east and africa
 
Filipino^module 6 country cozy-asia pacific
Filipino^module 6   country cozy-asia pacificFilipino^module 6   country cozy-asia pacific
Filipino^module 6 country cozy-asia pacific
 
Module 1
Module 1Module 1
Module 1
 
Module 1
Module 1Module 1
Module 1
 
Institution of Civil Engineers, the Reviewer's perspective
Institution of Civil Engineers, the Reviewer's perspectiveInstitution of Civil Engineers, the Reviewer's perspective
Institution of Civil Engineers, the Reviewer's perspective
 
MODULE 8 - POEA - CARING ALL THE WAY
MODULE 8 - POEA - CARING ALL THE WAY MODULE 8 - POEA - CARING ALL THE WAY
MODULE 8 - POEA - CARING ALL THE WAY
 
Filipino^module 2 job search
Filipino^module 2   job searchFilipino^module 2   job search
Filipino^module 2 job search
 
Module 3
Module 3Module 3
Module 3
 
MODULE 3 - FOREWARNED, FOREARMED
MODULE 3 - FOREWARNED, FOREARMED MODULE 3 - FOREWARNED, FOREARMED
MODULE 3 - FOREWARNED, FOREARMED
 
MODULE 5 - SEAL THE DEAL
MODULE 5 - SEAL THE DEAL MODULE 5 - SEAL THE DEAL
MODULE 5 - SEAL THE DEAL
 
Filipino^module 8 poea caring all the way
Filipino^module 8   poea caring all the wayFilipino^module 8   poea caring all the way
Filipino^module 8 poea caring all the way
 

Andere mochten auch

Diapositivas canaima
Diapositivas  canaimaDiapositivas  canaima
Diapositivas canaimaEmilde Medina
 
Steps to social media strategy
Steps to social media strategySteps to social media strategy
Steps to social media strategysmercer2
 
2013 Presidents' Forum of St. Louis - Kraftig Presentation
2013 Presidents' Forum of St. Louis - Kraftig Presentation2013 Presidents' Forum of St. Louis - Kraftig Presentation
2013 Presidents' Forum of St. Louis - Kraftig PresentationRobert Rodenbaugh
 
The House that Service Built
The House that Service BuiltThe House that Service Built
The House that Service BuiltRobert Rodenbaugh
 
WS `Publisher Deck
WS `Publisher DeckWS `Publisher Deck
WS `Publisher DeckDavid Facter
 
Arpita mehta mphil(0930006)
Arpita mehta mphil(0930006)Arpita mehta mphil(0930006)
Arpita mehta mphil(0930006)Ravi Prakash
 
WebSpectator - Time as a measurement
WebSpectator - Time as a measurementWebSpectator - Time as a measurement
WebSpectator - Time as a measurementDavid Facter
 
So Easy Pay Presentation
So Easy Pay PresentationSo Easy Pay Presentation
So Easy Pay Presentationssaib
 
Web spectator time as a measurement
Web spectator   time as a measurementWeb spectator   time as a measurement
Web spectator time as a measurementDavid Facter
 
Jmj gonzalez vega brandon manuel (1)
Jmj gonzalez vega brandon manuel (1)Jmj gonzalez vega brandon manuel (1)
Jmj gonzalez vega brandon manuel (1)BrandonGonzalezVega
 
Milieuprestatie Bouwbesluit 2012
Milieuprestatie Bouwbesluit 2012Milieuprestatie Bouwbesluit 2012
Milieuprestatie Bouwbesluit 2012gijrath
 

Andere mochten auch (20)

Positive influence of a strong reputatino on a company´s Economic and financi...
Positive influence of a strong reputatino on a company´s Economic and financi...Positive influence of a strong reputatino on a company´s Economic and financi...
Positive influence of a strong reputatino on a company´s Economic and financi...
 
Diapositivas canaima
Diapositivas  canaimaDiapositivas  canaima
Diapositivas canaima
 
I67 top managers’ engagement
I67 top managers’ engagementI67 top managers’ engagement
I67 top managers’ engagement
 
Mars gujarati
Mars gujaratiMars gujarati
Mars gujarati
 
Becoming a citizen brands
Becoming a citizen brandsBecoming a citizen brands
Becoming a citizen brands
 
Steps to social media strategy
Steps to social media strategySteps to social media strategy
Steps to social media strategy
 
2013 Presidents' Forum of St. Louis - Kraftig Presentation
2013 Presidents' Forum of St. Louis - Kraftig Presentation2013 Presidents' Forum of St. Louis - Kraftig Presentation
2013 Presidents' Forum of St. Louis - Kraftig Presentation
 
The House that Service Built
The House that Service BuiltThe House that Service Built
The House that Service Built
 
WS `Publisher Deck
WS `Publisher DeckWS `Publisher Deck
WS `Publisher Deck
 
Arpita mehta mphil(0930006)
Arpita mehta mphil(0930006)Arpita mehta mphil(0930006)
Arpita mehta mphil(0930006)
 
WebSpectator - Time as a measurement
WebSpectator - Time as a measurementWebSpectator - Time as a measurement
WebSpectator - Time as a measurement
 
Planing my blog
Planing my blogPlaning my blog
Planing my blog
 
So Easy Pay Presentation
So Easy Pay PresentationSo Easy Pay Presentation
So Easy Pay Presentation
 
Web spectator time as a measurement
Web spectator   time as a measurementWeb spectator   time as a measurement
Web spectator time as a measurement
 
Jmj gonzalez vega brandon manuel (1)
Jmj gonzalez vega brandon manuel (1)Jmj gonzalez vega brandon manuel (1)
Jmj gonzalez vega brandon manuel (1)
 
Aligning Corporate Strategy with Risks in order to avoid a Crisis
Aligning Corporate Strategy with Risks in order to avoid a CrisisAligning Corporate Strategy with Risks in order to avoid a Crisis
Aligning Corporate Strategy with Risks in order to avoid a Crisis
 
Reasons and Emotions that Guide Stakeholder´s Decisions and Have an Impact on...
Reasons and Emotions that Guide Stakeholder´s Decisions and Have an Impact on...Reasons and Emotions that Guide Stakeholder´s Decisions and Have an Impact on...
Reasons and Emotions that Guide Stakeholder´s Decisions and Have an Impact on...
 
From Corporate Brand to Company Brand: Authenticity, Transparency and Origin
From Corporate Brand to Company Brand: Authenticity, Transparency and OriginFrom Corporate Brand to Company Brand: Authenticity, Transparency and Origin
From Corporate Brand to Company Brand: Authenticity, Transparency and Origin
 
Tim barton presentation
Tim barton presentationTim barton presentation
Tim barton presentation
 
Milieuprestatie Bouwbesluit 2012
Milieuprestatie Bouwbesluit 2012Milieuprestatie Bouwbesluit 2012
Milieuprestatie Bouwbesluit 2012
 

Replikacija u bazama podataka

  • 1. Replikacija u bazama podataka Vatroslav Mileusnić, univ.bacc.inf. mileusnic.vatroslav@gmail.com DORS/CLUC Zagreb, 24.5.2012.
  • 2. Što je replikacija? Replikacija baza podataka je kreiranje i održavanje višestrukih kopija iste baze. Vrste replikacija: sinkrona i asinkrona master-slave i master-master (multimaster) ...
  • 3. Sinkrona Asinkrona propagira svaku transakciju propagira skup transakcija puno veći overhead zbog koristi manje mrežne uspostavljanja konekcije za propusnosti i pruža bolje svaku transakciju performanse zaustavlja replikaciju ako je visoka dostupnost jedan server nedostupan replikacijske grupe mogućnost sukoba podataka mogućnost izgubljenih transakcija
  • 4. Master-slave Multimaster 1 glavna, ostale kopije višegospodarska zapisuje se na master replikacija propagira se ostalima moguće zapisivati na bilo koji server, pa se čitanje se dijeli između propagira svim ostalima svih servera čitanje se dijeli između konfiguriranje slave svih servera servera da preuzme ulogu master-a ako snažna i fleksibilna pravi master ispadne mogućnost, ali i vrlo kompleksna
  • 5. Problemi kod multimaster replikacije mogućnost sukoba u asinkronoj replikaciji sukob ažuriranja sukob jedinstvenosti sukob brisanja moguća rješenja: konfiguriranje aplikacije da piše u samo jednu bazu omogućiti da aplikacija može pisati u drugu bazu, ako prva ispadne
  • 6. Problemi kod multimaster replikacije vrlo kratki intervali pražnjenja redova korištenje velikog broja resursa sustava pokretanje i zaustavljanje pražnjenja redova zahtijeva puno procesorskih ciklusa rješenje: ne pretjerivati sa zahtjevima intervala pražnjenja intervali od 1 ili više minuta su sasvim u redu
  • 7. Problemi kod multimaster replikacije alat za nadgledanje replikacijskog sustava ako koristimo sinkronu replikaciju, svi serveri moraju biti aktivni i ispravni automatizirani alat koji periodično provjera status svih servera ako alat odredi da je neki server nedostupan, pokušat će ga ponovno pokrenuti, a ako ne uspije, uklonit će ga iz replikacije, tako da replikacija može dalje funkcionirati
  • 8. Primjer replikacije Asinkrona master-slave replikacija u MySQL-u Asinkrona master-slave replikacija u PostgreSQL-u Asinkrona multimaster replikacija u CouchDB-u Prikazana rješenja nisu konfigurirana za produkcijske servere, ali su dovoljno dobra za učenje i shvaćanje
  • 9. MySQL Na serverima kreirati bazu podataka (replicate_me) Na master serveru izmijeniti: /etc/mysql/my.cnf #skip-networking #bind-address = 127.0.0.1 log-bin = /var/log/mysql/mysql-bin.log binlog-do-db = replicate_me server-id=1 Snimiti datoteku i resetirati MySQL
  • 10. MySQL Ući u MySQL i dodijeliti prava slave korisniku: GRANT REPLICATION SLAVE ON *.* TO slave_korisnik@192.168.1.101 IDENTIFIED BY 'lozinka'; GRANT RELOAD SLAVE ON *.* TO slave_korisnik@192.168.1.101 IDENTIFIED BY 'lozinka'; GRANT SUPER SLAVE ON *.* TO slave_korisnik@192.168.1.101 IDENTIFIED BY 'lozinka'; FLUSH PRIVILEGES;
  • 11. MySQL Izvršiti naredbe za prikazivanje statusa mastera: USE replicate_me; SHOW MASTER STATUS; obratimo pažnju na vrijednosti stupaca File i Position UNLOCK TABLES;
  • 12. MySQL Na slave serveru u /etc/mysql/my.cnf dodati: server-id = 2 master-host = 192.168.1.100 master-user = slave_korisnik master-password = lozinka master-connect-retry = 60 replicate-do-db = replicate_me
  • 13. MySQL Na slave serveru ući u MySQL i izvršiti: STOP SLAVE; CHANGE MASTER TO MASTER_HOST = '192.168.1.100' MASTER_USER='slave_korisnik', MASTER_PASSWORD='lozinka', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=106; START SLAVE;
  • 14. PostgreSQL Kao postgres korisnik inicijalizirati klaster i na masteru i na slave serverima: initdb /var/lib/pgsql/data Omogućiti komunikaciju postgres korisnika SSH ili drugi način
  • 15. PostgreSQL Na master u /var/lib/pgsql/data/postgresql.conf wal_level = hot_standby archive_mode = on archive_command = 'scp %p postgres@192.168.1.101:/var/lib/pgsql/archive/%f' Pokrenemo klaster pg_ctl -D /var/lib/pgsql/data start
  • 16. PostgreSQL Napravimo backup psql -c "SELECT pg_start_backup('osnovni backup')" template1 tar cvf pg_base_backup.tar /var/lib/pgsql/data psql -c "SELECT pg_stop_backup()" template1 Dobivenu datoteku kopiramo na slave i raspakiramo mv /var/lib/pgsql/pg_base_backup.tar / tar xvf pg_base_backup.tar Na slave-u izbrišemo /data/postmaster.pid
  • 17. PostgreSQL Master, /var/lib/pgsql/data/postgresql.conf listen_addresses = '*' max_wal_senders = 5 wal_keep_segments = 32 Master, /var/lib/pgsql/data/pg_hba.conf host replication postgres 192.168.1.101/24 trust
  • 18. PostgreSQL Na slave serveru /var/lib/pgsql/data/postgresql.conf hot_standby = on Dodati recovery.conf standby_mode = 'on' primary_conninfo = 'host=192.168.1.100 port=5432 user=postgres' može (trebao bi) imati i dodatne postavke Pokrenuti servere pg_ctl -D /var/lib/pgsql/data start
  • 19. CouchDB Pristupimo konzoli za administraciju Futon <IP adresa računala>:5984/_utils U Configuration namjestimo da sluša sve IP adrese bind_address u 0.0.0.0 Kreiramo baze podataka U Replicator namjestiti <IP drugog računala>/baza_na_drugom_racunalu uključimo Continuous gumb Replicate
  • 20. CouchDB Kako bi napravili multimaster replikaciju, ponoviti podešavanje pomoću alata Replicator na drugom računalu <IP drugog računala>/baza_na_prvom_racunalu uključimo Continuous gumb Replicate
  • 21. Zaključak Dojmovi uobičajena MySQL vs PostgreSQL diskusija realno: nećemo birati koji sustav koristimo samo temeljem toga čija je replikacija bolja za male projekte i kućnu upotrebu, CouchDB hr.linkedin.com/in/vatroslavmileusnic