Uruchomienie serwera mysql nie powiodło się


28

Korzystam z serwera Ubuntu. Kiedy próbowałem zalogować się do mysql (który był uruchomiony), otrzymałem następujący błąd

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

Ale plik mysqld.sock nie istnieje w /var/run/mysqldfolderze. Po uruchomieniu ps aux | grep mysqlpolecenia zrozumiałem, że serwer mysql nie działa.

Następnie spróbowałem zrestartować serwer mysql przy użyciu

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

Ale proces uruchamiania nie powiódł się we wszystkich 3 przypadkach. /var/log/mysql/mysql.logi /var/log/mysql/mysql.errpliki są puste.

Ale /var/log/error.logpokazuje następujące informacje:

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
Jaka jest wydajność ls /var/lib/mysql/ib_logfile*?
jobin

ls: nie można uzyskać dostępu do / var / lib / mysql / ib_logfile *: Brak takiego pliku lub katalogu
ananth

1
Czy katalog / var / lib / mysql jest zapisywalny dla mysql?
Jos

1
Jestem początkującym Linuksem .. Zmieniłem uprawnienia / var / lib / mysql przy użyciu chmod 777 . Czy możesz mi zasugerować, jak sprawdzić, czy nie jest to właściwy sposób?
ananth

Odpowiedzi:


28

Otwórz terminal ( Ctrl+ Alt+ t) i wykonaj następujące czynności:

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

i skomentuj wiersz record_buffer=64Mw /etc/mysql/my.cnf [1]

a następnie uruchom ponownie msyql, używając:

sudo service mysql restart

(Źródło)


1
Uruchomiłem polecenia, o których wspomniałeś .. Po uruchomieniu restartu usługi sudo mysql dał komunikat zatrzymania: Nie pojawiła się nieznana instancja i monit powłoki (restart nadal działa od ostatnich 50 minut)
ananth

1
Ponadto teraz dziennik błędów mówi: -140425 15:09:11 InnoDB: najwyższy obsługiwany format pliku to Barracuda. 140425 15:09:12 InnoDB: Oczekiwanie na uruchomienie wątków w tle 140425 15:09:13 Uruchomiono InnoDB: 5.5.37; numer sekwencji logu 940942258188 140425 15:09:13 [BŁĄD] / usr / sbin / mysqld: nieznana zmienna 'record_buffer = 64M' 140425 15:09:13 [BŁĄD] Przerwanie 140425 15:09:13 InnoDB: Rozpoczęcie zamykania ... 140425 15:09:14 InnoDB: Zakończono zamykanie; numer sekwencji dziennika 940942258188 140425 15:09:14 [Uwaga] / usr / sbin / mysqld: Zakończono zamykanie
ananth

Nie .. Zrobiłem ponowne uruchomienie mysql usługi sudo.
ananth

Czy możesz spróbować sudo service mysql start?
jobin

Czy powinienem zabić uruchomiony ponownie proces mysql? Czy spowoduje to jakiś problem?
ananth

9

To rozwiązało mój problem:

mkdir /var/run/mysqld

touch /var/run/mysqld/mysqld.sock

chown -R mysql /var/run/mysqld

/etc/init.d/mysql restart


1
po zastosowaniu tych kroków moja baza danych zostanie usunięta. Co teraz zrobię?
Amit Yadav,

7

Rozwiązałem problem w następujący sposób:

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

W innym kontekście napotkałem to, ponieważ uruchomienie demona mysql nie powiodło się. Uruchom demona za pomocą polecenia - mysqld starta następnie spróbuj uruchomić usługę.


2

Miałem ten sam komunikat o błędzie i tę samą pustkę w plikach dziennika. W moim pliku konfiguracyjnym (my.cnf) podałem, że chcę używać tabel myisam, dodając ten wiersz w sekcji [mysqld]:

default-table-type = myisam

Po aktualizacji mysql wydaje się, że powoduje to, że mysql się nie uruchamia. Zmieniłem to na:

default-storage-engine = myisam

a teraz wszystko działa dobrze.


1

Pomocne może być również zwiększenie dostępnej pamięci RAM poprzez dodanie nowej przestrzeni wymiany. Kroki są tutaj

Upewnij się, że utworzyłeś / zamieniasz plik o rozmiarze mniejszym niż dostępne miejsce pokazane przez

df -h

Na przykład dla mnie wynikiem działania df-h było:

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

Więc stworzyłem używając 2 G.

sudo fallocate -l 2G /swapfile

A potem po prostu uruchom usługę

sudo /etc/init.d/mysql restart

Mam nadzieję że to pomoże. Wszystkiego najlepszego.


1

Moje rozwiązanie:

Sprawdź, czy we wszystkich /etc/rc1.d ... /etc/rc5.d skrypt mysql zaczyna się od S (Ex S10mysql), a nie K AS K10mysql.

Objaśnienie: K prefiks K ładuje się z zatrzymaniem, rodzaj usługi zabijania; a prefiks S zaczyna się od parametru początkowego.

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

W moim przypadku była to kwestia miejsca. Sprawdź, czy masz wystarczająco dużo miejsca.

od /var/log/mysql/error.logDostałem kilka wskazówek z dwóch linii:

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'

Widziałem, że to kwestia miejsca.

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

Stąd widziałem, że na serwerze wirtualnym nie ma wystarczającej ilości miejsca /dev/mapper/server1--osticket--vg-root 8.3G 7.9G 0 100% /. Pomyślałem o migracji lub powiększeniu dysku wirtualnego, ale postanowiłem najpierw usunąć niepotrzebne pliki.

Musiałem więc wyczyścić pamięć podręczną i pliki, które nie były potrzebne:

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

Następnie nie zapomnij usunąć uszkodzonych plików dziennika mysql. Zostaną wygenerowane ponownie po ponownym uruchomieniu mysql

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

Sprawdź swoją usługę serwera mysql i prawdopodobnie jest ona uruchomiona

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#

Sprawa zamknięta. Mam nadzieję, że to pomoże.


0

Usuń plik /var/lib/mysql/.run-mysql_upgrade i powinien się uruchomić

;)

"Z dużą mocą przychodzi duża odpowiedzialność"


0

Miałem ten problem kiedy ustawić max_allowed_packet = 0.5Mw /etc/mysql/my.cnf.

Rozwiązałem to, zmieniając max_allowed_packetna 1M.


0

Następujące polecenie rozwiązuje mój problem i mysql może się po nim uruchomić. (W niektórych przypadkach może być użyteczny)

chown -R mysql: /var/lib/mysql
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.