MySQL 서버 시작 실패


28

우분투 서버를 실행 중입니다. 실행중인 mysql에 로그인하려고 할 때 다음 오류가 발생했습니다.

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

그러나 mysqld.sock 파일은 /var/run/mysqld폴더 안에 존재하지 않습니다 . ps aux | grep mysql명령을 실행할 때 mysql 서버가 실행되고 있지 않다는 것을 알았습니다.

그런 다음 사용하여 mysql 서버를 다시 시작하려고했습니다.

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

그러나 세 가지 경우 모두 시작 프로세스가 실패했습니다. /var/log/mysql/mysql.log그리고 /var/log/mysql/mysql.err파일은 비어 있습니다.

그러나 /var/log/error.log다음 정보를 보여줍니다.

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

도움이되는지 확인하십시오 : serverfault.com/questions/104014/…
Rinzwind

1
출력은 ls /var/lib/mysql/ib_logfile*무엇입니까?
jobin

ls : / var / lib / mysql / ib_logfile에 액세스 할 수 없음 * : 해당 파일이나 디렉토리가 없음
ananth

1
/ var / lib / mysql 디렉토리는 mysql에 쓸 수 있습니까?
Jos

1
나는 리눅스 초보자 입니다. chmod 777을 사용하여 / var / lib / mysql의 권한을 변경했습니다 . 이것이 올바른 방법이 아닌지 확인하는 방법을 알려주시겠습니까?
ananth

답변:


28

터미널 ( Ctrl+ Alt+ t)을 열고 다음을 수행하십시오.

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

[1] 의 줄 record_buffer=64M을 주석으로 처리하십시오 /etc/mysql/my.cnf .

다음을 사용하여 msyql을 다시 시작하십시오.

sudo service mysql restart

(출처)


1
sudo service mysql restart를 실행하면 알 수없는 인스턴스와 셸 프롬프트가 나타나지 않습니다 (다시 시작은 지난 50 분 동안 계속 실행 됨)
ananth

1
또한 오류 로그에 다음과 같이 표시됩니다. -140425 15:09:11 InnoDB : 가장 많이 지원되는 파일 형식은 Barracuda입니다. 140425 15:09:12 InnoDB : 백그라운드 스레드가 시작되기를 기다리는 중 140425 15:09:13 InnoDB : 5.5.37이 시작되었습니다. 로그 시퀀스 번호 940942258188 140425 15:09:13 [오류] / usr / sbin / mysqld : 알 수없는 변수 'record_buffer = 64M'140425 15:09:13 [오류] 중단 140425 15:09:13 InnoDB : 종료 시작 중 ... 140425 15:09:14 InnoDB : 종료가 완료되었습니다. 로그 시퀀스 번호 940942258188 140425 15:09:14 [참고] / usr / sbin / mysqld : 종료 완료
ananth

아니오. mysql 재시작 sudo 서비스를 수행했습니다.
ananth

당신은 할 수 있습니까 sudo service mysql start?
jobin

실행중인 mysql restart 프로세스를 종료해야합니까? 문제가 생길까요?
ananth

9

이것은 내 문제를 해결했다.

mkdir /var/run/mysqld

touch /var/run/mysqld/mysqld.sock

chown -R mysql /var/run/mysqld

/etc/init.d/mysql restart


1
이 단계를 적용하면 데이터베이스가 삭제됩니다. 이제 어떻게해야합니까?
Amit Yadav

7

다음과 같은 방법으로 문제를 해결했습니다.

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

다른 상황에서는 mysql 데몬 이 시작되지 않아서 직면했습니다 . 따라서 명령으로 데몬 mysqld start을 시작한 다음 서비스를 시작하십시오.


2

로그 파일에 동일한 오류 메시지와 동일한 빈 공간이 있습니다. 내 설정 파일 (my.cnf)에서 [mysqld] 섹션에 다음 줄을 추가하여 myisam 테이블을 사용하도록 지정했습니다.

default-table-type = myisam

mysql을 업그레이드 한 후 mysql이 시작되지 않는 것 같습니다. 나는 이것을 다음으로 변경했다.

default-storage-engine = myisam

이제 모든 것이 잘 작동합니다.


1

새로운 스왑 공간을 추가하여 사용 가능한 RAM을 늘리면 도움이 될 수 있습니다. 단계는 여기

사용 가능한 공간보다 작은 크기의 / swap 파일을 작성해야합니다.

df -h

예를 들어 df- h의 출력은 다음과 같습니다.

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

그래서 나는 2G를 사용하여 만들었습니다.

sudo fallocate -l 2G /swapfile

그런 다음 서비스를 시작하십시오.

sudo /etc/init.d/mysql restart

이것이 도움이되기를 바랍니다. 모두 제일 좋다.


1

내 해결책 :

모든 /etc/rc1.d ... /etc/rc5.d에서 mysql 스크립트가 K AS K10mysql이 아닌 S (Ex S10mysql)로 시작하는지 확인하십시오.

설명 : K 접두어가 중지, 일종의 종료 서비스로로드됩니다. S 접두사는 시작 매개 변수로 시작합니다.

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

제 경우에는 공간 문제였습니다. 남은 공간이 충분한 지 확인하십시오.

에서 /var/log/mysql/error.log나는 두 줄에서 몇 가지 힌트를 얻었다 :

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'

공간 문제라는 것을 알 수있었습니다.

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

여기에서 가상 서버에 충분한 공간이 남아 있지 않다는 것을 알 수있었습니다 /dev/mapper/server1--osticket--vg-root 8.3G 7.9G 0 100% /. 그리고 가상 드라이브를 마이그레이션하거나 늘리는 것을 생각했지만 불필요한 파일을 먼저 제거하기로 결정했습니다.

따라서 필요하지 않은 캐시와 파일을 정리해야했습니다.

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

그런 다음 나중에 mysql 손상된 로그 파일을 제거하는 것을 잊지 마십시오. mysql을 다시 시작하면 다시 생성됩니다.

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

mysql 서버 서비스를 확인하십시오. 아마도 제대로 작동하고 있습니다.

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#

경우 폐쇄. 도움이 되길 바랍니다.


0

/var/lib/mysql/.run-mysql_upgrade 파일을 제거하면 시작됩니다

;)

"큰 힘에는 큰 책임이 따른다"


0

에 설정할 때이 문제가 발생 max_allowed_packet = 0.5M했습니다 /etc/mysql/my.cnf.

로 변경 max_allowed_packet하여 해결했습니다 1M.


0

다음 명령은 내 문제를 해결하고 mysql은 그 후에 시작할 수 있습니다. (어떤 경우에는 유용 ​​할 수 있습니다)

chown -R mysql: /var/lib/mysql
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.