Systemd Mysql durmayacak


17

15.04 sürümüne geçtikten sonra, systemd'i tanımaktan çok keyif aldım. Ben mysql.service durduramıyorum dışında her şeyi çalışan düşünüyorum; systemctl komutu kilitleniyor ve mysql çalışmaya devam ediyor. Başka biri bunu yaşadı mı ya da neler olduğunu biliyor olabilir mi?


2
Varsayılan olarak, 3 dakika sonra hizmeti SIGKILL ile doldurur (hizmet normal şekilde sona ermezse). Muhtemelen mysql.service'in yapılandırmalarını okumalısınız.
Velkan

2
Hangi MySQL sürümünü kullanıyorsunuz? Kendi yerel mysql.servicesenaryolarını kullandınız mı veya kendi senaryolarınızı mı yazdınız?
Jos

Resmi canlı repodan çıkan 5.6. Bu paketle birlikte gelen komut dosyasını kullanıyorum.
Craig Dunford

Aynı sorunu yaşadık ve bir hata raporu verdik .
EOLE takımı

Yanıtlar:


25

Aynı sorunu yaşadım (resmi dosyaları ve yapılandırmayı kullanarak 15.04'e yükseltin).

Sistemin yeniden başlatılması / kapatılması mysqlile arka plan programını manuel olarak sytemctlve otomatik olarak durdurabilmek için aşağıdaki değişiklikleri yapmak zorunda kaldım :

  1. Make /etc/mysql/debian.cnfiçin okunabilir mysqlkullanıcı ile

    sudo chgrp mysql /etc/mysql/debian.cnf; sudo chmod 640 /etc/mysql/debian.cnf
    
  2. Biraz değiştirilmiş bir mysql.servicedosya sağlayın :

    sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
    sudo chmod 755 /etc/systemd/system/mysql.service
    
  3. Kopyalanan dosyayı bir düzenleyicide açarak açık bir durdurma komutu sağlayın:

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

    ve [Service]bölümün altına aşağıdaki satırı ekleyin:

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

    Nano'da kaydetmek için Ctrl + O tuşlarını kullanın (Linux yolu!), Çıkmak için Ctrl + X tuşlarını kullanın.

  4. Yeni hizmet dosyasını sistem tarafından bilinir hale getirin:

    sudo systemctl daemon-reload
    

Kubuntu'm kapatma sırasında donmaya başladı MySQL Community Server [1dk 16s / 10dk] için bir durdurma işi çalışıyor . Bu cevap sorunu çözdü, çok teşekkür ederim.
lolmaus - Andrey Mikhaylov

14.10 -> 15.04 yükseltmem (MySQL 5.5'i 5.6'ya taşıdı) aynı soruna neden oldu. MySQL 'çalışıyor' olsa da düzgün kapanmıyor, bu yüzden Ubuntu kapanmaya devam ediyor. Sorun, MySQL sürüm değişikliğinin sistem başlangıcını değiştirerek yeniden başlatma ile ilgili olduğu anlaşılıyor. Bu bağlantı , uyarıları vb. Sıralamak için MySQL yapılandırmasındaki bazı güncellemeleri kapsar. MySQL'in başlatılması, sistemd 10 dakikadan sonra işlemi bekletir, çünkü bu kadar bekleyebilirseniz, her zaman yanlış kapanmadan şikayet eder.
Mike

1
Debian Jessie de aynı sorun / MySQL 5.6 ile test - size teşekkürler :)
Majenko

Bunu yapmaktan nefret ediyorum ama işe yaradığı için çok memnunum, teşekkürler Udo!
Gabriel Baker

LinuxMint 18'deki sorunu çözmedi
sivaprasadreddy.k

1

Ubuntu 15.10 Masaüstü ile aynı sorunu yaşadım ve düzeltmenin bir yolunu buldum:

/etc/mysql/mysql.conf.d/mysqld.cnf içindeki log_error parametresi yorumlandı. Parametreyi açtıktan sonra, systemd sorunsuz mysqld kapatır.


Aynı sorunu Ubuntu LTS 16.04'te de yaşadım. Yalnızca error.log dosyasının devre dışı bırakılması çalışıyordu. Şimdi mysqld --log-syslogseçeneği ile günlüğe yazıyor . Belki bir sebep: kök dosya sistemi btrfs idi.
ingopingo

