কম্পিউটার

CentOS/RHEL-এ PostgreSQL ইনস্টল এবং কনফিগার করুন

এই নিবন্ধে আমরা PostgreSQL 11 ইনস্টল করব Linux CentOS-এ 7, মৌলিক কনফিগারেশন সঞ্চালন, প্রধান কনফিগারেশন ফাইল পরামিতি এবং কর্মক্ষমতা টিউনিং পদ্ধতি বিবেচনা করুন। PostgreSQL হল একটি জনপ্রিয় ফ্রি অবজেক্ট-রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেম। যদিও এটি MySQL/MariaDB এর চেয়ে কম জনপ্রিয়, এটি সবচেয়ে পেশাদার।

PostgreSQL শক্তি:

  • এসকিউএল মানগুলির সাথে সম্পূর্ণ সম্মতি;
  • মাল্টিভারসন কনকারেন্সি কন্ট্রোল (MVCC) এর কারণে উচ্চ কর্মক্ষমতা;
  • স্কেলেবিলিটি (হাই-লোড পরিবেশে ব্যাপকভাবে ব্যবহৃত হয়);
  • একাধিক প্রোগ্রামিং ভাষার সমর্থন;
  • স্থিতিস্থাপক লেনদেন এবং প্রতিলিপি প্রক্রিয়া;
  • JSON ডেটার সমর্থন।

CentOS/RHEL-এ PostgreSQL কিভাবে ইনস্টল করবেন?

যদিও PostgreSQL বেস CentOS রিপোজিটরি থেকে ইন্সটল করা যেতে পারে, আমরা ডেভেলপার রিপোজিটরি ইন্সটল করব কারণ আপনি সবসময় সেখানে বর্তমান প্যাকেজ ভার্সন খুঁজে পেতে পারেন।

প্রথমত, PosgreSQL রেপো যোগ করুন:

# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

এই সংগ্রহস্থলে PosgreSQL এর সর্বশেষ এবং পূর্ববর্তী উভয় সংস্করণ রয়েছে। সংগ্রহস্থল সম্পর্কে তথ্য এই মত দেখায়:

CentOS/RHEL-এ PostgreSQL ইনস্টল এবং কনফিগার করুন

yum ব্যবহার করে PostrgeSQL 11 ইন্সটল করা যাক।

# yum ইনস্টল postgresql11-সার্ভার -y

PostgreSQL সার্ভার এবং প্রয়োজনীয় লাইব্রেরি ইনস্টল করা হবে:

ইন্সটল করা হচ্ছে :libicu-50.2-3.el7.x86_64 1/4ইনস্টল করা হচ্ছে :postgresql11-libs-11.5-1PGDG.rhel7.x86_64 2/4ইনস্টল করা হচ্ছে :postgresql11-11.5-1PGDG.rhel611/postgresql413x. 11.5-1PGDG.rhel7.x86_64 4/4

প্যাকেজগুলি ইনস্টল করার পরে, আপনাকে ডাটাবেসটি শুরু করতে হবে:

# /usr/pgsql-11/bin/postgresql-11-setup initdb

এছাড়াও, PostgreSQL ডেমন সক্ষম করুন এবং systemctl ব্যবহার করে অটো-স্টার্টে যোগ করুন:

# systemctl enable postgresql-11
# systemctl start postgresql-11

পরিষেবার স্থিতি পরীক্ষা করুন:

# systemctl স্থিতি postgresql-11

● postgresql-11.service - PostgreSQL 11 ডাটাবেস সার্ভার লোড করা হয়েছে:লোড করা হয়েছে (/usr/lib/systemd/system/postgresql-11.service; সক্ষম; বিক্রেতা প্রিসেট:নিষ্ক্রিয়) সক্রিয়:সক্রিয় (চলমান) বুধ 1020- -18 16:02:15 +06; 26s agoDocs:https://www.postgresql.org/docs/11/static/Process:8714 ExecStartPre=/usr/pgsql-11/bin/postgresql-11-check-db-dir ${PGDATA} (code=exited , status=0/SUCCESS)প্রধান পিআইডি:8719 (পোস্টমাস্টার)CGroup:/system.slice/postgresql-11.service├─8719 /usr/pgsql-11/bin/postmaster -D /var/lib/pgsql/11/ data/├─8721 postgres:logger├─8723 postgres:checkpointer├─8724 postgres:ব্যাকগ্রাউন্ড writer├─8725 postgres:walwriter├─8726 postgres:autovacuum launcher├├─8726 postgres:autovacuum launcher├├─8723 postgres:postorg8723 সংগ্রহ পোস্ট 16:02:16 host1.woshub.com systemd[1]:PostgreSQL 11 ডাটাবেস সার্ভার শুরু হচ্ছে...

