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.shSekarang 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.