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

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

  • Be the first to comment

  • 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/

×