আপনি যদি বাইরে থেকে PostgreSQL অ্যাক্সেস করতে চান, তাহলে ডিফল্ট CentOS ফায়ারওয়ালডে TCP পোর্ট 5432 খুলুন:
# firewall-cmd --get-active-zones

পাবলিক ইন্টারফেস:eth0

# firewall-cmd --zone=public --add-port=5432/tcp --permanent
# firewall-cmd --reload

অথবা iptables সহ:

# iptables-A INPUT -m রাজ্য --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
# পরিষেবা iptables পুনরায় চালু করুন

SELinux সক্রিয় থাকলে, নিম্নলিখিত কমান্ডটি চালান:

# সেটসেবুল -P httpd_can_network_connect_db 1

PostgreSQL-এ ডেটাবেস তৈরি করতে PSQL ব্যবহার করে, ব্যবহারকারী, অনুমতি প্রদান করা

ডিফল্টরূপে, আপনি যখন PostgreSQL ইনস্টল করেন তখন সিস্টেমে একমাত্র ব্যবহারকারী থাকে — postgres। আমি ডাটাবেসের সাথে দৈনন্দিন কাজের জন্য এই অ্যাকাউন্টটি ব্যবহার করার পরামর্শ দিই না। প্রতিটি ডাটাবেসের জন্য আলাদা ব্যবহারকারী তৈরি করা ভালো।

একটি পোস্টগ্রেস সার্ভারের সাথে সংযোগ করতে, এই কমান্ডটি চালান:

# sudo -u postgres psql

psql (11.5)সাহায্যের জন্য "help" টাইপ করুন।

postgres=#

PostgreSQL কনসোল প্রদর্শিত হবে। তারপর আমরা psql কনসোল থেকে PostgreSQL পরিচালনার কিছু সাধারণ উদাহরণ দেখাব।

ডিফল্ট পোস্টগ্রেস ব্যবহারকারীর পাসওয়ার্ড পরিবর্তন করুন:

পাসওয়ার্ড 's3tPa$$w0rd!' সহ ভূমিকা পোস্টগ্রেসগুলি পরিবর্তন করুন;

একটি নতুন ডাটাবেস এবং ব্যবহারকারী তৈরি করুন এবং ব্যবহারকারীকে নতুন ডাটাবেসে সম্পূর্ণ অ্যাক্সেস দিন:

postgres=# ডেটাবেস newdbtest তৈরি করুন;
postgres=# পাসওয়ার্ড দিয়ে ব্যবহারকারী mydbuser তৈরি করুন '!123456789';
postgres=# ডেটাবেস newdbtest-এ সমস্ত সুবিধা প্রদান করুন; mydbuser কোড

DB এর সাথে সংযোগ করতে:

postgres=# \c ডেটাবেসনাম

টেবিলের তালিকা প্রদর্শন করতে:

postgres=# \dt

ডাটাবেস সংযোগের তালিকা প্রদর্শন করতে:

postgres=# নির্বাচন করুন * pg_stat_activity থেকে যেখানে datname='dbname'

ডাটাবেসের সমস্ত সংযোগ পুনরায় সেট করতে:

postgres=# pg_stat_activity থেকে pg_terminate_backend(pid) নির্বাচন করুন যেখানে datname ='dbname'

বর্তমান অধিবেশন সম্পর্কে তথ্য পেতে:

postgres=# \conninfo

psql কনসোল থেকে প্রস্থান করতে, এই কমান্ডটি চালান:

postgres=# \q

আপনি যেমন লক্ষ্য করেছেন, সিনট্যাক্সটি মারিয়াডিবি বা মাইএসকিউএলের অনুরূপ।

