PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Replikasi Londiste dengan PostgreSQL 9.0

Londiste, alat replikasi Master/Slave Asinkron yang dikembangkan oleh Skytools. Ini sangat sederhana dan ramah pengguna dibuat seperti Slony. Logika inti di balik Londiste atau Slony adalah Pemicu Jarak Jauh. Sedangkan londiste mengikuti model antrian event yang bukan miliknya di Slony – I.

Ikhtisar tentang Skytools:
Skytools adalah aplikasi berbasis Python, ia hadir dengan bundel tiga hal PgQ, Londiste &Walmgr dan juga memerlukan driver Python-Postgres 'psycopg2'.

  • PGQ :Mekanisme antriannya dibangun dengan pl/pgsql dengan kerangka phython di atasnya.
  • Londiste:Alat replikasi yang ditulis dalam Phyton menggunakan PgQ sebagai pengangkut peristiwa.
  • Walmgr :Membuat penyiapan pengarsipan WAL.

Saya tidak akan menjelaskan banyak di sini mengenai proses daemon replikasi londiste dll., karena Anda dapat menemukan tutorial terbaik tentang Skytools(PgQ/Londiste/WalMgr) di tautan ini http://skytools.projects.postgresql.org/doc/.

Pada dasarnya, demo saya menyertakan cara melanjutkan replikasi Londiste dengan PostgreSQL 9.0 beserta langkah-langkah instalasi. Saya katakan, dokumentasi Skytools dan PostgreSQL Wiki (http://wiki.postgresql.org/wiki/Londiste_Tutorial) lebih dari segalanya untuk dimainkan dengan replikasi Londiste.

Pra-Persyaratan dengan Tautan Unduhan :

  • PostgreSQL – PostgreSQL 9.0 http://www.enterprisedb.com/products-services-training/pgdownload
  • skytools – skytools-2.1.12.tar.gz http://pgfoundry.org/frs/download.php/2872/skytools-2.1.12.tar.gz
  • psycopg2 – psycopg2-2.4.2.tar.gz http://initd.org/psycopg/tarballs/PSYCOPG-2-4/psycopg2-2.4.2.tar.gz

Demo saya termasuk yang berikut :-

OS                     : RHEL 6 32 bit
DB version : PostgreSQL 9.0
Two Clusters & Database: londiste_provider on 5432,Londiste_subscriber on 5433
Table : One Table (ltest)
Location of .ini file : /opt/skytools-2.1.12/scripts
Location of Skytools : /opt/skytools-2.1.12
Location of PG 9.0 : /opt/PostgreSQL/9.0/

Sebagai demo sederhana dengan satu tabel, saya telah mencoba dengan RHEL 6 32bit/PostgreSQL 9.0 dengan dua cluster di kotak lokal saya. Anda perlu mengubahnya sesuai dengan persyaratan yang sebenarnya.

Catatan: Sebelum melanjutkan dengan penyiapan, saya ingin mengingatkan bahwa semua penginstalan sumber harus sebagai pengguna root dan setelah penginstalan direktori tersebut harus memiliki izin pengguna Postgres.

Langkah 1.
Instal PostgreSQL 9.0 dan buat dua cluster dengan perintah INITDB dan pastikan keduanya berjalan pada masing-masing 5432 &5433. (Ingat, ini adalah fakta lama bahwa dengan perintah INITDB direktori pg_log tidak akan dibuat di bawah Data_directory, Anda harus membuatnya secara eksplisit.)

Langkah 2.
Instal skytools dengan mendownload dari link di atas. Praktik terbaiknya adalah menyimpan semua sumber di satu lokasi standar umum. Saya menggunakan '/usr/local/src' dan skytools di bawah '/opt/'. Sekarang konfigurasikan skytools dengan PostgreSQL 9.0 ‘pg_config’.

# tar -xvf skytools-2.1.12.tar.gz
# cd /usr/local/src/skytools-2.1.12
# ./configure --prefix=/opt/skytools-2.1.12 --with-pgconfig=/opt/PostgreSQL/9.0/bin/pg_config
# make
# make install

Catatan: Setelah instalasi, Anda akan melihat dua modul kontribusi penting (pgq &londiste) di bawah lokasi kontribusi PostgreSQL. Pada dasarnya, kedua kontribusi ini memberi Anda fungsionalitas replikasi londiste.

# cd /opt/PostgreSQL/9.0/share/postgresql/contrib
# ll lond*
-rw-r--r--. 1 root root 29771 Jan 11 13:24 londiste.sql
-rw-r--r--. 1 root root 27511 Jan 11 13:24 londiste.upgrade.sql

# ll pgq*
-rw-r--r--. 1 root root 4613 Jan 11 13:24 pgq_ext.sql
-rw-r--r--. 1 root root 1170 Jan 11 13:24 pgq_lowlevel.sql
-rw-r--r--. 1 root root 69798 Jan 11 13:24 pgq.sql
-rw-r--r--. 1 root root 3940 Jan 11 13:24 pgq_triggers.sql
-rw-r--r--. 1 root root 54182 Jan 11 13:24 pgq.upgrade.sql

Langkah 3.
Instal psycopg2, ini adalah driver phyton-postgres yang diperlukan untuk skytools. Terkadang driver ini tidak disertakan dengan python, jadi inilah langkah-langkah instalasinya.

# tar -xvf psycopg2-2.4.2.tar.gz
# cd psycopg2-2.4.2
# python setup.py install --prefix=/usr/local
# python setup.py build_ext --pg-config /opt/PostgreSQL/9.0/bin/pg_config

Langkah 4.
Berikan kepemilikan Postgres ke skytools dan lokasi instalasi postgres. Ini memastikan bahwa semua file/executable memiliki izin Pengguna Postgres.

# chown -R postgres:postgres /opt/skytools-2.1.12 
# chown -R postgres:postgres /opt/PostgreSQL/9.0/

Langkah 5.
Setel LD_LIBRARY_PATH &PYTHONPATH dan mulai dua cluster yang baru dibuat. Anda dapat menempatkannya di .bash_profile pengguna postgres sebagai solusi permanen.

$export PYTHONPATH=/opt/skytools-2.1.12/lib/python2.6/site-packages/
$export LD_LIBRARY_PATH=/opt/PostgreSQL/9.0/lib:/usr/lib:/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE:
or
$ vi .bash_profile
export PYTHONPATH=/opt/skytools-2.1.12/lib/python2.6/site-packages/
export LD_LIBRARY_PATH=/opt/PostgreSQL/9.0/lib:/usr/lib:/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE:
:wq
$ . .bash_profile (execute to take effect of new settings)

Now Start the two cluster

$ pg_ctl -o "-p 5432" -D /opt/PostgreSQL/9.0/data start
$ pg_ctl -o "-p 5433" -D /opt/PostgreSQL/9.0/data_1 start

Langkah 6.
Buat dua database, londiste_provider di 5432 dan londiste_subscriber di 5433. Buat satu tabel dengan nama kunci utama 'ltest' di dua database dan MASUKKAN beberapa data di tabel londiste_provider (ltest) dan kemudian selesainya pengaturan replikasi Anda akan melihat INSERT tersebut data di sisi londiste_subscriber.

Anda mungkin tidak memerlukan CRETAE TABLE di sisi slave, sebaliknya Anda dapat menggunakan struktur dump/restore dengan menggunakan pg_dump/pg_restore, jika Anda memiliki banyak tabel.

On 5432
psql -p 5432 -c "create database londiste_provider;"
psql -p 5432 londiste_provider
londiste_provider=# create table ltest(id int primary key);
londiste_provider=# insert into ltest VALUES (generate_series(1,10));
INSERT 0 10

On 5433
psql -p 5433 -c "create database londiste_subscriber;"
psql -p 5433 londiste_subscriber
londiste_subscriber=# create table ltest(id int primary key);

Langkah 7.
Buat dua file .ini satu untuk londiste(londiste.ini) dan satu lagi untuk PgQ ticker(pgq_ticker.ini). Anda juga dapat menemukan contoh file .ini dari instalasi dasar skytools. Misal:- Lokasi “/opt/skytools-2.1.12/share/doc/skytools/conf”.

Langkah 8.
Buat dua direktori untuk file log dan PID dan arahkan ke parameter londiste.ini dan pgq_ticker.ini.

$ cd /opt/PostgreSQL/9.0
$ mkdir log pid

Langkah 9 .
Mulai replikasi dengan file .ini, pertama-tama instal londiste pada provider dan subscriber kemudian jalankan ticker (PgQ) untuk mereplikasi tabel.

Instal londiste pada provider dan subscriber dengan perintah di bawah ini satu per satu:

$ cd /opt/skytools-2.1.12/bin
$ ./londiste.py ../scripts/londiste.ini provider install
2012-01-12 14:56:03,667 11073 INFO plpgsql is installed
2012-01-12 14:56:03,674 11073 INFO txid_current_snapshot is installed
2012-01-12 14:56:03,675 11073 INFO Installing pgq
2012-01-12 14:56:03,676 11073 INFO Reading from /opt/skytools-2.1.12/share/skytools/pgq.sql
2012-01-12 14:56:03,816 11073 INFO Installing londiste
2012-01-12 14:56:03,816 11073 INFO Reading from /opt/skytools-2.1.12/share/skytools/londiste.sql

-bash-4.1$ ./londiste.py ../scripts/londiste.ini subscriber install
2012-01-12 14:56:17,871 11081 INFO plpgsql is installed
2012-01-12 14:56:17,872 11081 INFO Installing londiste
2012-01-12 14:56:17,873 11081 INFO Reading from /opt/skytools-2.1.12/share/skytools/londiste.sql

-->Now, Install PqQ and start ticker with .ini file.

-bash-4.1$ ./pgqadm.py ../scripts/pgqadm.ini install
2012-01-11 16:45:03,219 6348 INFO plpgsql is installed
2012-01-11 16:45:03,225 6348 INFO txid_current_snapshot is installed
2012-01-11 16:45:03,228 6348 INFO pgq is installed

-bash-4.1$ ./pgqadm.py -d ../scripts/pgqadm.ini ticker -d

-->Add the table to provider & subscriber to replicate.

-bash-4.1$ ./londiste.py ../scripts/londiste.ini provider add ltest
2012-01-12 15:03:39,583 11139 INFO Adding public.ltest

-bash-4.1$ ./londiste.py ../scripts/londiste.ini subscriber add ltest
2012-01-12 15:03:47,367 11146 INFO Checking public.ltest
2012-01-12 15:03:47,384 11146 INFO Adding public.ltest

Setelah menambahkan, mulailah replikasi tabel.

-bash-4.1$ ./londiste.py ../ scripts/londiste.ini replay -d

Note: "-d" option is to run the londiste/PgQ daemons in background.

Di sini selesaikan pengaturan replikasi. Sekarang Anda akan melihat data tabel “ltest” pada Slave Side (yaitu pada port 5433).

Langkah 10.
Sekarang mari kita pahami apa yang terjadi di latar belakang tabel/log/pids/data dll., Mari kita lihat satu per satu.

Informasi Log:

Struktur Tabel setelah replikasi:

Status Antrian Acara
Status replikasi dapat diperiksa dengan utilitas pgq seperti di bawah ini:-

-bash-4.1$ ./pgqadm.py ../scripts/pgqadm.ini status
Postgres version: 9.0.1 PgQ version: 2.1.8

Event queue Rotation Ticker TLag
------------------------------------------------------------------------------
londiste.replica 3/7200s 500/3s/60s 6s
------------------------------------------------------------------------------

Consumer Lag LastSeen
------------------------------------------------------------------------------
londiste.replica:
myfirstlondiste 6s 6s
------------------------------------------------------------------------------

Catatan: Ada pilihan yang sangat baik dengan utilitas Londiste &PGQ untuk melakukan R &D.
Berharap Anda semua memiliki pengaturan replikasi Londiste yang sukses. Silakan posting komentar Anda yang sangat dihargai. Sampai jumpa lagi dengan beberapa postingan lainnya.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LIKE LEBIH RENDAH vs iLIKE

  2. Cara Mengubah Pengguna menjadi Pengguna Super di PostgreSQL

  3. Pilih tiga nilai teratas di setiap grup

  4. Menskalakan Koneksi di PostgreSQL Menggunakan Connection Pooling

  5. Bagaimana cara menentukan kata sandi untuk 'psql' secara non-interaktif?