কম্পিউটার টিউটোরিয়াল

PostgreSQL মাস্টার করুন: ইনস্টলেশন ও কনফিগারেশন গাইড – পার্ট ১

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

ভূমিকা

PostgreSQL হল বিশ্বের সবচেয়ে উন্নত ওপেন-সোর্স রিলেশনাল ডেটাবেস ম্যানেজমেন্ট সিস্টেম (RDBMS)। Apple, IMDB, Skype, Uber, Lockheed Martin, Verizon এবং অন্যান্য অনেক 주도 সংস্থা PostgreSQL ব্যবহার করে। এই RDBMS-র যাত্রা ১৯৮৬-এ ক্যালিফোর্নিয়া বিশ্ববিদ্যালয়, বার্কেলির POSTGRES প্রজেক্টের অংশ হিসেবে শুরু হয়েছিল এবং মূল প্ল্যাটফর্মে ৩০ বছরেরও বেশি সক্রিয় উন্নতি রয়েছে।

PostgreSQL সকল প্রধান অপারেটিং সিস্টেমে চলে এবং ২০০১ থেকে ACID-কমপ্লায়েন্ট। ACID এক্রোনিমের উপাদানগুলো হলো:

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

অন্য 누구ণে, PostgreSQL অনেক মানুষ এবং সংস্থার পছন্দের ওপেন-সোর্স রিলেশনাল ডেটাবেস কারণ এর শক্তিশালী অ্যাড-অনসের কারণে, যেমন জনপ্রিয় PostGIS জিওস্পেশিয়াল ডেটাবেস এক্সটেন্ডার।

PostgreSQL মাস্টার করুন: ইনস্টলেশন ও কনফিগারেশন গাইড – পার্ট ১

ছবির উৎস: 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 ডাউনলোড করুন

আপনার OS সংস্করণের জন্য Red Hat Package Manager (RPM) ডাউনলোড করতে নিচের কমান্ড চালান 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 ইনস্টল করার পর, আপনাকে কিছু 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 

নোট: যদি 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 

Postgres কে স্বয়ংক্রিয়ভাবে শুরু হওয়ার জন্য সেট করুন

আপনি চাইলে 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) 

একটি ইনস্ট্যান্স বা ক্লাস্টারের ভিতরে ডিবিনেম পান

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-র তুলনায় কিছু সুবিধা দেয়। PostgreSQL AWS ক্লাউডে অন-প্রিমিস RDBMS কে ওপেন সোর্স RDBMS-এ ক্লাউডে মাইগ্রেট করার জন্য একটি স্বাভাবিক পছন্দ।

এই ব্লগের পার্ট ২-তে, আমি PostgreSQL ব্যাকআপ রিস্টোর এবং রিকভারি কভার করব।

ফিডব্যাক ট্যাব ব্যবহার করে মন্তব্য করুন বা প্রশ্ন করুন। আপনি এখন চ্যাট করে কথা বলতে পারেন।

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


  1. উন্নত MongoDB অপ্টিমাইজেশন: পার্ট ২

  2. ObjectRocket-এ PostgreSQL এক্সটেনশন মাস্টার করুন: প্রোডাকশন ডেটাবেসের জন্য সিমলেস ম্যানেজমেন্ট

  3. র্যাকস্পেস ObjectRocket ঘোষণা করল PostgreSQL সার্ভিস এখন সাধারণত উপলব্ধ

  4. PostgreSQL এবং CockroachDB-এ থেকে বেছে নেওয়া: একটি ব্যবহারিক গাইড