এই পোস্টটি 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 জিওস্পেশিয়াল ডেটাবেস এক্সটেন্ডার।
ছবির উৎস: 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 ব্যাকআপ রিস্টোর এবং রিকভারি কভার করব।
ফিডব্যাক ট্যাব ব্যবহার করে মন্তব্য করুন বা প্রশ্ন করুন। আপনি এখন চ্যাট করে কথা বলতে পারেন।
আমাদের ডেটাবেস সার্ভিস সম্পর্কে আরও জানুন