5

मैं पोस्टग्रेस 9.1 के साथ तुल्यकालिक प्रतिकृति स्थापित करने की कोशिश कर रहा हूं, लेकिन मैं इसे काम नहीं कर सकता। मैं स्ट्रीमिंग प्रतिकृति को कॉन्फ़िगर करने में सक्षम था, लेकिन तुल्यकालिक नहीं। मुझे उम्मीद है कि मैंने कुछ भी स्पष्ट नहीं किया है। मैंने प्रशासन गाइड में 17, 18, 14, 25, 26 और 2 9 के सावधानी से कई अनुभाग पढ़े हैं।पोस्टग्रेज़ में सिंक्रोनस स्ट्रीमिंग प्रतिकृति कैसे सेट करें?

मैं Ubuntu 12.04 और मेरे मालिक postgresql.conf चला रहा हूँ अन्य सभी मानक सेटिंग के बीच इन, है:

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 मानक सामान के अलावा इस किया है,:

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

मेरे मास्टर डीबी में सिर्फ एक अनुक्रम है, इसलिए यह छोटा है। मैं सफलतापूर्वक प्राथमिक में मास्टर की एक बैकअप बनाया है और वह बहाल:

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

मैं भी अतिरिक्त करने के लिए वाल संग्रह फ़ाइलों की नकल की। मेरी स्टैंडबाय recovery.conf फ़ाइल में यह है:

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' 

दोनों सर्वर कोई समस्या नहीं शुरू करते हैं और लॉग ठीक लगते हैं। मेरे स्टैंडबाय में यह है:

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 

समस्या यह है कि जब मैं मास्टर के खिलाफ बयान जारी करता हूं, तो वे हमेशा के लिए लटकाते हैं। क्या मैं कुछ भूल रहा हूँ?

उत्तर

7

मैं दो साल पहले 9.0 बाहर आने पर स्ट्रीमिंग प्रतिकृति (AKA "बाइनरी प्रतिकृति") उत्पादन में पहला व्यक्ति था, लेकिन 9.1 से अधिक हो गया क्योंकि पोस्टग्रेस की प्रतिकृति सुविधा प्रवाह की स्थिति में थी। अब, सितंबर या उसके बाद के दूसरे सप्ताह के बारे में, 9.2 बाहर है - आप इसके बारे में जानना चाहते हैं!

9.2 के साथ, प्रतिकृति को सरल बनाया गया है और इसमें काफी सुधार हुआ है!

अब आप प्रतिकृति कैस्केड कर सकते हैं! पहले, आपको मास्टर को सभी गुलामों को सीधे सेवा करना पड़ता था। अब आप केवल एक गुलाम को स्ट्रीम करके मास्टर को ऑफ-लोड कर सकते हैं, और फिर उस दास स्ट्रीम को जितनी चाहें उतनी हो! यह आपको अपने पहले-स्तर के दास को एक संभावित हॉट-स्टैंड-बाय सिस्टम के रूप में सेट करने देता है जो आपके मास्टर विफल होने की स्थिति में समाप्त हो जाएगा।

इसे कॉन्फ़िगर करने की पूरी रणनीति को संशोधित किया गया है और मुझे आपका प्रश्न मिला क्योंकि मैं स्वयं एक त्वरित-सेटअप-गाइड प्रकार की चीज़ ढूंढ रहा था क्योंकि मुझे पहले से ही सभी मूल बातें पता हैं। हालांकि, अगर आप नया 9.2 सामान यहाँ के साथ शुरू कर सकते हैं:

Postgres 9.2 High Availability, Load Balancing, and Replication

इस बीच, कम से कम एक विक्रेता कुछ मदद करने के लिए के साथ बाहर आ गया है मात्र मनुष्यों इस का अच्छा इस्तेमाल: विज्ञान उपकरण की घोषणा की "दोहरी मोड" उनके PolyglotSQL उत्पाद में जोड़ा गया है।PolyglotSQL किसी एप्लिकेशन को किसी भी SQL डेटाबेस के विरुद्ध संचालित करने और बोली अंतरों को अनदेखा करने देता है। इसी प्रकार, "दोहरी मोड" सुविधा आपको अपने एप्लिकेशन को फिर से लिखने के बिना, केवल पढ़ने के लिए कनेक्शन और लिखने के लिए एक और कनेक्शन देता है, ताकि आप पोस्टग्रेस सिंक्रोनस प्रतिकृति का लाभ उठा सकें, मास्टर ऑफ ऑफ़लोड कर सकते हैं सभी लिखते हैं, और उस लोड को जो भी पाठक आपने कॉन्फ़िगर किया है उस पर डाल दिया।

मैं अत्यधिक अनुशंसा करता हूं कि आप पोस्टग्रेस बनाम 9.2 पर जाएं।

1

मुझे synchronous_standby_names के बारे में कुछ भी नहीं दिख रहा है - आपको यह बताने की ज़रूरत है कि यह कौन सा सर्वर मास्टर करेगा।

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

ओह - अपने wal_level सेटिंग tweak के लिए मत अगर तुम गुलाम सर्वर पर प्रश्नों चलाना चाहते हैं।

+0

हां, ज़ाहिर है। मैंने इन पंक्तियों को याद किया जो मेरे पास कॉन्फ़िगरेशन में हैं। Postgresql.sql के लिए मेरे पास यह है: । मैंने कोई भाग्य के साथ आईपी पता भी लगाया था। स्टैंडबाय पर, मेरे पास

0

मेरे पास समान समस्याएं थीं, - पोस्टग्रेस 9.3 के लिए, मुझे अपने स्टैंडबाय सर्वर सर्वर postgresql.conf फ़ाइल में hot_standby = on जोड़ना पड़ा था, इससे पहले कि मेरा स्टैंडबाय सर्वर पढ़े गए प्रश्न/क्लाइंट स्वीकार कर सके।

3

उत्तर देने में बहुत देर हो चुकी है लेकिन Here एक शानदार वीडियो ट्यूटोरियल है जो पोस्टग्रेस्क्ल के लिए स्ट्रीम प्रतिकृति करने के लिए चरणबद्ध प्रक्रिया को शामिल करता है। यह वास्तव में सहायक था।

+0

यह एक अच्छा ट्यूटोरियल था। साझा करने के लिए धन्यवाद –

संबंधित मुद्दे