কোনও বাহ্যিক ক্রোন-সদৃশ সরঞ্জাম ছাড়া পোষ্টগ্র্যাস্কল এ পুনরাবৃত্ত কাজগুলি কীভাবে চালানো যায়?


41

আমি নিয়মিতভাবে একটি সঞ্চিত পদ্ধতিতে কল করতে চাই। ওরাকলে, আমি এটির জন্য একটি কাজ তৈরি করব would আমি খুঁজে পেয়েছি যে Postgresql একটি বাহ্যিক সরঞ্জাম (ক্রোন ইত্যাদি) এবং PgAgent ব্যবহার করে এটি ভালভাবে অনুকরণ করতে পারে।

আপনি কি এমন কোনও "অভ্যন্তরীণ" বিকল্প সম্পর্কে জানেন যা বাহ্যিক সরঞ্জামকে অন্তর্ভুক্ত করবে না?

  • আমি পিজিএজেন্টের কমান্ড লাইনে থাকা পাসওয়ার্ড সহ সুরক্ষা উদ্বেগ এড়াতে চাই।
  • আমি পাসওয়ার্ডটি লুকানোর জন্য কোনও অতিরিক্ত সিস্টেম কনফিগারেশন এড়াতে চাই ( ~/.pgpass)।

Postgresql 8.3
লিনাক্স রেডহ্যাট 64 বিট


আপনি যোগ করতে পারেন কেন আপনি পিজএজেন্ট বা ক্রন্টব ব্যবহার করতে পারবেন না? বিশেষত কোন বৈশিষ্ট্যগুলি অনুপস্থিত রয়েছে ..
রিঙ্কলফ্রি

@ রোহান আমি আমার প্রশ্ন আপডেট করেছি
স্টিফান

মনে হচ্ছে পোস্টটি অনুলিপি করা হয়েছে এবং স্ট্যাকওভারফ্লো.com
ক্রেগ রিঞ্জার

উত্তর:


30

এমনকি যদি আপনি শিগগির-প্রকাশিত হতে চলেছেন (লেখার সময়) পোস্টগ্র্যাস এসকিউএল 10 বা বর্তমান পোস্টগ্র্যাসকিউএল 9.6 কোনও 8.3 এর মতো প্রাচীন প্রকাশ নয় তবে এখনও কোনও বিল্ট-ইন টাস্ক শিডিয়ুলার নেই।

পিজিএজেন্ট বা বাহ্যিক ক্রোন জবগুলির মতো কিছু প্রয়োজন, কোনও সুবিধাজনক কাজ নেই।

9.3-এ প্রবর্তিত ব্যাকগ্রাউন্ড কর্মীদের বৈশিষ্ট্যটি আশা করা যায় যে পিজাগেন্টের মতো কোনও সরঞ্জাম পরবর্তী প্রকাশে পোস্টগ্র্রেএসকিউএল কোরে স্থানান্তরিত হওয়ার অনুমতি দেওয়া উচিত, তবে এটি এখনও করা হয়নি। এমনকি 9.3 এ আপনাকে এখনও ক্রোন বা পেজেন্ট চালাতে হবে।

কিছু লোক ব্যাকগ্রাউন্ড ওয়ার্কার ভিত্তিক শিডিয়ুলারে কাজ করছে, এবং এমন কিছু প্যাচ আসছে যা তাদের সহায়তা করার জন্য সুবিধাগুলি সরবরাহ করবে। তবে পোস্টগ্রিসকিউএল 10 হিসাবে এখনও কোনও ভাল মানের, ব্যাপকভাবে গৃহীত শিডিয়ুলার নেই এবং বেশিরভাগ লোকেরা ক্রোন / এমএস টাস্ক শিডিয়ুলার / ইত্যাদি ব্যবহার করে

দয়া করে সংস্করণ নীতিটি একবার দেখুন ; আপনি একটি অপ্রচলিত এবং অসমর্থিত রিলিজ চালাচ্ছেন।


Please take a look at the version policy, Postgresql আপগ্রেড করা কোনও বিকল্প নয়।
স্টিফান

