Trên đây là tổng quan về sao chép không đồng bộ Slony-I nói ngắn gọn. Để biết thêm thông tin, tài liệu Slony-I là người bạn tốt nhất của bạn :).
Hãy bắt đầu với các phương pháp sao chép, trong phương pháp perltools, bạn cần định cấu hình slony tại thời điểm cài đặt nguồn để kích hoạt các tập lệnh perl tích hợp sẵn. Các tập lệnh này bắt đầu bằng “SLONIK_” và chúng được thiết kế để thực hiện các tác vụ quản trị nhân bản.
Bản demo của tôi cho hai phương thức shell (slonik) &Perl là trên Localhost Single instance (5432) với hai cơ sở dữ liệu Master &Slave sao chép một bảng “rep_table”. Để sao chép, master / Slave nên giữ cùng một cấu trúc bảng. Nếu bạn có nhiều bảng, hãy sử dụng tùy chọn kết xuất cấu trúc pg_dump / pg_restore. Vì đang sao chép một bảng nên tôi vừa tạo cùng một bảng trên Master / Slave.
Lưu ý:Đặt các biến môi trường như PGDATA, PGPORT, PGHOST, PGPASSWORD &PGUSER.
Cài đặt Nguồn:
Tải xuống nguồn 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
// Loại trừ --with-perltools nếu không cần thiết
# make
# make cài đặt
Thiết lập cơ bản trên Master / Slave
createb -p 5432 master
createb -p 5432 slave
psql -p 5432 -d master -c "create table rep_table (id int primary key);"
psql -p 5432 -d slave -c "create table rep_table (id int primary key);"
Chèn một số dữ liệu trên master để sao chép sang slave
psql -p 5432 -d master - c "chèn vào giá trị rep_table (create_series (1,10));"
Phương pháp 1:–with-perltools:
1. Tạo trên tệp .conf tiêu chuẩn, với thông tin như, Vị trí nhật ký, Số nút, Bộ bảng, v.v.,
$ 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 (node => 2, host => 'localhost', dbname => 'slave', port => 5433, user => 'postgres', password => 'postgres');
$ SLONY_SETS =
{
"set1" =>
{
"set_id" => 1,
"table_id" => 1,
"pkeyedtables" =>
[rep_table,],
},
};
Khởi tạo, Tạo tập hợp và đăng ký tập hợp, đây là ba giai đoạn của quá trình sao chép slony. Đối với mỗi giai đoạn, các tập lệnh perl “slonik_” được tạo ở vị trí được đề cập tại thời điểm cài đặt nguồn với tùy chọn “–with-perltools”. Trong trường hợp của tôi, nó là “/opt/PostgreSQL/9.1/bin”. Tệp CONF ở trên được sử dụng trong tất cả các giai đoạn.
2. Khởi tạo cụm. Đây slonik, hãy kiểm tra chéo kết nối các nút.
cd /opt/PostgreSQL/9.1/bin
./slonik_init_cluster -c slon.conf
./slonik_init_cluster -c slon.conf | ./slonik
3. Tạo một tập hợp, nghĩa là tập hợp các bảng sẽ sao chép từ Nút 1 sang Nút 2.
./slonik_create_set -c slon.conf 1
./slonik_create_set -c slon.conf 1 | ./slonik
4. Khởi động daemon Slon. Mỗi nút sẽ có hai quá trình slon để thực hiện công việc. Mỗi quá trình slon nút phải được bắt đầu.
./slon_start -c slon.conf 1
./slon_start -c slon.conf 2
5. Subscribe Set, từ đây slony duy trì tính nhất quán dữ liệu giữa hai nút bằng cách cho phép Master cho tất cả các DML và Từ chối chúng trên Slave.
./slonik_subscribe_set -c slon.conf 1 2
./slonik_subscribe_set -c slon.conf 1 2 | ./slonik
Sau các bước trên, bây giờ nô lệ của bạn sẽ có dữ liệu được sao chép.
Phương pháp 2:Với các tập lệnh chuẩn:
Trong các phương thức Standard script, có rất nhiều cách để thực hiện, nhưng để hiểu rõ ràng thì mình chia nhỏ như Perl chúng ta đã làm ở trên như Initialize, create-set &subscribe set. Tất cả các tập lệnh được liên kết với lệnh SLONIK.
1. Tạo hai tệp .conf cho 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. Khởi tạo cụm.
#! / bin / bash
# Khởi tạo cụm (init_cluster.sh)
slonik <<_ eof_
cluster name =myrep;
node 1 admin conninfo ='host =127.0.0.1 dbname =master user =postgres port =5432';
nút 2 admin conninfo ='host =127.0.0.1 dbname =slave1 user =postgres port =5432';
# Thêm nút
init cluster (id =1, comment ='Primary Node For the Slave postgres');
store node (id =2, event node =1, comment ='Slave Node For The Primary postgres ');
#Setting Store Paths ...
echo' Đã lưu trữ tất cả các nút trong danh mục slony ';
đường dẫn cửa hàng (server =1, client =2 , conninfo ='host =127.0.0.1 dbname =master user =postgres port =5432');
đường dẫn lưu trữ (server =2, client =1, conninfo ='host =127.0.0.1 dbname =slave1 user =postgres port =5432 ');
_eof_
$. / init_cluster.sh
3. Tạo một tập hợp.
#! / bin / bash
# Tạo Tập hợp cho tập hợp các bảng (create-set.sh)
slonik <<_ eof_
cluster name =myrep;
nút 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'); } về lỗi {echo 'Không thể tạo set1'; exit 1;}
đặt thêm bảng (đặt id =1, origin =1, id =1, full enough name ='public.rep_table1', comment ='Table action với khóa chính');
_eof_
$. / create-set.sh
4. Để khởi động daemon Slon, hãy sử dụng tập lệnh tùy chỉnh đi kèm với tarbal nguồn trong vị trí “/ tools” “start_slon.sh”. Sửa đổi tập lệnh bằng cách thay đổi vị trí tệp .conf cho các tập lệnh khởi động Master / slave. Tập lệnh này sẽ mang lại sự linh hoạt khi sử dụng và theo dõi tất cả quy trình slon với sự trợ giúp của PID được đề cập trong tệp .conf.
Cách sử dụng:./master_start_slon.sh [start | stop | status]
-bash-4.1 $ ./master_start_slon.sh start
-bash-4.1 $ ./slave_start_slon.sh start
đầu ra TRẠNG THÁI mẫu:
-bash-4.1 $ ./master_start_slon.sh status
-------------- -------
Tệp cấu hình Slony:/opt/PostgreSQL/9.1/slony_scripts/bash_slony/master_slon.conf
Slony Bin Path :/opt/PostgreSQL/9.1/bin
Slony Trạng thái đang chạy:Đang chạy ...
Slony Running (M) PID:28487
---------------------
trước>4. Đăng ký đặt.
#! / bin / bash
# Nhóm đăng ký (subscribe-set.sh)
slonik <<_ eof_
cluster name =myrep;
nút 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';
thử {subscribe set (id =1, provider =1, receiver =2, forward =yes, bỏ qua copy =false); } về lỗi {thoát 1; } echo 'Các nút đã đăng ký để đặt 1';
_eof_
$. / subscribe-set.sh
Bây giờ cơ sở dữ liệu nô lệ của bạn sẽ có dữ liệu sao chép trong bảng “rep_table”.
Hai phương pháp này sẽ giúp hiểu thiết lập cơ bản của sao chép slony. Sẽ trở lại với các khái niệm slony nâng cao hơn.