pg_ctl
एक बहुत ही उपयोगी लेकिन कम रेटिंग वाली उपयोगिता है जो विकास टीमों के जीवन को आसान बना सकती है। pg_ctl
. के बारे में अधिक जानने के लिए पढ़ें और यह आपके विकास और परीक्षण कार्यप्रवाहों को कैसे सुधार सकता है।
pg_ctl क्या है?
pg_ctl मानक पोस्टग्रेज़ वितरण में शामिल एक कमांड-लाइन टूल है। यह हर जगह उपलब्ध है जो पोस्टग्रेज़ ही है, अन्य शामिल टूल जैसे psql के समान है। और pg_dump ।
निष्पादन योग्य अन्य पोस्टग्रेज बायनेरिज़ के समान निर्देशिका में होगा। सटीक स्थान Linux डिस्ट्रो और पोस्टग्रेज़ संस्करण के साथ बदलता रहता है:
# debain, ubuntu, ...
/usr/lib/postgresql/11/bin
# rhel, centos, ...
/usr/pgsql-11/bin
आप इस निर्देशिका को अपने PATH, या उपनाम pg_ctl में पूर्ण पथ में जोड़ना चाह सकते हैं।
डेटाबेस क्लस्टर बनाएं
अन्य RDBMSes के विपरीत, एक एकल पोस्टग्रेज़ डेटाबेस सर्वर प्रक्रिया (ऐतिहासिक रूप से पोस्टमास्टर कहा जाता है) ), एक डेटाबेस क्लस्टर का प्रबंधन करता है . क्लस्टर . शब्द का उपयोग आधुनिक नहीं है, और नेटवर्क नोड्स के समूह को संदर्भित नहीं करता है। डेटाबेस क्लस्टर डेटाबेस के एक सेट को होस्ट करता है, जिसमें कुछ विशेषताएं (भूमिकाएं, भौतिक प्रतिकृति, WAL फ़ाइलें, आदि) होती हैं, जो उन सभी के लिए समान होती हैं। आपके Linux डिस्ट्रो द्वारा स्थापित Postgressystemd सेवा एकलडेटाबेस क्लस्टर का कार्य करती है।
आप pg_ctl
. का उपयोग कर सकते हैं डेटाबेस क्लस्टर बनाने के लिए। निर्माण के समय, क्लस्टर पूरी तरह से एक ही निर्देशिका में रहता है। इसमें सभी आवश्यक कॉन्फ़िगरेशन फ़ाइलें शामिल हैं (postgres.conf , pg_hba.conf , आदि) और डेटा फ़ाइलें। यह स्व-निहित है, और यदि फ़ाइल अनुमतियों को सही ढंग से संभाला जाता है, तो इसे किसी अन्य समान मशीन में ले जाया जा सकता है। आप लॉग फ़ाइलों को निर्देशिका के अंदर भी रख सकते हैं, ताकि आपके पास सभी संबंधित फ़ाइलें (कॉन्फ़िगरेशन, डेटा, लॉग) एक ही स्थान पर हों।
डेटाबेस क्लस्टर बनाने के लिए, उपयोग करें:
$ pg_ctl -D myclus initdb
यह myclus . नामक निर्देशिका बनाता है वर्तमान निर्देशिका के तहत, और इससे सर्वर शुरू करने के लिए आवश्यक सभी फाइलों के साथ इसे पॉप्युलेट करता है।
यहां एक नमूना सत्र है:
$ pg_ctl -D myclus initdb
The files belonging to this database system will be owned by user "alice".
This user must also own the server process.
The database cluster will be initialized with locale "C.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
creating directory myclus ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default timezone ... Etc/UTC
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using:
/usr/lib/postgresql/11/bin/pg_ctl -D myclus -l logfile start
डेटाबेस सर्वर प्रारंभ करें
एक "पोस्टग्रेज सर्वर" मूल रूप से एक पोस्टमास्टर है प्रक्रिया जो एक डेटाबेस क्लस्टर निर्देशिका के स्थान के साथ शुरू होती है। यह पोस्टमास्टर प्रक्रिया कई प्रक्रियाओं को बदल देती है जो विभिन्न पृष्ठभूमि गतिविधियों के साथ-साथ आने वाले कनेक्शन को भी संभालती हैं। उदाहरण के लिए, आप htop जैसे टूल का उपयोग करके सिस्टम प्रोसेस ट्री को देखकर इस प्रक्रिया मॉडल को क्रिया में देख सकते हैं।
अपने नए डेटाबेस क्लस्टर के लिए पोस्टमास्टर प्रक्रिया शुरू करने के लिए, उपयोग करें:
$ pg_ctl -D myclus -l myclus/log start
-l
विकल्प पोस्टग्रेज लॉग फ़ाइल का स्थान निर्दिष्ट करता है, जो इस मामले में क्लस्टर निर्देशिका के भीतर ही है। लॉगफ़ाइल को क्लस्टर निर्देशिका में रखना असामान्य नहीं है।
आपको ऐसा आउटपुट देखना चाहिए:
waiting for server to start.... done
server started
पुनः लोड करना, पुनः आरंभ करना और रोकना आपकी अपेक्षानुसार होता है:
$ pg_ctl -D myclus -l myclus/log reload
server signaled
$ pg_ctl -D myclus -l myclus/log restart
waiting for server to shut down.... done
server stopped
waiting for server to start.... done
server started
$ pg_ctl -D myclus -l myclus/log stop
waiting for server to shut down.... done
server stopped
अब आप psql . जैसे क्लाइंट का उपयोग करके इस नए क्लस्टर से जुड़ने में सक्षम होंगे और pgAdmin ।
पोर्ट और अन्य विकल्प सेट करना
व्यावहारिक रूप से हालांकि, यदि आपके पास पहले से ही आपकी मशीन पर पोस्टग्रेज स्थापित है, तो आपको संभवतः myclus/postgres.conf
को संपादित करने की आवश्यकता होगी। और पोर्ट . के लिए मान बदलें , unix_socket_directories और शायद सुनो_पता क्लस्टर शुरू होने से पहले सफाई से। ऐसा इसलिए है क्योंकि सिस्टम-स्थापित Postgresservice पहले से ही पोर्ट 5432 और निर्देशिकाओं पर चल रहा हैunix_socket_directories एक नियमित उपयोगकर्ता द्वारा नहीं लिखा जा सकता है। डिफ़ॉल्टसुनो_पता लोकलहोस्ट है, जिसका अर्थ है कि आप बाहरी लोकलहोस्ट से क्लस्टर से कनेक्ट नहीं कर पाएंगे।
अगर आप pg_ctl . का इस्तेमाल कर रहे हैं अपनी स्वचालित परीक्षण स्क्रिप्ट में क्लस्टर बनाने और फाड़ने के लिए, यह आसान है यदि आप इन विकल्पों को सीधे कमांड-लाइन से निर्दिष्ट कर सकते हैं, बजाय प्रोग्रामेटिक रूप से myclus/postgres.conf
को संपादित करने के। .आप इस तरह के विकल्प निर्दिष्ट कर सकते हैं:
$ pg_ctl -D myclus -l myclus/log -o "-p 6000 -k /tmp -i" start
यह निर्देशिका /tmp में बनाए गए यूनिक्स सॉकेट के साथ पोर्ट 6000 पर सर्वर प्रारंभ करता है और सभी इंटरफेस पर सुनना।
आपको इन विकल्पों को केवल "प्रारंभ" के लिए निर्दिष्ट करने की आवश्यकता है, आप उन्हें "पुनरारंभ" सहित अन्य आदेशों के लिए छोड़ सकते हैं।
अन्य उपयोगी प्रारंभ विकल्प
कुछ अन्य विकल्प हैं जिनका उपयोग आप "-o" के अंदर कर सकते हैं जो उपयोगी हो सकते हैं:
-F
परीक्षण स्क्रिप्ट को तेजी से पूरा करने के लिए उपयोगी fsync को अक्षम करता है-B shared_bufffers
shared_buffers . का मान सेट करें , उदाहरण-B 100MB
-c conf_var=value
कोई भी कॉन्फ़िगरेशन मान सेट करें, उदाहरण-c wal_level=logical
इनमें से कुछ सेट के साथ एक उदाहरण यहां दिया गया है:
$ pg_ctl -D myclus -l myclus/log -o "-p 6000 -k /tmp -i -B 100MB -c wal_level=logical" start
ये विकल्प वास्तव में postgres . के कमांड लाइन विकल्प हैं प्रक्रिया, जिसकी पूरी सूची यहाँ प्रलेखित है।
एक भिन्न पोस्टग्रेज़ संस्करण का डेटाबेस चलाएँ
EnterpriseDB विभिन्न प्लेटफार्मों के लिए विभिन्न पोस्टग्रेज संस्करणों के लिए पूर्व-निर्मित बायनेरिज़ होस्ट करता है। ये बिना किसी इंस्टॉलर के टारबॉल हैं।
अपने इच्छित टैरबॉल को पकड़ो, उसे अनपैक करें, pg_ctl
. का पता लगाएं इसके साथ बाइनरी, और क्लस्टर बनाने के लिए इसका इस्तेमाल करें। pg_ctl
स्वचालित रूप से संबद्ध initdb/postgres/अन्य बायनेरिज़ को खोज लेगा जिन्हें क्लस्टर बनाने/शुरू करने के लिए इसकी आवश्यकता है।
आप मशीन पर किसी भी मौजूदा PostgreSQL स्थापना की परवाह किए बिना, और स्वतंत्र रूप से इसका उपयोग कर सकते हैं।
Windows पर सेवाएं बनाएं
pg_ctl
MacOS और Windows सहित सभी प्लेटफार्मों पर उपलब्ध है। विशेष रूप से, आप इसका उपयोग आसानी से एक ऐसी सेवा बनाने के लिए कर सकते हैं जिसे सर्विस कंट्रोल मैनेजर (SCM) के माध्यम से शुरू और बंद किया जा सकता है। सेवा बनाने के लिए, उपयोग करें:
pg_ctl -D myclus -N myclus_service register
यह "myclus_service" नामक एक ऑटो-स्टार्ट सेवा बनाता है।
यह सुविधा केवल Postgres v10 और इसके बाद के संस्करण में उपलब्ध है।