2012-06-11 35 views
5

Tôi đang cố gắng thiết lập sao chép đồng bộ với Postgres 9.1, nhưng tôi không thể làm cho nó hoạt động. Tôi đã có thể định cấu hình sao chép luồng nhưng không đồng bộ hóa. Tôi hy vọng tôi đã không bỏ lỡ bất cứ điều gì rõ ràng. Tôi đã đọc cẩn thận nhiều phần của ch 17, 18, 14, 25, 26 và 29 trong hướng dẫn quản trị.Cách thiết lập sao chép luồng đồng bộ trong postgres?

Tôi đang chạy ubuntu 12.04 và postgresql.conf chủ của tôi có những, trong số tất cả các thiết lập tiêu chuẩn khác:

listen_addresses = '*'    # what IP address(es) to listen on; 
wal_level = archive     # minimal, archive, or hot_standby 
archive_mode = on     # allows archiving to be done 
archive_command = 'test ! -f /data/pgWalArchive/%f && cp %p /data/pgWalArchive/%f' 
wal_keep_segments = 100    # in logfile segments, 16MB each; 0 disables ??? What should this be ???? 
max_wal_senders = 3     # max number of walsender processes 

pg_hba.conf tôi có này, ngoài những thứ tiêu chuẩn:

host all    all    XX.6.35.0/24   md5 
host replication  postgres  XX.6.35.0/24   md5 

db chủ của tôi chỉ có một chuỗi, vì vậy nó rất nhỏ. Tôi đã tạo thành công bản sao lưu của bản gốc ở chế độ chính và đã khôi phục bản gốc chính:

sudo -u postgres pg_basebackup -D ~/backup -F tar -x -z -l ~/backup/base1 -v -h XX.6.35.51 -U postgres 

Tôi cũng đã sao chép các tệp lưu trữ của WAL vào chế độ chờ. Tệp recovery recovery.conf của tôi có:

restore_command = '/usr/lib/postgresql/9.1/bin/pg_standby /data/pgWalArchive %f %p %r' 
archive_cleanup_command = '/usr/lib/postgresql/9.1/bin/pg_archivecleanup /data/pgWalArchive %r' 
standby_mode = on 
primary_conninfo = 'host=XX.6.35.51 port=5432' # e.g. 'host=masterIpAddressOrName port=5432' 

Cả hai máy chủ khởi động không có vấn đề gì và nhật ký có vẻ ổn. Chế độ chờ của tôi có:

2012-06-08 10:23:51 MDT LOG: shutting down 
2012-06-08 10:23:51 MDT LOG: database system is shut down 
2012-06-08 10:23:53 MDT LOG: database system was shut down in recovery at 2012-06-08 10:23:51 MDT 
2012-06-08 10:23:53 MDT LOG: entering standby mode 
2012-06-08 10:23:53 MDT LOG: consistent recovery state reached at 0/1D000078 
2012-06-08 10:23:53 MDT LOG: record with zero length at 0/1D000078 
2012-06-08 10:23:53 MDT LOG: streaming replication successfully connected to primary 
2012-06-08 10:23:53 MDT LOG: incomplete startup packet 
2012-06-08 10:23:54 MDT FATAL: the database system is starting up 
2012-06-08 10:23:54 MDT FATAL: the database system is starting up 
2012-06-08 10:23:55 MDT FATAL: the database system is starting up 
2012-06-08 10:23:55 MDT FATAL: the database system is starting up 
2012-06-08 10:23:56 MDT FATAL: the database system is starting up 
2012-06-08 10:23:56 MDT FATAL: the database system is starting up 
2012-06-08 10:23:57 MDT FATAL: the database system is starting up 
2012-06-08 10:23:57 MDT FATAL: the database system is starting up 
2012-06-08 10:23:58 MDT FATAL: the database system is starting up 
2012-06-08 10:23:58 MDT FATAL: the database system is starting up 
2012-06-08 10:23:59 MDT FATAL: the database system is starting up 
2012-06-08 10:23:59 MDT LOG: incomplete startup packet 
2012-06-08 10:24:40 MDT LOG: redo starts at 0/1D000078 

