14.04 থেকে 16.04.1 এ আপগ্রেড করার পরে পোস্টগ্র্যাসকিএল সার্ভার শুরু হয় না


24

সবেমাত্র আমার সিস্টেমকে 14.04 থেকে আপগ্রেড করা হয়েছে। এলটিএস থেকে 16.04.1 এলটিএস, পোস্টগ্রিস্কলটি সিস্টেমডে শুরু হয় না:

/etc/init.d/postgresql start                                                                                                                                                                              
[ ok ] Starting postgresql (via systemctl): postgresql.service

# /etc/init.d/postgresql status                                                                                                                                                                             
● postgresql.service - PostgreSQL RDBMS
  Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor     preset: enabled)
  Active: active (exited) since Вт 2016-08-09 13:40:51 MSK; 3min 23s ago
  Process: 23142 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
  Main PID: 23142 (code=exited, status=0/SUCCESS)Seems that 

সিস্টেম স্ক্রিপ্টটিতে ভুল ডেটা রয়েছে বলে মনে হচ্ছে:

# cat /lib/systemd/system/postgresql.service                                                                                                                                                                
# systemd service for managing all PostgreSQL clusters on the system. This
# service is actually a systemd target, but we are using a service since
# targets cannot be reloaded.

[Unit]
Description=PostgreSQL RDBMS

[Service]
Type=oneshot
ExecStart=/bin/true
ExecReload=/bin/true
RemainAfterExit=on

[Install]
WantedBy=multi-user.target

Postgresql এর জন্য সঠিক স্ক্রিপ্টটি কী হওয়া উচিত?

উত্তর:


9

আপনি যদি সঠিক সংস্করণ এবং ক্লাস্টারের নাম সরবরাহ করেন তবে এটি বক্সের বাইরে কাজ করবে।

বলুন আপনি সংস্করণটি চালাচ্ছেন 9.5এবং ক্লাস্টারটি বলা হয় main:

শুরু করুন: systemctl start postgresql@9.5-main

স্টপ: systemctl stop postgresql@9.5-main

স্থিতি: systemctl status postgresql@9.5-main

বুটে অটোস্টার্ট সক্ষম করুন: systemctl enable postgresql@9.5-main

বুটে অটোস্টার্ট অক্ষম করুন: systemctl disable postgresql@9.5-main

