यह पोस्ट PostgreSQL का परिचय देता है और आपको Linux® पर संस्करण 9.3 की स्थापना और कॉन्फ़िगरेशन के बारे में बताता है।
परिचय
PostgreSQL दुनिया का सबसे उन्नत ओपन-सोर्स रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) है। कई प्रमुख संगठन, जैसे कि Apple, IMDB, Skype, Uber, Lockheed Martin, Verizon, और अन्य, PostgreSQL का उपयोग करते हैं। यह RDBMS 1986 में बर्कले में कैलिफोर्निया विश्वविद्यालय में POSTGRES परियोजना के हिस्से के रूप में शुरू हुआ और इसके मुख्य मंच पर 30 से अधिक वर्षों से सक्रिय विकास है।
PostgreSQL सभी प्रमुख ऑपरेटिंग सिस्टम पर चलता है और 2001 से ACID के अनुरूप है। संक्षिप्त नाम ACID में निम्नलिखित घटक होते हैं:
- परमाणुता :आप गारंटी देते हैं कि या तो पूरा लेन-देन सफल होता है या इनमें से कोई भी नहीं करता है।
- संगति :आप गारंटी देते हैं कि सभी डेटा सुसंगत हैं। सभी डेटा परिभाषित नियमों के अनुसार मान्य है। नियमों में डेटाबेस पर लागू बाधाएं, कैस्केड और ट्रिगर शामिल हैं।
- अलगाव :सभी लेनदेन अलगाव में होते हैं। लेन-देन किसी अन्य लेन-देन से डेटा नहीं पढ़ सकता है जो अभी तक पूरा नहीं हुआ है।
- स्थायित्व :आपके द्वारा लेन-देन करने के बाद, यह सिस्टम में बना रहता है, भले ही ऑपरेशन के तुरंत बाद सिस्टम क्रैश हो जाए।
अप्रत्याशित रूप से, PostgreSQL अपने शक्तिशाली ऐड-ऑन जैसे लोकप्रिय PostGIS जियोस्पेशियल डेटाबेस एक्सटेंडर के कारण कई लोगों और संगठनों के लिए पसंद के ओपन-सोर्स रिलेशनल डेटाबेस के रूप में कार्य करता है।
छवि स्रोत :https://postgresql-database.blogspot.com/2013/08/postgresql-architecture.html
सहायता
निम्न कंपनियों से उत्पादन सहायता SLA उपलब्ध है:
- https://www.enterprisedb.com
- https://www.2ndquadrant.com/
- https://www.revsys.com/
- https://imperoit.com/PostgreSQL_Support.htm
समर्थित संस्करण:वर्तमान (12) / 11/10 / 9.6 / 9.5 / 9.4विकास संस्करण:develअसमर्थित संस्करण:9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2
स्थापना और कॉन्फ़िगरेशन
Postgres 9.3 को स्थापित और कॉन्फ़िगर करने के लिए निम्न चरणों का पालन करें:
Linux 7.1 पर Postgres 9.3 इंस्टॉल करें
Red Hat® Linux 7.1 पर Postgres 9.3 स्थापित करने के लिए निम्न कमांड चलाएँ:
[root@snwdbsolpeprod01 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.1 (Maipo)
एक खाली फोल्डर बनाएं
डेटाबेस स्थापना के लिए एक खाली फ़ोल्डर बनाएँ।
[root@snwdbsolpeprod01 mnt]# mkdir postt
[root@snwdbsolpeprod01 postt]# pwd
/mnt/postt
RPM डाउनलोड करें
Red Hat Package Manager (RPM) को अपने OS संस्करण के लिए Postgres संस्थापन शुरू करने के लिए डाउनलोड करने के लिए निम्नलिखित कमांड चलाएँ:
[root@snwdbsolpeprod01 postt]# wget https://yum.postgresql.org/9.3/redhat/rhel-7-x86_64/pgdg-redhat93-9.3-2.noarch.rpm
RPM इंस्टॉल करें
निम्न आदेश का उपयोग करके RPM पैकेज स्थापित करें:
root@snwdbsolpeprod01 postt]# rpm -ivh pgdg-redhat93-9.3-2.noarch.rpm
अतिरिक्त पैकेज इंस्टॉल करें
RPM स्थापित करने के बाद, आपको कुछ पोस्टग्रे पैकेज स्थापित करने होंगे जो DB सॉफ़्टवेयर स्थापित करते हैं।
[root@snwdbsolpeprod01 postt]# yum install postgresql-contrib.x86_64
[root@snwdbsolpeprod01 postt]# yum install postgresql93-server.x86_64
PGDATA स्थान कॉन्फ़िगर करें
निर्धारित करें कि डेटा कहाँ संग्रहीत करना है। डेटा के लिए एक गैर-डिफ़ॉल्ट स्थान का उपयोग करने के लिए, PostgreSQL सेवा को संपादित करें sysconfig फ़ाइल, और PGDATA तर्क बदलें।
vi /etc/rc.d/init.d/postgresql
vi /etc/sysconfig/pgsql/postgresql
नोट :यदि PostgreSQL sysconfig/pgsql . में है मौजूद नहीं है, इसे बनाएं और एक पंक्ति जोड़ें जो दर्शाती है कि आप डेटा को कहाँ संग्रहीत करना चाहते हैं, जैसा कि निम्नलिखित उदाहरण में दिखाया गया है:
[root@snwdbsolpeprod01 pgsql]# cd /etc/sysconfig/pgsql/
[root@snwdbsolpeprod01 pgsql]# vi postgresql
[root@snwdbsolpeprod01 pgsql]# cat postgresql
PDGATA=/mnt/postt
डेटाबेस को प्रारंभ करें
पहला कमांड (केवल एक बार आवश्यक) PGDATA में डेटाबेस को इनिशियलाइज़ करना है।
service <name> initdb
उदाहरण के लिए:संस्करण 9.3 के लिए:
service postgresql-9.3 initdb
या
/usr/pgsql-9.3/bin/postgresql93-setup initdb
[root@snwdbsolpeprod01 data]# /usr/pgsql-9.3/bin/postgresql93-setup initdb
Initializing database ... OK
पोस्टग्रेज़ को अपने आप प्रारंभ करने के लिए सेट करें
यदि आप चाहते हैं कि OS के प्रारंभ होने पर PostgreSQL अपने आप प्रारंभ हो जाए, तो निम्न कमांड का उपयोग करें:
[root@snwdbsolpeprod01 data]# chkconfig postgresql-9.3 on
नोट :'systemctl enable postgresql-9.3.service' के लिए अनुरोध अग्रेषित करना।
PostgreSQL सेवा प्रारंभ करें
PostgreSQL सेवा शुरू करने के लिए, निम्न कमांड चलाएँ:
[root@snwdbsolpeprod01 data]# systemctl start postgresql-9.3.service
डेटाबेस कॉन्फ़िगर करें
आप निम्न उदाहरण में दिखाए गए अनुसार postgresql.conf को अपडेट करके डेटाबेस को आसानी से कॉन्फ़िगर कर सकते हैं:
vi /var/lib/pgsql/9.3/data/postgresql.conf
निम्नलिखित बदलें:
listen_address = ‘*’
port = 15000
max_connections=300
shared_buffers = 8192MB # min 128kB
# (change requires restart)
temp_buffers = 128MB # min 800kB
max_prepared_transactions = 20 # zero disables the feature
log_destination = 'csvlog'
logging_collector = on
log_directory = '/mnt/pgsql/logs'
log_filename = 'postgresql-%a.log'
#------------------------------------------------
# AUTOVACUUM PARAMETERS
#------------------------------------------------
autovacuum = on
# Enable autovacuum subprocess? 'on'
# requires track_counts to also be on.
#log_autovacuum_min_duration = -1 # -1 disables, 0 logs all actions and
# their durations, > 0 logs only
# actions running at least this number
# of milliseconds.
autovacuum_max_workers = 3 # max number of autovacuum subprocesses
# (change requires restart)
autovacuum_naptime = 10080min # time between autovacuum runs
autovacuum_vacuum_threshold = 1000 # min number of row updates before
# vacuum
#autovacuum_analyze_threshold = 50 # min number of row updates before
# analyze
#autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum
#autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze
#autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum
# (change requires restart)
#autovacuum_multixact_freeze_max_age = 400000000 # maximum Multixact age
# before forced vacuum
# (change requires restart)
#autovacuum_vacuum_cost_delay = 20ms # default vacuum cost delay for
# autovacuum, in milliseconds;
# -1 means use vacuum_cost_delay
#autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for
# autovacuum, -1 means use
# vacuum_cost_limit
डेटाबेस कनेक्शन सेटिंग कॉन्फ़िगर करें
डेटाबेस कनेक्शन सेटिंग को प्रतिबंधित या प्रबंधित करने के लिए, निम्न कमांड चलाएँ:
vi /var/lib/pgsql/9.3/data/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
local all postgres md5
local all postgres ident
# IPv4 local connections:
# IPv6 local connections:
host all all ::1/128 ident
host all all 0.0.0.0/0 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
#host replication postgres 127.0.0.1/32 ident
#host replication postgres ::1/128 ident
फ़ायरवॉल कॉन्फ़िगर करें
पोर्ट को फ़ायरवॉल पर कॉन्फ़िगर करने के लिए, निम्न कमांड चलाएँ:
iptables -I INPUT -p tcp --dport 15000 --syn -j ACCEPT
service iptables save
service iptables restart
root@snwdbsolpeprod01 postt]# service postgresql-9.3 restart
एक उपयोगकर्ता या भूमिका बनाएं
डेटाबेस में एक नया उपयोगकर्ता या भूमिका बनाने के लिए, निम्नलिखित कमांड चलाएँ:
su – postgres
psql -p 15000
postgres=# CREATE ROLE OCT1 LOGIN
UNENCRYPTED PASSWORD 'test@123'
INHERIT REPLICATION;
टेबल स्पेस बनाएं
डेटाबेस पर एक नया टेबलस्पेस बनाने के लिए, निम्न कमांड चलाएँ:
postgres=# CREATE TABLESPACE OCT1_tablespace
OWNER ilusr
LOCATION '/usrdata/pgsql/data/oct';
डेटाबेस बनाएं
नया डेटाबेस बनाने के लिए, निम्न कमांड चलाएँ:
postgres=# CREATE DATABASE OCT1
WITH ENCODING='UTF8'
OWNER=test
LC_CTYPE='en_US.UTF-8'
CONNECTION LIMIT=-1
TABLESPACE=OCT1_tablespace;
मूल कमांड
कुछ बुनियादी व्यवस्थापन आदेशों में निम्नलिखित शामिल हैं:
बंद करें और PostgreSQL शुरू करें
/opt/PostgreSQL/9.3/bin/pg_ctl -D /mnt/postt/data stop
/opt/PostgreSQL/9.3/bin/pg_ctl -D /mnt/postt/data start
/opt/PostgreSQL/9.3/bin/pg_ctl -D /mnt/postt/data restart
/opt/PostgreSQL/9.3/bin/pg_ctl -D opt/PostgreSQL/9.4/data –m smart stop #wait for complete the transactions
/opt/PostgreSQL/9.3/bin/pg_ctl -D /mnt/postt/data –m fast stop #Immediate stop
/opt/PostgreSQL/9.3/bin/pg_ctl -D /mnt/postt/data –m immediate stop #Abort the DB
/opt/PostgreSQL/9.3/bin/pg_ctl -D /mnt/postt/data –m smart restart
/opt/PostgreSQL/9.3/bin/pg_ctl -D /mnt/postt/data –m fast restart
/opt/PostgreSQL/9.3/bin/pg_ctl -D /mnt/postt/data –m immediate restart
PostgreSQL संस्करण की जाँच करें
postgres=# select version();
एक विशिष्ट डेटाबेस स्तर पर गतिविधि की पहचान करें
select pid,backend_xid,backend_xmin,query from pg_stat_activity ;
तालिका स्थिति का विश्लेषण करें
select relname,last_autoanalyze,last_analyze,n_mod_since_analyze from pg_stat_all_tables;
तालिका का भौतिक पथ ढूंढें
postgres=# SELECT pg_relation_filepath('testpitr1');
pg_relation_filepath
----------------------
base/13003/16399
[postgres@postgres221 data]$ ls -l /mnt/postt/data/base/13003/16399
-rw------- 1 postgres postgres 256024576 Feb 21 06:36 /mnt/postt/data/base/13003/16399
इंस्टेंस या क्लस्टर के अंदर स्कीमा नाम प्राप्त करें
select schema_name from information_schema.schemata;
select nspname from pg_catalog.pg_namespace;
post_gre=# \dn
List of schemas
Name | Owner
--------------+----------
kailash_test | postgres
public | postgres
(2 rows)
एक उदाहरण या क्लस्टर के अंदर dbnames प्राप्त करें
template1=# select datname from pg_database;
template1
template0
post_gre
template1=# \l
post_gre | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres +
| | | | | kailash_s=CTc/postgres
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | |
template1=# select usename from pg_catalog.pg_user;
kailash
kailash_s
postgres
template1=# \du
kailash | | {}
kailash_s | Superuser, Create role, Create DB | {}
postgres | Superuser, Create role, Create DB, Replication | {}
निष्कर्ष
PostgreSQL की टैग लाइन का दावा है कि यह "दुनिया का सबसे उन्नत ओपन सोर्सडेटाबेस है।" हालाँकि, PostgreSQL सिर्फ रिलेशनल नहीं है, यह ऑब्जेक्ट रिलेशनल है। यह अंतर इसे अन्य ओपन सोर्स SQL डेटाबेस जैसे MySQL, MariaDB और Firebird पर कुछ लाभ देता है। AWScloud पर PostgreSQL एक स्पष्ट विकल्प है जो CLOUD पर इन-हाउस RDBMS को एक ओपन सोर्स RDBMS में माइग्रेट करने के लिए है।
इस ब्लॉग के भाग 2 में, मैं पोस्टग्रे बैकअप पुनर्स्थापना और पुनर्प्राप्ति को कवर करता हूं।
कोई भी टिप्पणी करने या प्रश्न पूछने के लिए फीडबैक टैब का उपयोग करें। बातचीत शुरू करने के लिए आप अभी चैट भी कर सकते हैं।
हमारी डेटाबेस सेवाओं के बारे में अधिक जानें