কম্পিউটার

PostgreSQL প্রশাসন, পার্ট 1

এই পোস্টটি PostgreSQL এর সাথে পরিচয় করিয়ে দেয় এবং আপনাকে Linux®-এ সংস্করণ 9.3 এর ইনস্টলেশন ও কনফিগারেশনের মাধ্যমে নিয়ে যায়।

পরিচয়

PostgreSQL হল বিশ্বের সবচেয়ে উন্নত ওপেন সোর্স রিলেশনাল ডেটাবেস ম্যানেজমেন্ট সিস্টেম (RDBMS)। অনেক নেতৃস্থানীয় প্রতিষ্ঠান, যেমন Apple, IMDB, Skype, Uber, Lockheed Martin, Verizon, এবং অন্যান্য, PostgreSQL ব্যবহার করে। এই RDBMS 1986 সালে বার্কলে ক্যালিফোর্নিয়া বিশ্ববিদ্যালয়ের POSTGRES প্রকল্পের অংশ হিসাবে শুরু হয়েছিল এবং মূল প্ল্যাটফর্মে 30 বছরেরও বেশি সক্রিয় বিকাশ রয়েছে।

PostgreSQL সমস্ত প্রধান অপারেটিং সিস্টেমে চলে এবং 2001 সাল থেকে এসিআইডি-সঙ্গতিপূর্ণ। সংক্ষিপ্ত ACID নিম্নলিখিত উপাদানগুলি নিয়ে গঠিত:

  • পরমাণু :আপনি গ্যারান্টি দেন যে হয় সমগ্র লেনদেন সফল হবে বা এর কোনটিই হবে না।
  • সঙ্গতি :আপনি গ্যারান্টি দেন যে সমস্ত ডেটা সামঞ্জস্যপূর্ণ। সমস্ত ডেটা সংজ্ঞায়িত নিয়ম অনুযায়ী বৈধ। নিয়মগুলির মধ্যে রয়েছে সীমাবদ্ধতা, ক্যাসকেড এবং ডাটাবেসে প্রয়োগ করা ট্রিগার৷
  • বিচ্ছিন্নতা :সমস্ত লেনদেন বিচ্ছিন্নভাবে ঘটে। লেনদেনটি অন্য কোনো লেনদেনের ডেটা পড়তে পারে না যা এখনও সম্পূর্ণ হয়নি।
  • স্থায়িত্ব :আপনি একটি লেনদেন করার পরে, এটি সিস্টেমে থেকে যায়, এমনকি অপারেশনের সাথে সাথে সিস্টেম ক্র্যাশ হলেও।

আশ্চর্যজনকভাবে, PostgreSQL জনপ্রিয় পোস্টজিআইএস জিওস্পেশিয়াল ডাটাবেস এক্সটেন্ডারের মতো শক্তিশালী অ্যাড-অনগুলির কারণে অনেক লোক এবং সংস্থার পছন্দের ওপেন-সোর্স রিলেশনাল ডাটাবেস হিসেবে কাজ করে।

PostgreSQL প্রশাসন, পার্ট 1

ছবির উৎস :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 উন্নয়ন সংস্করণ:বিকাশ অসমর্থিত সংস্করণ:9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2

ইনস্টলেশন এবং কনফিগারেশন

Postgres 9.3 ইনস্টল এবং কনফিগার করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

লিনাক্স 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 ডাউনলোড করুন

Postgres ইনস্টলেশন শুরু করার জন্য আপনার OS সংস্করণের জন্য Red Hat প্যাকেজ ম্যানেজার (RPM) ডাউনলোড করতে নিম্নলিখিত কমান্ডটি চালান:

[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 ইনস্টল করার পরে, আপনাকে কিছু Postgre প্যাকেজ ইনস্টল করতে হবে যা 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

দ্রষ্টব্য :যদি sysconfig/pgsql-এ PostgreSQL বিদ্যমান নেই, এটি তৈরি করুন এবং একটি লাইন যোগ করুন যেখানে আপনি ডেটা সংরক্ষণ করতে চান, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

[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

স্বয়ংক্রিয়ভাবে শুরু করার জন্য পোস্টগ্রেস সেট করুন

আপনি যদি চান PostgreSQL যখন OS শুরু হয় তখন স্বয়ংক্রিয়ভাবে শুরু হয়, নিচের কমান্ডটি ব্যবহার করুন:

[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 শুধু রিলেশনাল নয়, এটা বস্তু রিলেশনাল। এই পার্থক্য এটিকে মাইএসকিউএল, মারিয়াডিবি এবং ফায়ারবার্ডের মতো ওপেন সোর্স এসকিউএল ডেটাবেসের তুলনায় কিছু সুবিধা দেয়। ক্লাউড-এ একটি ওপেন সোর্স RDBMS-এ ইন-হাউস RDBMS স্থানান্তর করার জন্য PostgreSQL হল AWScloud-এ একটি সুস্পষ্ট পছন্দ৷

এই ব্লগের পার্ট 2-এ, আমি পোস্টগ্রে ব্যাকআপ পুনরুদ্ধার এবং পুনরুদ্ধার কভার করি৷

কোনো মন্তব্য করতে বা প্রশ্ন জিজ্ঞাসা করতে প্রতিক্রিয়া ট্যাব ব্যবহার করুন। কথোপকথন শুরু করতে আপনি এখন চ্যাটও করতে পারেন।

আমাদের ডেটাবেস পরিষেবাগুলি সম্পর্কে আরও জানুন


  1. MongoDB টিপস:পার্ট 2

  2. ObjectRocket পরিষেবাতে PostgreSQL এক্সটেনশনগুলি পরিচালনা করুন

  3. র্যাকস্পেস অবজেক্ট রকেটের পোস্টগ্রেএসকিউএল সাধারণ উপলব্ধতায় পৌঁছেছে

  4. কিভাবে PostgreSQL এবং CockroachDB এর মধ্যে নির্বাচন করবেন