2
@ অ্যালেক্স আপনাকে কিছু সময়ে আপগ্রেড করতে হবে এবং এটি কেবল আরও শক্ত হয়ে উঠবে। কি 8.3 পয়েন্ট রিলিজ, উপায় দ্বারা? আপনি কতটি উল্লেখযোগ্য বাগ সংশোধন করছেন? বা আপনি কমপক্ষে 8.3.23 এ আছেন? এটি বলেছিল, আমি যে বৈশিষ্ট্যটি বর্ণনা করেছি তার উপস্থিতি 9.3 প্রকাশের মধ্যেও উপস্থিত নেই, যদিও এর সংযোজন অনুমোদনের কিছু ভিত্তি যুক্ত করা হয়েছে।
ক্রেগ রিঞ্জার

আমার বসের সাথে আমার একটি কথা হবে :)
স্টিফান

1
@ অ্যালেক্স শুভ ধারণা :-)। সর্বনিম্ন 8.3.23 এ সর্বনিম্ন আপডেট করুন, তারপরে একটি নতুন রিলিজে আপগ্রেড পরিকল্পনা নিয়ে কাজ শুরু করুন। এটি এই প্রশ্নের সমাধান করবে না, তবে ভবিষ্যতের ব্যথা বাঁচাতে এটি একটি খুব ভাল ধারণা। আমি সমর্থন করি এমন ক্রেতার সংখ্যা যারা কারা সমস্যা করে চলেছে তারা যদি কেবল বর্তমান থাকত তবে তাদের কখনওই পড়তে হত না amazing আমরা কেবল কিক্স ;-) জন্য নতুন সংস্করণ প্রকাশ করি না। আপনার মোকাবিলার জন্য প্রয়োজনীয় জিনিসগুলির দিকনির্দেশের জন্য প্রতিটি .0 সংস্করণের জন্য প্রকাশিত নোটগুলি পড়ুন এবং আপগ্রেড করার ক্ষেত্রে ম্যানুয়ালটি পড়ুন। আপনার কেবলমাত্র ব্যথার পয়েন্টগুলি হ'ল standard_conforming_stringsএবং bytea_output
ক্রেগ রিঞ্জার

ক্রেগ, আপনি পিজি ক্রোন সম্পর্কে কী ভাবেন?
মেহমেট

21

PostgreSQL 9.5 হিসাবে, আপনি pg_cron এক্সটেনশনটি ব্যবহার করতে পারেন , যা পোস্টগ্র্রেএসকিউএলে একটি ভাগ করা লাইব্রেরি হিসাবে লোড করা হয়।

সেট আপ করার পরে, একটি কাজ তৈরি করা বেশ সহজ:

SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);

এটি নির্দিষ্ট ক্রোন শিডিয়ুল অনুযায়ী ডিলিট কমান্ড চালাবে। আপনি @rebootযখন সার্ভারটি পুনরায় চালু করবেন তখন আপনি কোনও কাজের সময় নির্ধারণের জন্যও ব্যবহার করতে পারেন এবং আপনি গরম স্ট্যান্ডবাই প্রচার করলে pg_cron স্বয়ংক্রিয়ভাবে কাজ শুরু করবে।

.Pgpass ব্যবহার করার পরিবর্তে, আপনি pg_hba.conf- এ ক্রোন ব্যবহারকারীর জন্য লোকালহোস্ট অ্যাক্সেস সরবরাহ করতে পারেন।


-1

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

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

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

ডিফল্ট সেটআপে আপনি কেবল এটি করতে পারেন:

$ sudo -u postgres crontab -e

সম্পাদকটিতে ক্রন্টব এন্ট্রি তেমন যুক্ত করুন:

0    0    *     *    * bash /path/to/run_stored_procedure.sh

এবং আপনার /path/to/run_stored_procedure.sh ফাইলে আপনি কেবল আপনার স্টোরের পদ্ধতিতে কল করতে পিএসকিএল ব্যবহার করেন

#!/usr/bin/env bash
psql my_db_name <<END
    SET ROLE limited_user;
    SELECT my_stored_proc();
    SELECT 1 FROM my_stored_proc();
END

1
'ডাটাবেসটির মতো অপব্যবহার করা সত্যিই ভাল ধারণা নয়' আপনি কেন এটি অপব্যবহার বলে মনে করেন? বিভিন্ন মূলধারার আরডিবিএমএসের প্রবণতা একই রকম হয় এবং আমি মনে করি এটি এতটা ভয়াবহ নয়। এছাড়াও, যদি আপনার ওএস এ অ্যাক্সেস না থাকে তবে আপনার ক্রন্টাবের অভাব রয়েছে।
dezso
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.