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
ananth
quelle
Überprüfen
Rinzwind
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)

Job in
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

user520064
quelle
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.

Sudheesh.MS
quelle
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.

Lars Olav Tveito
quelle
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.

Vivek
quelle
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
Sergio Abreu
quelle
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.

sukupandachu
quelle
0

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

;)

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

Adrian Pule
quelle
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.

Rattenfell
quelle
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
Yusef
quelle