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

Pengaturan Replikasi Slony-I Sederhana.

Di atas ditampilkan adalah ikhtisar tentang replikasi Asynchronous Slony-I secara singkat. Untuk informasi lebih lanjut, dokumentasi Slony-I adalah teman terbaik Anda :).

Mari kita mulai dengan metode replikasi, dalam metode perltools, Anda perlu mengonfigurasi slony pada saat instalasi sumber untuk mengaktifkan skrip perl bawaan. Skrip ini dimulai dengan “SLONIK_” dan dirancang untuk menjalankan tugas administratif replikasi.

Demo saya untuk dua metode Shell(slonik) &Perl ada di Localhost Single instance(5432) dengan dua database Master &Slave mereplikasi satu tabel "rep_table". Untuk replikasi, master/Slave harus memiliki struktur tabel yang sama. Jika Anda memiliki banyak tabel, gunakan opsi dump struktur pg_dump/pg_restore. Karena saya mereplikasi satu tabel, saya baru saja membuat yang sama di Master/Slave.
Catatan:Tetapkan variabel lingkungan seperti PGDATA,PGPORT,PGHOST,PGPASSWORD &PGUSER.

Instalasi Sumber:

Unduh sumber Slony-I 2.1(http://slony.info/downloads/) 

#bunzip2 slony1-2.1.0.tar.bz2
#tar -xvf slony1 -2.1.0.tar
# cd slony1-2.1.0
#./configure --prefix=/opt/PostgreSQL/9.1/bin
--with-pgconfigdir=/opt/ PostgreSQL/9.1/bin
--with-perltools=/opt/PostgreSQL/9.1/bin
// Kecualikan --with-perltools jika tidak diperlukan
# make
# make pasang

Pengaturan dasar pada Master/Slave

createdb -p 5432 master
createdb -p 5432 slave

psql -p 5432 -d master -c "buat tabel rep_table(id int primary key);"
psql -p 5432 -d slave -c "buat tabel rep_table(id int primary key);"

Masukkan beberapa data pada master untuk direplikasi ke slave
psql -p 5432 -d master - c "masukkan ke dalam nilai rep_table(generate_series(1,10));"

Metode 1:–dengan-perltools :

1. Buat pada file .conf standar, dengan informasi seperti, Lokasi log, Jumlah Node, Kumpulan Tabel, dll.,

$CLUSTER_NAME ='myrep';
$LOGDIR ='/opt/PostgreSQL/9.1/slonylogs';
$MASTERNODE =1;
$DEBUGLEVEL =2;

&add_node(node ​​=> 1,host => 'localhost',dbname => 'master',port => 5432,user => 'postgres',password => 'postgres');
&add_node (simpul => 2,host => 'localhost',dbname => 'slave',port => 5433,user => 'postgres',password => 'postgres');

$SLONY_SETS =
{
"set1" =>
{
"set_id" => 1,
"table_id" => 1,
"pkeyedtables" =>
[rep_table,],
},
};

Inisialisasi, Buat-set &set-berlangganan, ini adalah tiga fase replikasi slony. Untuk setiap fase, skrip perl “slonik_” dibuat di lokasi yang disebutkan pada saat instalasi sumber dengan opsi “–with-perltools”. Dalam kasus saya, "/ opt/PostgreSQL/9.1/bin". File CONF di atas digunakan di semua fase.

2. Inisialisasi cluster. Di sini slonik, periksa koneksi node.

cd /opt/PostgreSQL/9.1/bin
./slonik_init_cluster -c slon.conf
./slonik_init_cluster -c slon.conf| ./slonik

3. Buat satu set, artinya set tabel mana yang akan direplikasi dari Node 1 ke Node 2.

./slonik_create_set -c slon.conf 1 
./slonik_create_set -c slon.conf 1|./slonik

4. Mulai daemon Slon. Setiap node akan memiliki dua proses slon untuk membawa pekerjaan. Setiap proses slon node harus dimulai.

./slon_start -c slon.conf 1
./slon_start -c slon.conf 2

5. Set Berlangganan, dari sini slony menjaga konsistensi data antara dua node dengan mengizinkan Master untuk semua DML dan Menolaknya di Slave.

./slonik_subscribe_set -c slon.conf 1 2 
./slonik_subscribe_set -c slon.conf 1 2|./slonik

Setelah langkah-langkah di atas sekarang budak Anda akan memiliki data yang direplikasi.

Metode 2:Dengan skrip standar:

Dalam metode skrip Standar, ada banyak cara untuk diterapkan, tetapi untuk memahami dengan jelas saya telah membagi sama seperti Perl yang kami lakukan di atas seperti Inisialisasi, buat-set &set berlangganan. Semua skrip diikat dengan perintah SLONIK.

1. Buat dua file .conf untuk Master &Slave Node.

vi master_slon.conf
cluster_name=myrep
pid_file='/opt/PostgreSQL/9.1/data/master_slon.pid'
conn_info='host=localhost dbname=master user=postgres port=5432'

vi slave_slon.conf
cluster_name=myrep
pid_file='/opt/PostgreSQL/9.1/data/slave_slon.pid'
conn_info=' host=localhost dbname=slave1 user=postgres port=5432'

2. Inisialisasi cluster.

#!/bin/bash
# Inisialisasi Cluster (init_cluster.sh)

slonik <<_eof_
nama cluster =myrep;
node 1 admin conninfo ='host=127.0.0.1 dbname=master user=postgres port=5432';
node 2 admin conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432';

#Add Node
init cluster (id =1, comment ='Primary Node For the Slave postgres');
store node (id =2, event node =1, comment ='Slave Node For Postgres Utama');

#Setting Store Paths ...
echo 'Menyimpan semua node di slony catalogs';
store path(server =1, client =2 , conninfo='host=127.0.0.1 dbname=master user=postgres port=5432');
store path(server =2, client =1, conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432');
_eof_

$./init_cluster.sh

3. Buat satu set.

#!/bin/bash
# Buat Set untuk kumpulan tabel (create-set.sh)

slonik <<_eof_
nama cluster =myrep;
node 1 admin conninfo='host=127.0.0.1 dbname=master user=postgres port=5432';
node 2 admin conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432';

try { create set (id =1 ,origin =1 , comment ='Set for public'); } pada kesalahan { echo 'Tidak dapat membuat set1'; exit 1;}

set add table (set id =1 , origin =1, id =1, fullqualified name ='public.rep_table1', comment ='Table action with primary key');
_eof_

$./create-set.sh

4. Untuk memulai daemon Slon, gunakan skrip khusus yang disertakan dengan tarbal sumber di bawah lokasi “/tools” “start_slon.sh”. Ubah skrip dengan mengubah lokasi file .conf untuk skrip startup Master/slave. Script ini akan memberikan fleksibilitas untuk menggunakan dan melacak semua proses slon dengan bantuan PID yang disebutkan dalam file .conf.

Penggunaan:./master_start_slon.sh [start|stop|status]

-bash-4.1$ ./master_start_slon.sh start
-bash-4.1$ ./slave_start_slon.sh mulai

Contoh keluaran STATUS:

-bash-4.1$ ./master_start_slon.sh status
-------------- -------
File Konfigurasi Slony :/opt/PostgreSQL/9.1/slony_scripts/bash_slony/master_slon.conf
Slony Bin Path :/opt/PostgreSQL/9.1/bin
Slony Status Lari :Lari...
Lari Slony (M)PID :28487
----------------------

4. Berlangganan set.

#!/bin/bash
# Subscribe Set (subscribe-set.sh)

slonik <<_eof_
nama cluster =myrep;
node 1 admin conninfo='host=127.0.0.1 dbname=master user=postgres port=5432';
node 2 admin conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432';

coba { set langganan (id =1, provider =1 , receiver =2, forward =yes, hilangkan copy =false); } pada kesalahan { keluar 1; } echo 'Node berlangganan untuk disetel 1';
_eof_

$./subscribe-set.sh

Sekarang database slave Anda akan memiliki data yang direplikasi di tabel “rep_table”.
Kedua metode ini akan membantu untuk memahami pengaturan dasar replikasi slony. Akan kembali dengan konsep slony yang lebih canggih.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PG::Kesalahan dalam klausa GROUP BY

  2. Bagaimana UNION Bekerja di PostgreSQL

  3. Pencocokan partisi tingkat lanjut untuk penggabungan partisi

  4. Menghubungkan ke Postgresql dalam wadah buruh pelabuhan dari luar

  5. Bagaimana cara membuat ulang tabel yang dihapus dengan Django Migrations?