Der Start des MySQL-Servers ist fehlgeschlagen


28

Ich verwende Ubuntu Server. Als ich versuchte, mich bei mysql anzumelden (das lief), bekam ich den folgenden Fehler

ERROR 2002 (HY000): Can't connect to local MySQL server through socket         '/var/run/mysqld/mysqld.sock' (2)

Die Datei mysqld.sock befindet sich jedoch nicht im /var/run/mysqldOrdner. Beim Ausführen des ps aux | grep mysqlBefehls stellte ich fest, dass der MySQL-Server nicht ausgeführt wurde.

Ich habe dann versucht, den MySQL-Server mit neu zu starten

service mysql start
service mysql restart
/etc/init.d/mysql start

Der Startvorgang schlug jedoch in allen drei Fällen fehl. /var/log/mysql/mysql.logund /var/log/mysql/mysql.errDateien sind leer.

Aber /var/log/error.logzeigt folgende Informationen:

140425 12:49:05 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
140425 12:49:05 [Note] Plugin 'FEDERATED' is disabled.
140425 12:49:05 InnoDB: The InnoDB memory heap is disabled
140425 12:49:05 InnoDB: Mutexes and rw_locks use GCC atomic builtins
140425 12:49:05 InnoDB: Compressed tables use zlib 1.2.8
140425 12:49:05 InnoDB: Using Linux native AIO
140425 12:49:05 InnoDB: Initializing buffer pool, size = 3.0G
140425 12:49:05 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 26214400 bytes!
140425 12:49:05 [ERROR] Plugin 'InnoDB' init function returned error.
140425 12:49:05 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140425 12:49:05 [ERROR] /usr/sbin/mysqld: unknown variable 'record_buffer=64M'
140425 12:49:05 [ERROR] Aborting

140425 12:49:05 [Note] /usr/sbin/mysqld: Shutdown complete


1
Was ist die Ausgabe von ls /var/lib/mysql/ib_logfile*?
— Jobin

ls: kann nicht auf / var / lib / mysql / ib_logfile zugreifen *: Keine solche Datei oder Verzeichnis
— ananth

1
Ist Ihr / var / lib / mysql-Verzeichnis für mysql beschreibbar?
— Jos

1
Ich bin ein Linux-Neuling. Ich habe die Berechtigungen von / var / lib / mysql mit chmod 777 geändert . Können Sie mir bitte vorschlagen, wie ich überprüfen soll, ob dies nicht der richtige Weg ist?
— Ananth

Antworten:


28

Öffnen Sie ein Terminal ( Ctrl+ Alt+ t) und gehen Sie folgendermaßen vor:

sudo service mysql stop
sudo rm /var/lib/mysql/ib_logfile0
sudo rm /var/lib/mysql/ib_logfile1

und kommentiere die Zeile record_buffer=64Min /etc/mysql/my.cnf [1] aus

und starte dann msyql neu mit:

sudo service mysql restart

(Quelle)


1
Ich habe die Befehle ausgeführt, die Sie erwähnt haben. Beim Ausführen von sudo service mysql restart wurde die Meldung gestoppt: Unbekannte Instanz und Shell-Eingabeaufforderung wurden nicht angezeigt (Neustart läuft noch nach 50 Minuten)
— ananth

1
Außerdem heißt es jetzt im Fehlerprotokoll: -140425 15:09:11 InnoDB: Das höchste unterstützte Dateiformat ist Barracuda. 140425 15:09:12 InnoDB: Warten auf den Start der Hintergrund-Threads 140425 15:09:13 InnoDB: 5.5.37 gestartet; Protokollfolgenummer 940942258188 140425 15:09:13 [FEHLER] / usr / sbin / mysqld: unbekannte Variable 'record_buffer = 64M' 140425 15:09:13 [FEHLER] Abbruch 140425 15:09:13 InnoDB: Herunterfahren wird gestartet ... 140425 15:09:14 InnoDB: Herunterfahren abgeschlossen; Protokollsequenznummer 940942258188 140425 15:09:14 [Anmerkung] / usr / sbin / mysqld: Herunterfahren abgeschlossen
— ananth

Nein. Ich habe sudo service mysql neu gestartet.
— Ananth

Kannst du es versuchen sudo service mysql start?
— Jobin

Soll ich den laufenden Neustart von mysql beenden? Wird es ein Problem verursachen?
— Ananth

9

Dies löste mein Problem:

mkdir /var/run/mysqld

touch /var/run/mysqld/mysqld.sock

chown -R mysql /var/run/mysqld

/etc/init.d/mysql restart


1
Nach diesen Schritten wird meine Datenbank gelöscht. Was mache ich jetzt?
— Amit Yadav

7

Ich habe das Problem folgendermaßen gelöst:

chown -R mysql:mysql /var/lib/mysql
mysql_install_db --user=mysql -ldata=/var/lib/mysql/

In einem anderen Kontext war ich damit konfrontiert, weil der mysql-Daemon nicht gestartet werden konnte. Starten Sie den Daemon also mit command - mysqld startund versuchen Sie dann, den Dienst zu starten.


2