Vấn đề là khi tôi phát hành báo cáo chống lại chủ, chúng sẽ treo vĩnh viễn. Tui bỏ lỡ điều gì vậy?

Trả lời

7

Tôi là người đầu tiên đưa nhân rộng trực tuyến (AKA "Binary Replication") vào sản xuất khi 9,0 ra mắt hai năm trước, nhưng bỏ qua 9.1 vì tính năng sao chép của Postgres ở trạng thái thông lượng. Bây giờ, vào khoảng tuần thứ hai của tháng Chín hoặc ở nơi đó, 9.2 đã hết - bạn MUỐN biết về nó!

Với 9.2, bản sao đã được đơn giản hóa và cải thiện tuyệt vời!

Bây giờ bạn có thể có bản sao thác! Trước đây, bạn phải nhờ sư phụ phục vụ tất cả nô lệ một cách trực tiếp. Bây giờ bạn có thể tắt tải chủ bằng cách phát trực tiếp chỉ với MỘT nô lệ, và sau đó có luồng nô lệ đó đến bao nhiêu tùy thích! Điều này cho phép bạn thiết lập nô lệ cấp đầu tiên của bạn như là một hệ thống nóng-by-tiềm năng sẽ tiếp quản trong trường hợp chủ của bạn không thành công.

Toàn bộ chiến lược để định cấu hình này đã được sửa lại và tôi đã tìm thấy câu hỏi của bạn vì bản thân tôi đang tìm kiếm loại hướng dẫn cài đặt nhanh vì tôi đã biết tất cả các khái niệm cơ bản. Tuy nhiên, bạn có thể bắt đầu với 9.2 công cụ mới đây:

Postgres 9.2 High Availability, Load Balancing, and Replication

Trong khi đó, ít nhất một nhà cung cấp đã đi ra với một cái gì đó để giúp mortals chỉ tận dụng tốt điều này: Công cụ khoa học công bố "Dual Mode" đã được thêm vào sản phẩm PolyglotSQL của họ.PolyglotSQL cho phép ứng dụng hoạt động với hầu hết mọi cơ sở dữ liệu SQL và bỏ qua các khác biệt về phương ngữ. Tương tự, tính năng "chế độ kép" cho phép bạn có một kết nối chỉ đọc và kết nối khác để ghi, mà không phải viết lại ứng dụng của bạn (!!), vì vậy bạn có thể tận dụng bản sao đồng bộ Postgres, giảm tải tổng thể tất cả đều viết và đưa tải đó vào bất kỳ trình đọc nào bạn đã định cấu hình.

Tôi khuyên bạn nên chuyển sang Postgres v 9.2.

1

Tôi không thấy bất kỳ điều gì về synchronous_standby_names - bạn cần phải cho biết máy chủ nào mà máy chủ sẽ đợi.

http://www.postgresql.org/docs/9.1/static/warm-standby.html#SYNCHRONOUS-REPLICATION

http://www.postgresql.org/docs/9.1/static/runtime-config-replication.html#GUC-SYNCHRONOUS-STANDBY-NAMES

Oh - bạn đừng quên điều chỉnh thiết lập wal_level của bạn nếu bạn muốn chạy các truy vấn trên máy chủ nô lệ.

+0

vâng, tất nhiên. Tôi đã bỏ lỡ những dòng mà tôi có trong cấu hình. Đối với postgresql.sql, tôi có: . Tôi đã đặt địa chỉ IP cũng như không có may mắn. Ở chế độ chờ, tôi có

0

Tôi có vấn đề tương tự, - đối với Postgres 9.3, tôi phải thêm hot_standby = on vào máy chủ cơ sở dữ liệu Chờ của tôi postgresql.conf trước khi máy chủ dự phòng của tôi có thể chấp nhận truy vấn đọc/khách hàng.

3

Quá muộn để trả lời nhưng Here là một video hướng dẫn tuyệt vời bao gồm quy trình bước bước để sao chép luồng cho postgresql. Điều này thực sự hữu ích.

+0

Đây là một hướng dẫn hay. Cám ơn vì đã chia sẻ –

Các vấn đề liên quan