আমরা লক্ষ্য করব যে একটি ওয়েব ইন্টারফেস থেকে PostgreSQL ডাটাবেসগুলি আরও সুবিধাজনকভাবে পরিচালনা করতে, pgAdmin4 ব্যবহার করার পরামর্শ দেওয়া হচ্ছে (পাইথন এবং জাভাস্ক্রিপ্ট/jQuery এ লেখা)। এটি PhpMyAdmin-এর অনুরূপ যেটির সাথে অনেক ওয়েব ডেভেলপার পরিচিত৷

CentOS/RHEL-এ PostgreSQL ইনস্টল এবং কনফিগার করুন

প্রধান PostgreSQL কনফিগারেশন প্যারামিটার সেট করা

Postgresql কনফিগারেশন ফাইলগুলি /var/lib/pgsql/11/data-এ অবস্থিত :

  1. postgresql.conf — postgresql কনফিগারেশন ফাইল;
  2. pg_hba.conf — অ্যাক্সেস সেটিংস ধারণকারী একটি ফাইল। এই ফাইলটিতে, আপনি আপনার ব্যবহারকারীদের জন্য বিভিন্ন বিধিনিষেধ সেট করতে পারেন বা একটি ডাটাবেস সংযোগ নীতি সেট করতে পারেন;
  3. pg_ident.conf — এই ফাইলটি আইডেন্ট প্রোটোকলের মাধ্যমে ক্লায়েন্ট সনাক্ত করতে ব্যবহৃত হয়।

অনুমোদন ছাড়াই পোস্টগ্রেসে লগ ইন করতে স্থানীয় ব্যবহারকারীদের আটকাতে, আপনার pg_hba.conf-এ নিম্নলিখিতটি উল্লেখ করুন:

স্থানীয় সব md5host সব 127.0.0.1/32 md5

আসুন postgresql.conf:

-এর সবচেয়ে গুরুত্বপূর্ণ প্যারামিটারগুলো বিবেচনা করি
  • শুনুন_ঠিকানা — সার্ভার ক্লায়েন্ট সংযোগ গ্রহণ করবে এমন IP ঠিকানাগুলি সেট করে। ডিফল্ট মান হল লোকালহোস্ট, এর মানে হল শুধুমাত্র একটি স্থানীয় সংযোগ সম্ভব। সমস্ত IPv4 ইন্টারফেস শুনতে, এখানে 0.0.0.0 উল্লেখ করুন;
  • max_connections -একটি DB সার্ভারে সর্বাধিক সংখ্যক একযোগে সংযোগ;
  • temp_buffers – অস্থায়ী বাফারের সর্বোচ্চ আকার;
  • shared_buffers — একটি ডাটাবেস সার্ভার দ্বারা ব্যবহৃত ভাগ করা মেমরির আকার। সাধারণত, সার্ভারের মোট RAM এর 25% মান সেট করা হয়;
  • effective_cache_size – একটি পরামিতি যা পোস্টগ্রেস শিডিউলারকে স্থানীয় ড্রাইভে ক্যাশে করার জন্য উপলব্ধ মেমরির পরিমাণ নির্ধারণ করতে সক্ষম করে। সাধারণত, এটি সার্ভারের মোট RAM এর 50-75% সেট করা হয়;
  • work_mem – ডাটাবেস ম্যানেজমেন্ট সিস্টেমের অভ্যন্তরীণ সাজানোর ক্রিয়াকলাপগুলির দ্বারা মেমরির আকার ব্যবহার করা হবে — অর্ডার বাই, ডিস্টিনক্ট এবং মার্জিং;
  • রক্ষণাবেক্ষণ_ওয়ার্ক_মেম – অভ্যন্তরীণ ক্রিয়াকলাপগুলির দ্বারা ব্যবহৃত মেমরির আকার — ভ্যাকুয়াম, সূচক তৈরি করুন এবং বৈদেশিক কী যোগ করুন টেবিল পরিবর্তন করুন;
  • fsync - যদি এই প্যারামিটারটি সক্ষম করা থাকে, DBMS একটি হার্ড ডিস্কে ডেটার প্রকৃত লেখার জন্য অপেক্ষা করবে। fsync সক্রিয় করা থাকলে, সিস্টেম বা হার্ডওয়্যার ব্যর্থতার পরে আপনার ডাটাবেস পুনরুদ্ধার করা আপনার পক্ষে সহজ হবে। স্পষ্টতই, যদি এই প্যারামিটারটি সক্রিয় করা হয়, তবে ডাটাবেস ম্যানেজমেন্ট সিস্টেমের কর্মক্ষমতা কম হবে, কিন্তু উচ্চ স্টোরেজ নির্ভরযোগ্যতা থাকবে। আপনি যদি এটি নিষ্ক্রিয় করেন, তাহলে full_page_writesও নিষ্ক্রিয় করা মূল্যবান;
  • max_stack_depth — সর্বোচ্চ স্ট্যাকের আকার (ডিফল্টরূপে 2MB);
  • max_fsm_pages — এই পরামিতি ব্যবহার করে, আপনি সার্ভারে বিনামূল্যে ডিস্ক স্থান পরিচালনা করতে পারেন। উদাহরণস্বরূপ, একটি টেবিল থেকে কিছু ডেটা মুছে ফেলার পরে, আগে দখল করা স্থানটি খালি হয়ে যায় না, তবে মুক্ত স্থান মানচিত্রে বিনামূল্যে হিসাবে চিহ্নিত করা হয় এবং আরও নতুন এন্ট্রির জন্য ব্যবহার করা হয়। আপনি যদি প্রায়ই আপনার সার্ভারের টেবিলে ডেটা লিখতে/মুছে ফেলেন, তাহলে এই প্যারামিটারের একটি বড় মান সেট করলে কর্মক্ষমতা বৃদ্ধি পাবে;
  • wal_buffers – শেয়ার্ড মেমরি সাইজ (শেয়ারড_বাফার) WAL ডেটা রাখার জন্য ব্যবহৃত হয়;
  • wal_writer_delay – একটি ডিস্কে WAL লেখার পরপর সময়ের মধ্যে সময়;
  • commit_delay — WAL বাফারে একটি লেনদেন লেখা এবং একটি ডিস্কের মাধ্যমে লেখার মধ্যে বিলম্ব;
  • synchronous_commit — প্যারামিটার সেট করে যে সফল লেনদেনের ফলাফলটি একটি ডিস্কে শারীরিকভাবে WAL ডেটা লেখার পরে পাঠানো হবে৷