foo@postgres:~$ systemctl status postgresql@9.5-main
●  postgresql@9.5-main.service - PostgreSQL Cluster 9.5-main
   Loaded: loaded (/lib/systemd/system/postgresql@.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-03-31 17:44:46 CEST; 59s ago
   Main PID: 4546 (postgres)
   CGroup: /system.slice/system-postgresql.slice/postgresql@9.5-main.service
           ├ ─ 4546 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.5/main -c config_file=/etc/postgresql/9.5/main/postgresql.conf
           ├ ─ 4548 postgres: checkpointer process
           ├ ─ 4549 postgres: writer process
           ├ ─ 4550 postgres: wal writer process
           ├ ─ 4551 postgres: autovacuum launcher process
           └ ─ 4552 postgres: stats collector process

Mar 31 17:44:44 postgres postgres[4546]: [1-2] 2017-03-31 17:44:44 CEST [4546] @ HINT:  Future log output will go to log destination "syslog".
Mar 31 17:44:44 postgres postgres[4547]: [2-1] 2017-03-31 17:44:44 CEST [4547] @ LOG:  database system was shut down at 2017-03-31 17:44:43 CEST
Mar 31 17:44:44 postgres postgres[4547]: [3-1] 2017-03-31 17:44:44 CEST [4547] @ LOG:  MultiXact member wraparound protections are now enabled
Mar 31 17:44:44 postgres postgres[4546]: [2-1] 2017-03-31 17:44:44 CEST [4546] @ LOG:  database system is ready to accept connections
Mar 31 17:44:44 postgres postgres[4551]: [2-1] 2017-03-31 17:44:44 CEST [4551] @ LOG:  autovacuum launcher started
Mar 31 17:44:45 postgres postgres[4553]: [3-1] 2017-03-31 17:44:45 CEST [4553] [unknown]@[unknown] LOG:  incomplete startup packet
Mar 31 17:44:46 postgres systemd[1]: Started PostgreSQL Cluster 9.5-main.
Mar 31 17:44:47 postgres systemd[1]: Reloading PostgreSQL Cluster 9.5-main.
Mar 31 17:44:47 postgres postgres[4546]: [3-1] 2017-03-31 17:44:47 CEST [4546] @ LOG:  received SIGHUP, reloading configuration files
Mar 31 17:44:47 systemd[1]: Reloaded PostgreSQL Cluster 9.5-main.

প্রমাণ করতে পারেন যে এটি কাজ। আমি কীভাবে এটির স্বস্টার্টে সিস্টেমড সেটআপ করতে পারি?
আর্তুর এশেনব্রেনার

1
systemctl enable postgresql@9.5-mainআপনার যা দরকার তা হল।
মাল্টে

1
সবেমাত্র পোস্টগ্র্যাস্কেলকে 9.6 থেকে 10.0 এ আপগ্রেড করা হয়েছে এবং এই সমস্যাটিতে আবার আঘাত করুন। আপনার সমাধান চেষ্টা করে প্রমাণ করতে পারেন: এটি কার্যকর হয়।
আর্তুর এশেনব্রেনার

নীচে কেমিনের উত্তর থেকে বের করা হয়েছে: আপনি উদাহরণস্বরূপ systemctl edit postgresql@9.6-mainসিস্টেমযুক্ত নির্দেশাবলী সহ একটি ওভাররাইড ফাইল তৈরি করতে ব্যবহার করতে পারেন যেমন : [পরিষেবাদি] নিস = 15 আইওএসচেডিংক্লাস = 2 আইওএসচেডিংপ্রিয়ালিটি = 7
গ্রিনরাইপার

14

Systemd এর থেকে স্ক্রিপ্ট ব্যবহার করা উচিত /etc/init.d। পরিবর্তে, সিস্টেমড কিছু ধরণের টেম্পলেট ফাইল ব্যবহার করে। এটি ঠিক করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. অবৈধ পরিষেবা স্ক্রিপ্ট সরান:

    # rm /lib/systemd/system/postgresql.service

  2. ডেমন স্ক্রিপ্টগুলি পুনরায় লোড করুন:

    # systemctl daemon-reload

  3. পোস্টগ্র্যাস্ক্ল পরিষেবাটি সক্ষম করুন:

    # systemctl enable postgresql

: এর পরে, আপনি কোনো পছন্দের বিন্যাসের সাথে postgres শুরু করতে সক্ষম হবে sudo systemctl start postgresql, sudo service postgresql startবা, sudo /etc/init.d/postgresql start। যে PostgreSQL আসলে চালানোর পরীক্ষা করার জন্য, সেবা স্থিতি পরীক্ষা করুন: sudo systemctl status postgresql। এটি কড়া দেখাচ্ছে:

% sudo systemctl status postgresql                                                                                                                                                                          
● postgresql.service - LSB: PostgreSQL RDBMS server
   Loaded: loaded (/etc/init.d/postgresql; bad; vendor preset: enabled)
   Active: active (running) since Пт 2016-08-12 10:13:43 MSK; 1h 37min ago
     Docs: man:systemd-sysv-generator(8)
   CGroup: /system.slice/postgresql.service
           ├─4086 /usr/lib/postgresql/9.5/bin/postgres -D     /var/lib/postgresql/9.5/main -c  config_file=/etc/postgresql/9.5/main/postgresql.conf
           ├─4099 postgres: checkpointer process                                                                                              
           ├─4100 postgres: writer process                                                                                                    
           ├─4101 postgres: wal writer process                                                                                                
           ├─4102 postgres: autovacuum launcher process                                                                                       
           └─4103 postgres: stats collector process                                                                                           

авг 12 10:13:40 ubuntu-precise systemd[1]: Starting LSB: PostgreSQL RDBMS server...
авг 12 10:13:40 ubuntu-precise postgresql[4009]:  * Starting PostgreSQL 9.5 database server
авг 12 10:13:43 ubuntu-precise postgresql[4009]:    ...done.
авг 12 10:13:43 ubuntu-precise systemd[1]: Started LSB: PostgreSQL RDBMS server.

1
এটা ভুল হতে পারে। Systemd করে হবে। এটা আমার 9.3 ক্লাস্টার ঠিক সূক্ষ্ম শুরু হয়েছে; এটি আমার 9.5 ক্লাস্টারটি আরম্ভ করবে না। এটি কোনও অবৈধ পরিষেবা স্ক্রিপ্ট নয়, এটি একটি টার্গেট স্ক্রিপ্ট, যে তারা এটিকে পুনরায় লোডযোগ্য করতে একটি পরিষেবা ডেকেছে । কুরুচিপূর্ণ হ্যাকগুলি এটি করার সঠিক উপায় বলে মনে হয় না তবে এটি সত্যিই systemctl _action_ postgresql@_version_চালানো উচিত
অ্যাসপেক্স

আমি জানি না এটি কুরুচিপূর্ণ হ্যাক কিনা (এটি সম্ভবত) তবে আমার পোস্টফিক্সের ক্ষেত্রেও একই সমস্যা ছিল এবং এই উত্তরটি আমার প্রপলমটি সমাধান করেছে বলে মনে হয়।
ডেসিবিট

থিসিস্টেমেক্টল-এ পোস্টগ্রেস্কল সক্ষম করুন আমি নিম্নলিখিত ত্রুটিটি পেয়েছি: postgresql.service একটি নেটিভ সার্ভিস নয়, systemd-sysv- ইনস্টল এক্সিকিউটিং / lib / systemd / systemd-sysv- ইনস্টল পোস্টগ্রেস্কেল ইনসার্জার সক্ষম: fopen (.d depend.stop): অনুমতি অস্বীকার করা insserv: fopen (.d depend.stop): অনুমতি অস্বীকার করা হয়েছে। স্পষ্টতই এটি আমার সেটআপটির সাথে কাজ করছে না।
কেমিন ঝো

1

পোস্টজাগুলি পরিষ্কার করার পরে আমার একই সমস্যা হয়েছিল এবং আমার উবুন্টু 16 এ 10 ইনস্টল করা হয়েছে। প্রথমদিকে আমি নীচের বিষয়বস্তু দিয়ে /lib/systemd/system/postgresql.service ফাইলটি সম্পাদনা করেছি:

[Unit]
Description=PostgreSQL RDBMS

[Service]
Type=notify
User=postgres
ExecStart=/usr/lib/postgresql/10/bin/postgres -D /analysis2/postgresql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0

[Install]
WantedBy=multi-user.target

এবং পোস্টগ্রেসকিএল পরিষেবাটি নিয়ন্ত্রণ করতে আমি সিস্টেমেটিএলটি পুনঃসূচনা / স্টপ / স্টার্ট ব্যবহার করতে পারি। যাইহোক, কোনও কারণে উপরের ফাইলটি ওভাররাইট করা হয়েছে (সম্ভবত সিস্টেম আপডেটের পরে) এবং পোস্টগ্রেসকিউএল সার্ভার আর শুরু করার জন্য এবং থামাতে আমি সিস্টেমটেক্ট কমান্ডটি চালাতে পারিনি। কিছু পড়ার পরে, আমি বুঝতে পেরেছিলাম যে উপরের ফাইলটি আপনার সম্পাদনা করার কথা নয়। পরিবর্তে আপনার ডিফল্টগুলি ওভাররাইট করতে systemctl সম্পাদনা ফু ব্যবহার করা উচিত। নিম্নলিখিত লিঙ্কটি দ্বারা প্রস্তাবিত সমাধান অনুসরণ করার পরে, আমার সিস্টেম পোস্টগ্রেসকিএল দিয়ে সঠিকভাবে কাজ করছে বলে মনে হচ্ছে।

আমি কীভাবে সিস্টেমড পরিষেবাদিগুলি ওভাররাইড বা কনফিগার করব?


-2

সর্বোত্তম সমাধান নয়, তবে এটি কোনও কিছুর ডুব না দিয়েই সমস্যার সমাধান করে। এটি ক্রোন যুক্ত করুন:

@reboot sleep 5; systemctl start postgresql
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.