सिस्टमड मैसिकल बंद नहीं होगा


17

15.04 में अपग्रेड करने के बाद, मुझे सिस्टमडे को जानने में बहुत मज़ा आया। मुझे लगता है कि मेरे पास सब कुछ काम है सिवाय इसके कि मैं mysql.service को रोकने में असमर्थ हूं; systemctl कमांड बस हैंग करती है और mysql बस चलती रहती है। क्या किसी और ने इसका अनुभव किया है या यह जान सकता है कि क्या हो रहा है?


2
डिफ़ॉल्ट रूप से, यह 3 मिनट के बाद SIGKILL के साथ सेवा को समाप्त कर देता है (यदि सेवा सामान्य रूप से समाप्त होने में विफल रहती है)। संभवतः आपको mysql.service का कॉन्फिग पढ़ना होगा।
वेलकन

2
MySQL का कौन सा संस्करण आप चला रहे हैं? क्या आपने उनकी मूल mysql.serviceस्क्रिप्ट का उपयोग किया या आपने अपना रोल किया?
जॉस

यह 5.6 है जो आधिकारिक ज्वलंत रेपो से बाहर आता है। मैं उस पैकेज के साथ आने वाली स्क्रिप्ट का उपयोग कर रहा हूं।
क्रेग डनफोर्ड

हमें एक ही समस्या थी और एक बग रिपोर्ट दर्ज की
EOLE की टीम

जवाबों:


25

मुझे एक ही समस्या थी (आधिकारिक फ़ाइलों और कॉन्फ़िगरेशन का उपयोग करके 15.04 पर अपग्रेड करें)।

मुझे निम्नांकित बदलाव करने थे ताकि सिस्टम रिबूट / शटडाउन पर mysqlमैन्युअल रूप से sytemctlऔर स्वचालित रूप से डेमॉन को रोकने में सक्षम हो :

  1. के साथ उपयोगकर्ता के /etc/mysql/debian.cnfलिए पठनीय बनाओmysql

    sudo chgrp mysql /etc/mysql/debian.cnf; sudo chmod 640 /etc/mysql/debian.cnf
    
  2. थोड़ा संशोधित mysql.serviceफ़ाइल प्रदान करें :

    sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
    sudo chmod 755 /etc/systemd/system/mysql.service
    
  3. संपादक में कॉपी की गई फ़ाइल को खोलकर एक स्पष्ट स्टॉप कमांड प्रदान करें:

    sudo nano /etc/systemd/system/mysql.service
    

    और [Service]अनुभाग के तहत निम्नलिखित पंक्ति जोड़ना :

    ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown
    

    नैनो में, बाहर निकलने के लिए (Linux तरीका!) को बचाने के लिए Ctrl + O का उपयोग करें।

  4. सिस्टम को ज्ञात नई सेवा फ़ाइल बनाएं:

    sudo systemctl daemon-reload
    

My Kubuntu ने MySQL Community Server [1min 16s / 10min] के लिए A स्टॉप जॉब के साथ शटडाउन के दौरान फ्रीज करना शुरू किया था । इस उत्तर ने समस्या को हल कर दिया, बहुत बहुत धन्यवाद।
लोलमॉस - एंड्री मिखायलोव

मेरा 14.10 -> 15.04 अपग्रेड (जो MySQL 5.5 से 5.6 तक चला गया) एक ही समस्या का कारण बना। हालांकि MySQL 'काम करता है' यह सही ढंग से बंद नहीं होता है, इसलिए उबंटू बंद हो जाता है। ऐसा लगता है कि समस्या MySQL संस्करण परिवर्तन से संबंधित है जो सिस्टमस्टार्ट अपस्टार्ट के साथ संयुक्त है। इस लिंक में MySQL कॉन्फिगरेशन को चेतावनी देने के लिए कुछ अपडेट्स शामिल हैं, MySQL को शुरू करना हमेशा गलत शटडाउन के बारे में शिकायत करता है, क्योंकि सिस्टमड बस 10 मिनट के बाद प्रक्रिया को मार देता है, अगर आप उस लंबे समय तक इंतजार कर सकते हैं।
माइक

1
डेबियन जेसी में एक ही समस्या / MySQL 5.6 के साथ परीक्षण - आप के लिए तय :) :)
माजेंको सेप

मुझे ऐसा करने से नफरत है लेकिन मुझे बहुत खुशी है कि यह काम करता है, धन्यवाद उडो!
गैब्रियल बेकर

यह LinuxMint 18 पर मुद्दे को हल नहीं किया।
sivaprasadreddy.k

1

मैं Ubuntu 15.10 डेस्कटॉप के साथ एक ही समस्या थी और मुझे इसे ठीक करने का तरीका मिला:

log_error पैरामीटर /etc/mysql/mysql.conf.d/mysqld.cnf में टिप्पणी की गई थी। पैरामीटर को अनियोजित करने के बाद, सिस्टमड बिना समस्याओं के mysqld शटडाउन करता है।


उबंटू LTS 16.04 पर मुझे यही समस्या थी। केवल error.log को अक्षम करने से काम हो रहा था। अब mysqld --log-syslogजर्नल के विकल्प के माध्यम से लिखता है । शायद एक कारण: रूट फाइलसिस्टम btrfs था।
इंगोपिंगो

1

आपकी समस्या थ्रेड_पुल_साइज़ है। यदि यह कोर / थ्रेड्स की संख्या से बहुत अधिक है, तो आप mysqladmin शटडाउन कमांड का उपयोग करके ठीक से बंद नहीं कर पाएंगे।