1

Sorununuz thread_pool_size. Çekirdek / iş parçacığı sayısından çok daha yüksekse, mysqladmin shutdown komutunu kullanmadıkça düzgün şekilde kapanamazsınız.

Örn .: 4 yivli 2 çekirdekli CPU'nuz var. 1-4 olarak ayarlarsanız - iyi çalışır. Birçok 'yüksek performanslı' blogda önerildiği gibi 16'ya ayarlarsanız, sorun giderilir.


1

Ben mysql / mariadb kapatıldığında ya da manuel olarak çağrılan systemd tarafından bildirildiğinde durmak başarısız benzer bir sorunu vardı sudo service mysql stop.

Benim durumumda UEFI modunda Ubuntu / Windows çift önyükleme yapıyorum ve bu işletim sistemi farklı donanım zamanlarını yorumluyor, böylece her iki işletim sistemi de başlatıldıklarında Internet zaman sunucularıyla senkronize oluyor.

MySQL (ve Mariadb) çalışırken donanım zamanı değiştiğinde durmuyordu.

MySQL başlangıcını zaman uyumundan sonra ertelemeniz gerekir. İdeal olarak bu, mysql ile geçici bir bağımlılık ekleyerek yapılacaktı, After: time-syncancak bu benim için işe yaramadı.

Benim için çalışan çözüm (Aynı etki için mysql'i mariadb ile değiştirebilirsiniz):

  1. MySQL'i ile devre dışı bırak sudo systemctl disabled mysql.service

  2. /usr/bin/delay_mysqlİçeriklerle biraz gecikmeden sonra mysql'yi başlatacak bir komut dosyası oluşturun (çalıştırılabilir olduğundan emin olun) :

    #!/bin/sh
    sleep 30s
    /etc/init.d/mysql start
    
  3. Yeni komut dosyanızı /etc/systemd/system/delay_mysql.service içeriklerle çalıştırmak için bir systemd hizmeti oluşturun :

    [Unit]
    Description=Delay start of MySQL / MariaDB
    
    [Service]
    Type=oneshot
    ExecStart=/usr/bin/delay_mysql
    
    [Install]
    WantedBy=multi-user.target  
    
  4. Yeni hizmetinizi sudo systemctl enable delay_mysql.service

Bu, komut dosyanızın Ubuntu'da 3,4,5 olan çok kullanıcılı düzeylerde çalışmasına neden olur.


Sorunum çözüldü. Ancak, MySql'i yeniden yüklemeden önce delay_mysql.service'i devre dışı bırakmanız gerektiğini, aksi takdirde bir hatayla karşılaştığınızı belirtmek çok önemlidir.
SiGe

0

Kopyalama sırasında bir sonrakini mysql.serviceyapmanız gerekir chmod.

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

0

benim durumumda MySQL veritabanında bir ile debian-sys-maintbir arasında bakım kullanıcısı için şifre uyuşmazlığıydı /etc/mysql/debian.cnf.

Bu kullanıcı MySQL kapatma ve diğer işlevler için kullanılır. MySQL güncellemesinden sonra, dosya ve veritabanı arasında geçiş uyuşmazlığı olabilir. Bu, veritabanınızı bir MySQL'den diğerine taşırsanız da olabilir. Diğer MySQL'den tüm veritabanlarını ve kullanıcıları farklı bir makineye içe aktaracaksanız, bakım kullanıcı ( debian-sys-maint) şifrenizi tekrar senkronize etmeniz gerekir .

Yapmanız gereken: ubuntu / debian dosyasında mevcut şifrenizi kontrol edin:

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

Sistemin kullanacağı şifreyi burada görebilirsiniz: password = n4aSHUP04s1J32X5

Bir sonraki adım MySQL'i aynı şifreyle güncellemektir: MySQL'e giriş yapın:

~$ mysql -u root -p

MySQL'e erişmek için şifrenizi yazın

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

Bundan sonra kapatma ile ilgili hiçbir sorun yok, 10 dakika beklemek yok, phpmyadmin gibi bu bakım hesabını kullanan uygulamaları yüklemekle ilgili hiçbir sorun yok.

GÜNCELLEME: Maalesef bu sorunu çözmedi. Rastgele bir tür yaptı - bazen hizmet durduğunda donacak başka bir zaman sorunu olmadan hizmeti durdurabilirim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.