nachdem ich meinen Server neu gestartet habe, kann ich MySQL nicht starten:
$ sudo service mysql start
$ Starting MySQL. ERROR! Manager of pid-file quit without updating file.
„/var/log/mysqld.log“ zeigt:
150225 21:39:49 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 150225 21:39:49 [Note] Plugin 'FEDERATED' is disabled. /usr/local/mysql/bin/mysqld: Table 'mysql.plugin' doesn't exist 150225 21:39:49 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 150225 21:39:49 InnoDB: Initializing buffer pool, size = 8.0M 150225 21:39:49 InnoDB: Completed initialization of buffer pool InnoDB: Log scan progressed past the checkpoint lsn 0 37356 150225 21:39:49 InnoDB: Database was not shut down normally! InnoDB: Starting crash recovery. InnoDB: Reading tablespace information from the .ibd files... InnoDB: Restoring possible half-written data pages from the doublewrite InnoDB: buffer... InnoDB: Doing recovery: scanned up to log sequence number 0 44233 150225 21:39:49 InnoDB: Starting an apply batch of log records to the database... InnoDB: Progress in percents: 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 InnoDB: Apply batch completed 150225 21:39:49 InnoDB: Started; log sequence number 0 44233 150225 21:39:49 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist 150225 21:39:49 mysqld_safe mysqld from pid file /var/lib/mysql/iZ23aa67ovhZ.pid ended
und meine Festplatte ist nicht voll.
hier ist der Status von /var/lib/mysql:
drwxrwxrwx 2 mysql root 4096 Feb 26 16:43 . drwxr-xr-x. 21 root root 4096 Feb 25 19:38 .. -rw-rw---- 1 mysql mysql 10485760 Feb 25 19:38 ibdata1 -rw-rw---- 1 mysql mysql 5242880 Feb 26 16:43 ib_logfile0 -rw-rw---- 1 mysql mysql 5242880 Feb 25 19:38 ib_logfile1
und hier ist /etc/my.cnf:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
und es gibt kein mysql_install_db auf dem Server:
bash: mysql_install_db: command not found
und wenn ich mysql_safe ausführe, wird Folgendes angezeigt:
150226 16:58:50 mysqld_safe Logging to '/var/log/mysqld.log'. 150226 16:58:50 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 150226 16:58:50 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
vielen Dank!
Antwort1
150225 21:39:49 [FEHLER] Schwerwiegender Fehler: Berechtigungstabellen können nicht geöffnet und gesperrt werden: Tabelle „mysql.host“ existiert nicht
Um dieses Problem zu beheben, müssen Sie MySQL lediglich mitteilen, wo es suchen soll, ohne dass die Standardinstallation verschoben wird. Sie können das mit folgendem Befehl tun:
mysql_install_db –user=mysql –ldata=/newlocation
Sobald Sie das getan haben, können Sie MySQL neu starten
/etc/init.d/mysqld restart
Wenn das nicht hilft:
- Deinstalliert mysql mit
yum remove mysql*
- Rekursiv gelöscht
/usr/bin/mysql
und/var/lib/mysql
- Habe auch die Datei gelöscht
/etc/my.cnf.rmp
- Wird verwendet
ps -e
, um die Prozesse zu überprüfen und sicherzustellen, dass MySQL nicht mehr ausgeführt wird. - Server neugestartet mit
reboot
- Ran
yum install mysql-server
. Dies scheint auch den MySQL-Client als Abhängigkeit zu installieren. - gab mysql Eigentums- und Gruppenrechte mit
chown -R mysql /var/lib/mysql
undchgrp -R mysql /var/lib/mysql
service mysqld start
Wird zum Starten des MySQL-Daemons verwendet .
150225 21:39:49 InnoDB: Datenbank wurde nicht normal heruntergefahren! InnoDB: Absturzwiederherstellung wird gestartet. InnoDB: Lese Tablespace-Informationen aus den .ibd-Dateien... InnoDB: Wiederherstellen möglicher halbgeschriebener Datenseiten aus dem Doublewrite InnoDB: Puffer...
Dies ist die normale Ausgabe nach einem Absturz. InnoDB ist so konzipiert, dass es in diesen Fällen automatisch wiederhergestellt wird, dies kann jedoch einige Zeit in Anspruch nehmen. Normalerweise dauert es Minuten, aber möglicherweise auch Stunden, wenn der Absturz auftrat, als Sie Tausende von Seiten geänderter Daten im Speicher hatten und Ihre Festplatten langsam sind.
InnoDB kann sich in den meisten Fällen selbst wiederherstellen, ohne dass Daten verloren gehen.
Um die Wiederherstellung zu starten, müssen Sie zunächst die Direktive 'innodb_force_recovery' in /etc/my.cnf verwenden. Wenn Sie damit nicht vertraut sind, lesen Sie bitte die folgende Dokumentation:http://dev.mysql.com/doc/refman/5.0/en/forcing-innodb-recovery.html. Wenn Sie vertraut sind, fahren Sie bitte fort.
Manchmal ist InnoDB nur mäßig beschädigt und kann sich selbst reparieren. Fügen Sie „innodb_force_recovery = #“ in einer neuen Zeile unter dem Abschnitt [mysqld] von /etc/my.cnf hinzu. Stellen Sie sicher, dass Sie das # durch das Ausmaß der Wiederherstellung ersetzen, das Sie benötigen.Beim Versuch, etwas mit einer Größenordnung über 4 zu verwenden, besteht ein extremes Risiko weiterer Beschädigungen, was bedeutet, dass Ihre Zeit und Mühe umsonst gewesen wären.Da wir in diesem Fall eine Selbstreparatur versuchen, verwenden Sie nur 1 oder 2. Nachdem Sie die neue Zeile hinzugefügt haben, starten Sie den MySQL-Server neu und überprüfen Sie die Protokolle (/var/lib/mysql/server.hostname.com.err), um festzustellen, ob die Instanz sich erfolgreich selbst repariert hat.