PostgreSQL ডেটাবেস ব্যাকআপ এবং পুনরুদ্ধার করুন

আপনি বিভিন্ন উপায়ে PostgreSQL ডাটাবেস ব্যাকআপ করতে পারেন। আসুন সবচেয়ে সহজটি বিবেচনা করি।

প্রথমত, আপনার সার্ভারে কোন ডাটাবেস চলছে তা পরীক্ষা করুন:

postgres=# \list

CentOS/RHEL-এ PostgreSQL ইনস্টল এবং কনফিগার করুন

আমাদের 4টি ডাটাবেস আছে, তার মধ্যে 3টি সিস্টেমের (পোস্টগ্রেস এবং টেমপ্লেট)।

আগে আমরা mydbtest নামে একটি DB তৈরি করেছি এবং এখন আমরা এটির ব্যাক আপ করব।

আপনি pg_dump ব্যবহার করে আপনার PostgreSQL ডাটাবেস ব্যাকআপ করতে পারেন টুল:

# sudo -u postgres pg_dump mydbtest> /root/dupm.sql

পোস্টগ্রেস ব্যবহারকারীর অধীনে এই কমান্ডটি চালান, একটি ডাটাবেস এবং ফাইলের একটি পথ নির্দিষ্ট করুন যেখানে আপনি একটি ডাটাবেস ডাম্প সংরক্ষণ করবেন। আপনার ব্যাকআপ সিস্টেম ডাটাবেস ডাম্প নিতে পারে, অথবা ওয়েব সার্ভার ব্যবহার করার ক্ষেত্রে আপনি এটি আপনার সংযুক্ত ক্লাউড স্টোরেজ অ্যাকাউন্টে পাঠাতে পারেন৷

ডাম্পটিকে ডাটাবেসে পুনরুদ্ধার করতে, psql ব্যবহার করুন :

# sudo -u postgres psql mydbtest

CentOS/RHEL-এ PostgreSQL ইনস্টল এবং কনফিগার করুন

এছাড়াও আপনি একটি বিশেষ ডাম্প বিন্যাসে একটি ব্যাকআপ তৈরি করতে পারেন এবং এটিকে gzip ব্যবহার করে সংকুচিত করতে পারেন:

# sudo -u postgres pg_dump -Fc mydbtest> /root/dumptest.sql

তারপর pg_restore টুল ব্যবহার করে ডাম্প পুনরুদ্ধার করা হয়:

# sudo -u postgres pg_restore -d mydbtest /root/dumptest.sql

PostgreSQL পারফরম্যান্স টিউনিং এবং অপ্টিমাইজেশান

মারিয়াডিবি সম্পর্কিত পূর্ববর্তী নিবন্ধে, আমরা টিউনার ব্যবহার করে my.cnf কনফিগারেশন ফাইল প্যারামিটারগুলি কীভাবে অপ্টিমাইজ করতে হয় তা দেখিয়েছি। PostgreSQL এর PgTun ছিল যে জন্য, কিন্তু দুর্ভাগ্যবশত এটি একটি দীর্ঘ সময়ের জন্য আপডেট করা হয়নি. একই সময়ে, অনেকগুলি অনলাইন পরিষেবা রয়েছে যা আপনি আপনার PostgreSQL কনফিগারেশন অপ্টিমাইজ করতে ব্যবহার করতে পারেন। আমি PGTune (pgtune.leopard.in.ua) পছন্দ করি .

ইন্টারফেস খুব সহজ. আপনাকে শুধু আপনার সার্ভারের প্যারামিটারগুলি নির্দিষ্ট করতে হবে (প্রোফাইল, প্রসেসর, মেমরি, ডিস্কের ধরন) এবং "জেনারেট করুন" এ ক্লিক করুন। আপনাকে postgresql.conf এর একটি বৈকল্পিক অফার করা হবে যাতে প্রধান PostgreSQL প্যারামিটারের প্রস্তাবিত মান রয়েছে।

উদাহরণস্বরূপ, 4xGB RAM এবং 4xvCPU সহ একটি VPS SSD সার্ভারের জন্য নিম্নলিখিত postgresql.conf সেটিংস সুপারিশ করা হয়:

# DB ভার্সন:11# OS Type:linux# DB Type:web# Total Memory (RAM):4 GB# CPUs সংখ্যা:4# কানেকশন সংখ্যা:100# ডেটা স্টোরেজ:ssdmax_connections =100shared_buffers =1cheef_work_MB_6GB =1cheef_work_5 GB-5-6 জিবি-কমপয়েন্ট কম =0.7wal_buffers =16MBdefault_statistics_target =100random_page_cost =1.1effective_io_concurrency =200work_mem =5242kBmin_wal_size =1GBmax_wal_size =1GBmax_wal_size =4GB_max_worker_pers_pallworks =4GB_max_worker_pers_process =4 GB_max_worker_pers_process_perall 

CentOS/RHEL-এ PostgreSQL ইনস্টল এবং কনফিগার করুন

প্রকৃতপক্ষে, নিবন্ধটি লেখার সময় এটিই একমাত্র সম্পদ নয়। অনুরূপ পরিষেবাগুলিও উপলব্ধ:

  • Cybertec PostgreSQL কনফিগারার
  • PostgreSQL কনফিগারেশন টুল

এই পরিষেবাগুলি ব্যবহার করে, আপনি দ্রুত আপনার হার্ডওয়্যার এবং কাজের জন্য প্রাথমিক PostgreSQL প্যারামিটারগুলি কনফিগার করতে পারেন। পরে আপনি শুধুমাত্র আপনার সার্ভার সংস্থানগুলিই বিবেচনা করতে পারবেন না, তবে আপনার ডাটাবেসের ক্রিয়াকলাপ, এর আকার, সংযোগের সংখ্যা এবং এই তথ্যগুলির উপর ভিত্তি করে আপনার PostgreSQL প্যারামিটারগুলিকে সূক্ষ্ম-টিউন করতে পারবেন৷


  1. RHEL, CentOS এবং Fedora এর মধ্যে পার্থক্য

  2. Oracle APEX এবং ORDS ইনস্টল এবং কনফিগার করুন

  3. CentOS/RHEL-এ Bash Auto Completion কিভাবে ইনস্টল এবং সক্ষম করবেন

  4. Windows 10 এ XAMPP ইনস্টল এবং কনফিগার করুন