Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PostgreSQL: Mέθοδοι για Data Replication

740 views

Published on

Παρουσίασή μου για τη βάση δεδομένων PostgreSQL και των δυνατοτήτων Data Replication που προσφέρει, στα πλαίσια του 6ου Συνεδρίου Κοινοτήτων Ανοιχτού Λογισμικού FOSSCOMM 2013 στις 21/4/2013 στο Χαροκόπειο Πανεπιστήμιο Αθηνών.

Published in: Technology
  • Be the first to like this

PostgreSQL: Mέθοδοι για Data Replication

  1. 1. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 1/28PostgreSQL: Μέθοδοι για Data ReplicationFOSSCOMM 2013Δημήτρης Αγγελάκος@vyruss / vyruss@hellug.gr
  2. 2. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 2/28PostgreSQL: Μέθοδοι για Data Replication1) Εισαγωγή στην PostgreSQL2) Data Replication3) Λύσεις4) Σύγκριση Τεχνολογιών5) Εναλλακτικές
  3. 3. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 3/28Εισαγωγή στην PostgreSQL● “Η πιο εξελιγμένη open source database”– ACID (Atomicity, Consistency, Isolation, Durability)– SQL:2008– Procedural languages– User-defined data types & objects– GiST: PostGIS, Full-text search, etc.– Database events & Asynchronous Notifications
  4. 4. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 4/28Φρέσκια PostgreSQLhttp://www.postgresql.org/downloadBinary Packages– Linux, BSD, Solaris, Mac OS X, Windows– Repositories:● Red Hat (RHEL, CentOS, Fedora, SL)● Debian / Ubuntu– Ελλάδα: http://PostgreSQL.gr/
  5. 5. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 5/28PostgreSQL: Μέθοδοι για Data Replication1) Εισαγωγή στην PostgreSQL2) Data Replication3) Λύσεις4) Σύγκριση Τεχνολογιών5) Εναλλακτικές
  6. 6. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 6/28Data Replication● Failover● Load Balancing● Data Warehousing
  7. 7. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 7/28Τύποι Data Replication (I)● Shared Storage (π.χ. NAS)– Failover χωρίς απώλεια δεδομένων & overhead– Slaves ανενεργοί– SPOF● Filesystem Replication (π.χ. DRBD)– Slaves ανενεργοί– Πιθανή απώλεια δεδομένων (async)
  8. 8. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 8/28Τύποι Data Replication (II)● Log-shipping Replication– Slaves ενεργοί– Πιθανή απώλεια δεδομένων (async)● Trigger-based Replication– Overhead– Επίπεδο πίνακα– Data partitioning
  9. 9. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 9/28PostgreSQL: Μέθοδοι για Data Replication1) Εισαγωγή στην PostgreSQL2) Data Replication3) Λύσεις4) Σύγκριση Τεχνολογιών5) Συγκριτική ανάλυση6) Εναλλακτικές
  10. 10. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 10/28PostgreSQL Native (I)● Log-shipping (Streaming) Replication– Τι είναι τα WALs● Write-Ahead Logging● Online Backup● Point-in-time Recovery (PITR)● Standby Servers● File-based / Streaming
  11. 11. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 11/28PostgreSQL Native (II)● Σε 5 λεπτά ;● Master :– postgresql.conf :listen_address = *wal_level = hot_standbymax_wal_senders = 3archive_mode = onarchive_command = cp -i %p /tmp/archive/%f– pg_hba.conf :host replication all 10.0.0.0/24 trust
  12. 12. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 12/28PostgreSQL Native (III)● Slave :– postgresql.conf :hot_standby = on– recovery.conf : (όχι στο config dir αλλά στο data dir)standby_mode = onprimary_conninfo = host=10.0.0.1archive_mode = onrestore_command = cp -i /tmp/archive/%f %p
  13. 13. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 13/28PostgreSQL Native (IV)●Master :SELECT pg_start_backup(backup,true);cd /var/lib/postgresql/9.1/sudo tar cpJf /tmp/backup.txz mainrsync -av /tmp/backup.txz ubuntu@10.0.0.5:/tmp●Slave :cd /var/lib/postgresql/9.1/sudo tar xf /tmp/backup.txz●Master :SELECT pg_stop_backup();
  14. 14. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 14/28Slony-I (I)● Trigger-based Replication– Επιλέγουμε τους πίνακες που μας ενδιαφέρουν– Πολλαπλές πηγές πίνακα (Master)– Υποστηρίζει διαφορετικές :● Εκδόσεις PostgreSQL● Αρχιτεκτονικές● Λειτουργικά συστήματα– Για αργό δίκτυο
  15. 15. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 15/28Slony-I (II)● Σε 5 λεπτά ;– Πακέτα :● postgresql-9.1-slony1-2● slony1-2-bin– Config :● pg_hba.conf:host mydb_slony slony 10.0.0.0/24 md5● /usr/share/doc/slony1-2-bin/examples/slon_tools.conf-sample.gz
  16. 16. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 16/28Slony-I (III)●/etc/slony1/slon_tools.conf :add_node(node => 1,host => 10.0.0.1,dbname => mydb_slony,port => 5432,user => slony,password => 12345);add_node(node => 2,parent => 1,host => 10.0.0.4,dbname => mydb_slony,port => 5432,user => slony,password => 12345);
  17. 17. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 17/28Slony-I (IV)● /etc/slony1/slon_tools.conf :“set1" => {"set_id" => 1,"pkeyedtables" => [mytable,],},● slonik_init_cluster | slonik● sudo slon_start 1●sudo slon_start 2●slonik_create_set 1 | slonik● slonik_subscribe_set 1 2 | slonik
  18. 18. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 18/28pgpool-II (I)● Statement-based Cluster Middleware– Connection Pooling– Load Balancing– Query Cache στη μνήμη– Failover– Replication (Ενσωματωμένο sync ή Εξωτερικό)– High Availability (watchdog)– Connection Queueing– Parallel Queries–
  19. 19. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 19/28pgpool-II (II)● Η συνεισφορά μου:
  20. 20. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 20/28pgpool-II (III)●Σε 5 λεπτά ;●Πακέτα:– pgpool2– postgresql-9.1-pgpool2●/etc/pgpool2/pgpool.conf :backend_hostname0 = 10.0.0.1backend_port0 = 5432backend_weight0 = 1backend_data_directory0 = /var/lib/postgresql/9.1/mainbackend_flag0 = ALLOW_TO_FAILOVERbackend_hostname1 = 10.0.0.2backend_port1 = 5432backend_weight1 = 1backend_data_directory1 = /var/lib/postgresql/9.1/mainbackend_flag1 = ALLOW_TO_FAILOVERpool_passwd = replication_mode = onload_balance_mode = on
  21. 21. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 21/28Χρειάζομαι όντως Replication;● Παλιά καλά DBLINK functions!● Ξέρω καλύτερα τη βάση μου● Επιλεκτικό● Προχωρημένες λειτουργίες (Business Logic)
  22. 22. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 22/28Χρειάζομαι όντως Replication;rsql := SELECT id, blahFROM mytableWHERE id > || last_inserted_id ||ORDER BY id ASC;PERFORM dblink_connect(conn, conn_string);PERFORM dblink_open(conn, cur, rsql);LOOPINSERT INTO toptable (remote_id, blah)SELECT id, blahFROM dblink_fetch(conn, cur, 500)IF NOT FOUND THEN EXIT; END IF;END LOOP;
  23. 23. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 23/28PostgreSQL: Μέθοδοι για Data Replication1) Εισαγωγή στην PostgreSQL2) Data Replication3) Λύσεις4) Σύγκριση Τεχνολογιών5) Εναλλακτικές
  24. 24. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 24/28Σύγκριση Τεχνολογιών (Ι)● Scope:– Native, Pgpool : Ολόκληρη η βάση– Slony : Επίπεδο πίνακα● Conflict Resolution– Native, Slony : Δε χρειάζεται● Πιθανότητα απώλειας δεδομένων– Όχι όταν έχουμε Synchronous (άρα όχι Slony)
  25. 25. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 25/28Σύγκριση Τεχνολογιών (ΙΙ)● Πολλαπλοί Master– Native, Slony : Όχι– Pgpool : Ναι● Multimaster Replication– Άλλος τύπος replication
  26. 26. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 26/28PostgreSQL: Μέθοδοι για Data Replication1) Εισαγωγή στην PostgreSQL2) Data Replication3) Λύσεις4) Σύγκριση Τεχνολογιών5) Εναλλακτικές
  27. 27. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 27/28Εναλλακτικές● Postgres-XC– Παρακλάδι, τακτικά merge (έρχεται το Μάιο)– Write-scalable, shared-nothing● Bucardo– Ασύγχρονο Multimaster– Trigger-based– Load Balancing● Londiste
  28. 28. 21/4/2013 PostgreSQL: Μέθοδοι για Data Replication 28/28PostgreSQL: Μέθοδοι για Data ReplicationΣας ευχαριστώ!http://PostgreSQL.gr/

×