Ich hatte die gleiche Fehlermeldung und die gleiche Leere in den Protokolldateien. In meiner Konfigurationsdatei (my.cnf) hatte ich angegeben, dass ich myisam-Tabellen verwenden möchte, indem ich diese Zeile in den [mysqld] -Abschnitt einfügte:

default-table-type = myisam

Nach dem Upgrade von MySQL scheint es, dass MySQL nicht startet. Ich habe dies geändert zu:

default-storage-engine = myisam

und jetzt funktioniert alles gut.


1

Das Erhöhen des verfügbaren Arbeitsspeichers durch Hinzufügen von neuem Auslagerungsspeicher kann ebenfalls hilfreich sein. Schritte sind hier

Stellen Sie sicher, dass Sie eine / Swap-Datei erstellen, deren Größe kleiner ist als der von angegebene verfügbare Speicherplatz

df -h

Für mich war die Ausgabe von dfh zum Beispiel:

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  1.2G  6.3G  16% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            492M   12K  492M   1% /dev
tmpfs           100M  336K   99M   1% /run

Also habe ich mit 2 G erstellt

sudo fallocate -l 2G /swapfile

Und dann einfach den Dienst starten

sudo /etc/init.d/mysql restart

Hoffe das hilft. Alles Gute.


1

Meine Lösung:

Prüfen Sie, ob in allen /etc/rc1.d ... /etc/rc5.d das mysql-Skript mit S (Ex S10mysql) und nicht mit K AS K10mysql beginnt.

Erläuterung: K Präfix lädt mit Stop, Art des Kill-Service; und S Präfix beginnt mit Startparameter.

execute in terminal:   
(command        script action  runlevel)
---------------------------------------
sudo update-rc.d mysql enable  2
sudo update-rc.d mysql enable  3
sudo update-rc.d mysql enable  4
sudo update-rc.d mysql enable  5

1

In meinem Fall war es ein Platzproblem. Überprüfen Sie, ob noch genügend Platz vorhanden ist.

von /var/log/mysql/error.logIch habe einige Hinweise aus zwei Zeilen:

2018-08-04T05:25:29.519139Z 0 [ERROR] InnoDB: Write to file ./ibtmp1failed at offset 3145728, 1048576 bytes should have been written, only 704512 were writt$
2018-08-04T05:25:29.519145Z 0 [ERROR] InnoDB: Error number 28 means 'No space left on device'

Ich konnte sehen, dass es sich um ein Raumproblem handelt.

root@xxx:/home/user1# df -h
Filesystem                            Size  Used Avail Use% Mounted on
udev                                  477M     0  477M   0% /dev
tmpfs                                 100M   11M   89M  11% /run
/dev/mapper/server1--osticket--vg-root  8.3G  7.9G     0 100% /
tmpfs                                 497M     0  497M   0% /dev/shm
tmpfs                                 5.0M     0  5.0M   0% /run/lock
tmpfs                                 497M     0  497M   0% /sys/fs/cgroup
/dev/vda1                             472M  467M     0 100% /boot
tmpfs                                 100M     0  100M   0% /run/user/1000

Von hier aus konnte ich feststellen, dass auf dem virtuellen Server nicht mehr genügend Speicherplatz vorhanden war /dev/mapper/server1--osticket--vg-root 8.3G 7.9G 0 100% /. Ich überlegte, ob ich das virtuelle Laufwerk migrieren oder vergrößern sollte, entschied mich jedoch dafür, zunächst nicht benötigte Dateien zu entfernen.

Also mussten Cache und nicht benötigte Dateien bereinigt werden:

#apt-get clean
#apt-get -f autoremove

Vergessen Sie anschließend nicht, die durch mysql beschädigten Protokolldateien zu entfernen. Sie würden erneut generiert, wenn Sie mysql neu starten

#service mysql stop
#cd /var/lib/mysql
#rm ib_logfile*
#service mysql start

Überprüfen Sie Ihren MySQL-Server-Dienst und es ist wahrscheinlich in Betrieb

root@server1-osticket:/var/lib/mysql# service mysql status
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-08-04 23:07:24 WAT; 7min ago
  Process: 1559 ExecStartPost=/usr/share/mysql/mysql-systemd-start post (code=exited, status=0/SUCCESS)
  Process: 1549 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 1558 (mysqld)
    Tasks: 29
   Memory: 280.3M
      CPU: 589ms
   CGroup: /system.slice/mysql.service
           └─1558 /usr/sbin/mysqld

Aug 04 23:07:19 server1-osticket systemd[1]: Starting MySQL Community Server...
Aug 04 23:07:24 server1-osticket systemd[1]: Started MySQL Community Server.
root@server1-osticket:/var/lib/mysql#

Fall abgeschlossen. Ich hoffe, es hilft.


0

Entfernen Sie die Datei /var/lib/mysql/.run-mysql_upgrade und es sollte starten

;)

"Mit großer Macht kommt große Verantwortung"


0

Ich hatte dieses Problem , wenn ich gesetzt max_allowed_packet = 0.5Min /etc/mysql/my.cnf.

Ich habe es gelöst, indem ich zu gewechselt max_allowed_packethabe 1M.


0

Der folgende Befehl behebt mein Problem und MySQL könnte danach gestartet werden. (In einigen Fällen kann dies zu nützlich sein.)

chown -R mysql: /var/lib/mysql
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.