PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Bản sao Londiste với PostgreSQL 9.0

Londiste, công cụ sao chép Master / Slave không đồng bộ được phát triển bởi Skytools. Nó rất đơn giản và thân thiện với người dùng được tạo ra giống như Slony. Logic cốt lõi đằng sau Londiste hoặc Slony là Kích hoạt từ xa. Trong khi londiste tuân theo mô hình xếp hàng sự kiện không phải của họ trong Slony - I.

Tổng quan về Skytools:
Skytools là một ứng dụng dựa trên Python, nó đi kèm với một gói ba thứ PgQ, Londiste &Walmgr và nó cũng yêu cầu trình điều khiển Python-Postgres ‘psycopg2’.

  • PGQ:Cơ chế hàng đợi của nó được xây dựng bằng pl / pgsql với khung phython ở trên nó.
  • Londiste:Một công cụ sao chép được viết bằng Phyton sử dụng PgQ làm trình vận chuyển sự kiện.
  • Walmgr:Tạo thiết lập lưu trữ WAL.

Tôi sẽ không mô tả nhiều ở đây về quy trình daemon sao chép londiste, v.v., vì bạn có thể tìm thấy hướng dẫn tốt nhất về Skytools (PgQ / Londiste / WalMgr) trong liên kết này http://skytools.projects.postgresql.org/doc/.

Về cơ bản, bản demo của tôi bao gồm cách tiến hành sao chép Londiste với PostgreSQL 9.0 cùng với các bước cài đặt. Tôi nói, tài liệu Skytools và PostgreSQL Wiki (http://wiki.postgresql.org/wiki/Londiste_Tutorial) là những thứ khác có thể chơi được với bản sao Londiste.

Điều kiện tiên quyết với Liên kết Tải xuống:

  • 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

Bản trình diễn của tôi bao gồm:-

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/

Như bản demo đơn giản của nó với một bảng, tôi đã thử với RHEL 6 32bit / PostgreSQL 9.0 với hai cụm trong hộp cục bộ của tôi. Bạn sẽ cần phải điều chỉnh nó theo yêu cầu thực tế.

Lưu ý: Trước khi tiếp tục thiết lập, tôi muốn nhắc rằng tất cả các cài đặt mã nguồn phải là người dùng root và sau khi cài đặt các thư mục đó phải sở hữu quyền người dùng Postgres.

Bước 1.
Cài đặt PostgreSQL 9.0 và tạo hai cụm bằng lệnh INITDB và đảm bảo chúng chạy trên 5432 &5433 mỗi cụm. (Hãy nhớ rằng, với lệnh INITDB, thư mục pg_log sẽ không được tạo trong Data_directory mà bạn cần phải tạo nó một cách rõ ràng.)

Bước 2.
Cài đặt skytools bằng cách tải xuống từ liên kết trên. Phương pháp hay nhất để giữ tất cả các nguồn ở một vị trí tiêu chuẩn chung. Tôi đã sử dụng ‘/ usr / local / src’ và skytools trong ‘/ opt /’. Bây giờ hãy định cấu hình skytools với 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

Lưu ý: Sau khi cài đặt, bạn sẽ thấy hai mô-đun đóng góp quan trọng (pgq &londiste) bên dưới vị trí đóng góp của PostgreSQL. Về cơ bản, hai đóng góp này cung cấp cho bạn chức năng sao chép 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

Bước 3.
Cài đặt psycopg2, một trình điều khiển phyton-postgres cần thiết cho skytools. Đôi khi, những trình điều khiển này sẽ không đi kèm với python, vì vậy đây là các bước cài đặt.

# 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

Bước 4.
Cấp quyền sở hữu Postgres cho skytools và vị trí cài đặt postgres. Điều này đảm bảo rằng tất cả các tệp / tệp thực thi đều có quyền Người dùng Postgres.

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

Bước 5.
Đặt LD_LIBRARY_PATH &PYTHONPATH và bắt đầu hai cụm mới được tạo. Bạn có thể đặt chúng trong .bash_profile của người dùng postgres như một giải pháp lâu dài.

$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

Bước 6.
Tạo hai cơ sở dữ liệu, londiste_provider trong 5432 và londiste_subscriber trong 5433. Tạo một bảng với tên khóa chính 'ltest' trong hai cơ sở dữ liệu và CHÈN một số dữ liệu trong bảng londiste_provider (ltest) và sau đó hoàn thành thiết lập sao chép, bạn sẽ thấy các CHÈN đó dữ liệu ở phía londiste_subscriber.

Bạn có thể không cần CRETAE TABLE ở phía máy chủ, thay vào đó bạn có thể sử dụng kết xuất / khôi phục cấu trúc bằng cách sử dụng pg_dump / pg_restore, nếu bạn có nhiều bảng.

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);

Bước 7.
Tạo hai tệp .ini, một cho londiste (londiste.ini) và một cho PgQ ticker (pgq_ticker.ini). Bạn cũng có thể tìm thấy các tệp .ini mẫu từ cài đặt cơ bản của skytools. Ví dụ:- Vị trí “/opt/skytools-2.1.12/share/doc/skytools/conf”.

Bước 8.
Tạo hai thư mục cho tệp nhật ký và tệp PID rồi trỏ chúng vào các tham số của londiste.ini và pgq_ticker.ini.

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

Bước 9 .
Bắt đầu sao chép với các tệp .ini, trước tiên cài đặt londiste trên nhà cung cấp và người đăng ký, sau đó khởi động mã đánh dấu (PgQ) để sao chép các bảng.

Cài đặt bản ghi trên nhà cung cấp và người đăng ký bằng từng lệnh dưới đây:

$ 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

Sau khi thêm bắt đầu sao chép bảng.

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

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

Đến đây hoàn thành thiết lập nhân rộng. Bây giờ bạn sẽ thấy dữ liệu bảng “ltest” trên Slave Side (tức là trên cổng 5433).

Bước 10.
Bây giờ chúng ta hãy hiểu tất cả những gì đang xảy ra trong nền tới table / logs / pids / data, v.v., Hãy xem từng cái một.

Thông tin nhật ký:

Cấu trúc bảng sau khi sao chép:

Trạng thái hàng đợi sự kiện Trạng thái sao chép
có thể được kiểm tra bằng tiện ích pgq như sau:-

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

Lưu ý: Có những lựa chọn rất tốt với các tiện ích Londiste &PGQ để thực hiện R &D.
Hy vọng tất cả các bạn có một thiết lập sao chép Londiste thành công. Xin vui lòng gửi bình luận của bạn, những người được đánh giá cao. Hẹn gặp lại tất cả các bạn sớm với một số bài viết khác.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khai báo SQLAlchemy:xác định trình kích hoạt và chỉ mục (Postgres 9)

  2. Cách thiết lập kết nối từ xa với PostgreSQL

  3. Làm cách nào để thay đổi vị trí của một cột trong bảng cơ sở dữ liệu PostgreSQL?

  4. Toán tử không tồn tại:số nguyên =? khi sử dụng Postgres

  5. Gọi một thủ tục được lưu trữ trong một thủ tục được lưu trữ