échec du démarrage du serveur mysql

28

J'utilise le serveur Ubuntu. Lorsque j'ai essayé de me connecter à mysql (qui était en cours d'exécution), j'ai eu l'erreur suivante

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

Mais le fichier mysqld.sock n'existe pas dans le /var/run/mysqlddossier. Lors de l'exécution de la ps aux | grep mysqlcommande, j'ai réalisé que le serveur mysql n'était pas en cours d'exécution.

J'ai ensuite essayé de redémarrer le serveur mysql en utilisant

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

Mais, le processus de démarrage a échoué dans les 3 cas. /var/log/mysql/mysql.loget les /var/log/mysql/mysql.errfichiers sont vides.

Mais /var/log/error.logaffiche les informations suivantes:

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
la source
voir si cela aide: serverfault.com/questions/104014/…
Rinzwind
1
Quelle est la sortie de ls /var/lib/mysql/ib_logfile*?
jobin
ls: impossible d'accéder à / var / lib / mysql / ib_logfile *: Aucun fichier ou répertoire de ce type
ananth
1
Votre répertoire / var / lib / mysql est-il accessible en écriture pour mysql?
Jos
1
Je suis un débutant Linux .. J'ai changé les autorisations de / var / lib / mysql en utilisant chmod 777 . Pouvez-vous me suggérer comment vérifier si ce n'est pas la bonne façon?
ananth

Réponses:

28

Ouvrez un terminal ( Ctrl+ Alt+ t) et procédez comme suit:

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

et commentez la ligne record_buffer=64Mdans /etc/mysql/my.cnf [1]

puis redémarrez msyql en utilisant:

sudo service mysql restart

(La source)

jobin
la source
1
J'ai exécuté les commandes que vous avez mentionnées ... En exécutant le redémarrage de mysql du service sudo, il a donné un arrêt de message: L'instance inconnue et l'invite du shell n'apparaissent pas (le redémarrage est toujours en cours depuis les 50 dernières minutes)
ananth
1
De plus, le journal des erreurs indique maintenant: -140425 15:09:11 InnoDB: le format de fichier pris en charge le plus élevé est Barracuda. 140425 15:09:12 InnoDB: attente du démarrage des threads d'arrière-plan 140425 15:09:13 InnoDB: 5.5.37 démarré; numéro de séquence du journal 940942258188 140425 15:09:13 [ERREUR] / usr / sbin / mysqld: variable inconnue 'record_buffer = 64M' 140425 15:09:13 [ERREUR] Abandon 140425 15:09:13 InnoDB: démarrage de l'arrêt ... 140425 15:09:14 InnoDB: arrêt terminé; journal numéro de séquence 940942258188 140425 15:09:14 [Remarque] / usr / sbin / mysqld: arrêt terminé
ananth
Non ... J'ai redémarré le service sudo mysql.
ananth
Pouvez-vous essayer de faire sudo service mysql start?
jobin
Dois-je tuer le processus de redémarrage mysql en cours d'exécution? Cela causera-t-il un problème ??
ananth
9

Cela a résolu mon problème:

mkdir /var/run/mysqld

touch /var/run/mysqld/mysqld.sock

chown -R mysql /var/run/mysqld

/etc/init.d/mysql restart

user520064
la source
1
après avoir appliqué ces étapes, ma base de données est supprimée. Maintenant, que vais-je faire ??
Amit Yadav
7

J'ai résolu le problème de la manière suivante:

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

Dans un autre contexte, je l'ai vu car le démon mysql n'a pas pu démarrer. Démarrez donc le démon avec la commande - mysqld startpuis essayez de démarrer le service.

Sudheesh.MS
la source
2

J'ai eu le même message d'erreur et le même vide dans les fichiers journaux. Dans mon fichier de configuration (my.cnf), j'avais spécifié que je voulais utiliser les tables myisam, en ajoutant cette ligne dans la section [mysqld]:

default-table-type = myisam

Après la mise à niveau de mysql, il semble que cela ne démarre pas. J'ai changé cela en:

default-storage-engine = myisam

et maintenant tout fonctionne bien.

Lars Olav Tveito
la source
1

L'augmentation de la RAM disponible en ajoutant un nouvel espace de swap peut également aider. Les étapes sont ici

Assurez-vous que vous créez / fichier d'échange de la taille inférieure à l'espace disponible indiqué par

df -h

Par exemple, pour moi, la sortie de df- h était:

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

J'ai donc créé en utilisant 2 G

sudo fallocate -l 2G /swapfile

Et puis lancez le service

sudo /etc/init.d/mysql restart

J'espère que cela t'aides. Bonne chance.

Vivek
la source
1

Ma solution:

Vérifiez si dans tous /etc/rc1.d ... /etc/rc5.d le script mysql commence par S (Ex S10mysql) et non K AS K10mysql.

Explication: K préfixe charge avec stop, sorte de service de mise à mort; et le préfixe S commence par le paramètre de démarrage.

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
la source
1

Dans mon cas, c'était un problème d'espace. Vérifiez s'il vous reste suffisamment d'espace.

à partir /var/log/mysql/error.logje suis arrivé quelques conseils de deux lignes:

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'

Je pouvais voir que c'était un problème d'espace.

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

À partir d'ici, je pouvais voir qu'il n'y avait pas assez d'espace sur le serveur virtuel /dev/mapper/server1--osticket--vg-root 8.3G 7.9G 0 100% /. Et j'ai pensé à migrer ou à augmenter le lecteur virtuel, mais j'ai d'abord décidé de supprimer les fichiers inutiles.

Il a donc fallu nettoyer le cache et les fichiers inutiles:

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

N'oubliez pas de supprimer ensuite les fichiers journaux corrompus de mysql. Ils seraient à nouveau générés lorsque vous redémarrerez mysql

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

Vérifiez votre service serveur mysql et il est probablement opérationnel

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#

Affaire classée. J'espère que ça aide.

sukupandachu
la source
0

Supprimez le fichier /var/lib/mysql/.run-mysql_upgrade et il devrait démarrer

;)

"Un grand pouvoir implique de grandes responsabilités"

Adrian Pule
la source
0

J'ai eu ce problème quand je mis max_allowed_packet = 0.5Men /etc/mysql/my.cnf.

Je l'ai résolu en changeant max_allowed_packeten 1M.

peau de rat
la source
0

La commande suivante résout mon problème et mysql peut démarrer après. (Cela peut être utile dans certains cas)

chown -R mysql: /var/lib/mysql
Yusef
la source