उदा .: आपके पास 4 धागे के साथ 2 कोर सीपीयू है। यदि आप इसे 1-4 सेट करते हैं - यह ठीक काम करेगा। यदि आप इसे 16 में सेट करते हैं, जैसा कि कई 'उच्च प्रदर्शन' ब्लॉगों में सलाह दी गई है, तो यह प्याऊ हो जाएगा।


1

मैं के साथ एक समान मुद्दा था mysql / MariaDB जब द्वारा निर्देश को रोकने के लिए असफल रहने के systemd , या तो शटडाउन होने पर या के साथ मैन्युअल रूप से कहा जाता है sudo service mysql stop

मेरे मामले में मैं यूईएफआई मोड में डब-बूटिंग उबंटू / विंडोज हूं, और ये ओएस अलग-अलग हार्डवेयर समय की व्याख्या करते हैं, इसलिए दोनों ओएस शुरू होने पर इंटरनेट टाइम सर्वर के खिलाफ सिंक करते हैं।

यदि चल रहा है, तो हार्डवेयर समय बदल गया, तो MySQL (और मरदब) को रोकने में विफल रहा था।

आपको समय सीमा के बाद MySQL शुरू करने को स्थगित करने की आवश्यकता है। आदर्श रूप से यह mysql पर एक अस्थायी निर्भरता डालने के द्वारा किया जाएगा, After: time-syncलेकिन यह मेरे लिए काम नहीं किया।

मेरे लिए काम करने वाला समाधान (आप एक ही प्रभाव के लिए mysql को mariadb से बदल सकते हैं):

  1. के साथ mysql अक्षम करें sudo systemctl disabled mysql.service

  2. एक स्क्रिप्ट बनाएं (सुनिश्चित करें कि यह निष्पादन योग्य है) कि /usr/bin/delay_mysqlसामग्री के साथ कुछ देरी के बाद mysql शुरू होगा :

    #!/bin/sh
    sleep 30s
    /etc/init.d/mysql start
    
  3. अपनी नई स्क्रिप्ट /etc/systemd/system/delay_mysql.service को सामग्री के साथ चलाने के लिए एक systemd सेवा बनाएँ :

    [Unit]
    Description=Delay start of MySQL / MariaDB
    
    [Service]
    Type=oneshot
    ExecStart=/usr/bin/delay_mysql
    
    [Install]
    WantedBy=multi-user.target  
    
  4. के साथ अपनी नई सेवा पंजीकृत करें sudo systemctl enable delay_mysql.service

यह आपकी स्क्रिप्ट को बहु-उपयोगकर्ता स्तरों पर चलाने का कारण बनेगा, जो कि Ubuntu पर 3,4,5 हैं।


यह मेरी समस्या का हल है। हालाँकि यह ध्यान रखना बहुत महत्वपूर्ण है, कि MySql को पुनर्स्थापित करने से पहले आपको delay_mysql.service को अक्षम कर देना चाहिए, अन्यथा आपको एक त्रुटि मिल गई।
SiGe

0

बस नकल mysql.serviceकरते समय आपको chmodबाद में करना होगा।

cp /lib/systemd/system/mysql.service /etc/systemd/system/
chmod 755 /etc/systemd/system/mysql.service

0

मेरे मामले में यह MySQL डेटाबेस में एक और एक के debian-sys-maintबीच रखरखाव उपयोगकर्ता के लिए पासवर्ड बेमेल था /etc/mysql/debian.cnf

इस उपयोगकर्ता का उपयोग MySQL शटडाउन और अन्य कार्यों के लिए किया जाता है। MySQL अपडेट के बाद ऐसा हो सकता है कि फ़ाइल और डेटाबेस के बीच एक पास बेमेल हो। यह तब भी हो सकता है जब आप अपने डेटाबेस को एक MySQL से दूसरे में ले जाते हैं। यदि आप विभिन्न डेटाबेस पर अन्य MySQL के सभी डेटाबेस और उपयोगकर्ताओं को आयात करेंगे, तो आपको अपने रखरखाव उपयोगकर्ता ( debian-sys-maint) पासवर्ड को फिर से सिंक करने की आवश्यकता होगी ।

आपको करने की आवश्यकता है: ubuntu / debian फ़ाइल में अपना वर्तमान पासवर्ड जांचें:

sudo cat /etc/mysql/debian.cnf

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = n4aSHUP04s1J32X5
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
user     = debian-sys-maint
password = n4aSHUP04s1J32X5
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

आप अपना पासवर्ड देख सकते हैं जो सिस्टम यहाँ उपयोग करेगा: password = n4aSHUP04s1J32X5

अगला कदम MySQL को उसी पासवर्ड में अपडेट करना है: MySQL में लॉग इन करें:

~$ mysql -u root -p

MySQL तक पहुँचने के लिए अपना पासवर्ड टाइप करें

mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'n4aSHUP04s1J32X5';**

उसके बाद शटडाउन के साथ कोई और समस्या नहीं, 10 मिनट प्रतीक्षा करें, ऐप इंस्टॉल करने के साथ कोई समस्या नहीं जो इस रखरखाव खाते का उपयोग करें जैसे कि phpmyadmin।

अद्यतन: तो दुर्भाग्य से इस मुद्दे को हल नहीं किया। इसने इसे यादृच्छिक बना दिया - कभी-कभी मैं बिना किसी अन्य समस्या के सेवा को रोक सकता हूं, यह सेवा के रुकने पर स्थिर हो जाएगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.