Câu hỏi centos: Một daemon MySQL đã chạy với cùng một ổ cắm unix


Tôi có một lỗi lạ khi bắt đầu dịch vụ mysqld:

Another MySQL daemon already running with the same unix socket.

Tôi đã cố gắng để danh sách các dịch vụ đang chạy và ngăn chặn chúng nhưng cùng một lỗi xảy ra khi bắt đầu dịch vụ mysqld.

Tôi có thể thử để loại bỏ các mysqld và cài đặt lại nó, nhưng điều này sẽ loại bỏ cơ sở dữ liệu quá?


75
2017-12-05 17:59


gốc




Các câu trả lời:


Để ngăn sự cố xảy ra, bạn phải thực hiện tắt máy chủ một cách duyên dáng từ dòng lệnh thay vì tắt nguồn máy chủ.

# shutdown -h now

Điều này sẽ dừng các dịch vụ đang chạy trước khi tắt máy.

Dựa trên Centos, một phương pháp bổ sung để làm cho nó trở lại một lần nữa khi bạn chạy vào vấn đề này là để di chuyển mysql.sock:

# mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak

# service mysqld start

Khởi động lại dịch vụ tạo ra một mục mới gọi là mqsql.sock


225
2017-12-14 10:11



Cảm ơn, điều đó đã giải quyết được vấn đề của tôi. - David
Đề nghị thứ hai ở trên làm việc cho tôi. Phải xảy ra vì tôi đã không tắt máy chủ một cách duyên dáng. Làm một # reboot đã không giải quyết được vấn đề. Chưa bao giờ thử shutdown -h now - fred
"shutdown -h now" và khởi động không giải quyết nó cho tôi, nhưng tùy chọn "CentOS" hoạt động như một sự quyến rũ. - PJ Brunet
Thực hiện # mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak sau đó # shutdown -h now và nó sẽ trở nên tốt đẹp. - Michael Stramel
Di chuyển chiếc vớ làm việc hoàn hảo cho tôi nhờ. - Abu Nooh


TL; DR:

Chạy này như là người chủ và bạn sẽ được tất cả các thiết lập:

rm $(grep socket /etc/my.cnf | cut -d= -f2)  && service mysqld start

Phiên bản dài hơn:

Bạn có thể tìm thấy vị trí của tệp socket của MySQL bằng cách tự poking xung quanh /etc/my.confhoặc chỉ bằng cách sử dụng

grep socket /etc/my.cnf | cut -d= -f2

Nó có khả năng /var/lib/mysql/mysql.sock. Sau đó, (như gốc, tất nhiên, hoặc với sudo prepended) loại bỏ tập tin đó:

rm /var/lib/mysql/mysql.sock

Sau đó bắt đầu daemon MySQL:

service mysqld start

Đang xóa mysqld sẽ không giải quyết vấn đề gì cả. Vấn đề là CentOS & RedHat không dọn dẹp sock sau khi xảy ra sự cố, vì vậy bạn phải tự làm. Tránh tắt nguồn hệ thống của bạn (tất nhiên) cũng được khuyên, nhưng đôi khi bạn không thể tránh nó, vì vậy thủ tục này sẽ giải quyết được vấn đề.


18
2018-01-09 17:16



Các cut -d= -f2 bit có thể xuất hiện sai, vì bạn mong đợi một giá trị xuất hiện sau = dấu hiệu, nhưng =  Là giá trị được chuyển đến -d tùy chọn: nói cách khác, = được sử dụng làm dấu phân tách cho cut. - iconoclast
Nếu bạn đang sử dụng Ubuntu, hãy thử thay thế /etc/my.cnf với /etc/mysql/my.cnf. - iconoclast
Tôi khuyên bạn nên greping một cái gì đó cụ thể hơn sau đó bất kỳ dòng có chứa từ ổ cắm, ít nhất grep '^socket[[:space:]]=' /etc/my.cnfhoặc bạn có thể sẽ xóa nội dung bạn không có ý định. - Beli


Tôi đã tìm thấy giải pháp cho bất kỳ ai trong vấn đề này thay đổi thư mục ổ cắm thành một vị trí mới trong tệp my.cnf

socket=/var/lib/mysql/mysql2.sock

service mysqld start

hoặc nhanh như GeckoSEO đã trả lời

# mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak

# service mysqld start

4
2017-12-05 18:31



Tôi vừa xóa tập tin mysql.sock và sau đó khởi động lại dịch vụ. - Will Morgan


Giải pháp của tôi cho điều này là một trái qua mysql.sock trong thư mục / var / lib / mysql / từ một tắt cứng. Mysql nghĩ nó đã chạy khi nó không chạy.


3
2017-12-06 21:49



vâng bạn đúng Tôi đã tắt máy cho hệ thống rồi vấn đề này nảy sinh, vì vậy bạn có một giải pháp khi tôi khởi động máy chủ không hiển thị lỗi này - Mas


Chỉ cần mở một báo cáo lỗi với nhà cung cấp hệ điều hành của bạn yêu cầu họ đặt các socket trong / var / run để nó tự động bị loại bỏ khi khởi động lại. Đó là một lỗi để giữ ổ cắm này sau khi khởi động lại không sạch, / var / run là vị trí cho các loại tệp này.


2
2018-01-23 11:29





để làm sạch tệp .sock tự động, hãy đặt các dòng này trong tập tin /etc/init.d/mysqld ngay sau khi "bắt đầu" "khối mã

test -e /var/lib/mysql/mysql.sock
SOCKEXIST=$?

ps cax | grep mysqld_safe
NOPIDMYSQL=$?

echo NOPIDMYSQL $NOPIDMYSQL
echo SOCKEXIST $SOCKEXIST

if [ $NOPIDMYSQL -eq 1 ] && [ $SOCKEXIST -eq 0 ] ; then
    echo "NOT CLEAN"
    rm -f /var/lib/mysql/mysql.sock
    echo "FILE SOCK REMOVED"
else
    echo "CLEAN"
fi

nó làm việc cho tôi. Tôi phải làm điều này bởi vì tôi không có UPS và thường chúng tôi bị lỗi cung cấp điện.

Trân trọng.


1
2018-01-15 10:37



Ở trên là con đường để đi vì nó xảy ra ngoài tầm kiểm soát của chúng tôi mà điện bị mất và UPS chết sau một thời gian. Vì vậy, máy chủ phải phục hồi. Tôi có vấn đề này trên một cài đặt mysql 5.7 (centos 6) nhưng không phải trên một 5.1 (centos 5). Tôi không có thời gian để điều tra những gì là sai với người đầu tiên vì vậy tôi sẽ chỉ cải thiện câu trả lời này và sử dụng nó. test -e $ socketfile nếu [$? -eq 0]; sau đó - ciuly
có vẻ như tôi đã mất hơn 5 phút để chuẩn bị tinh dầu: đây là pastebin.com/DpiSGrmh - ciuly


Nó đôi khi có thể phát sinh khi dịch vụ MySQL không tắt đúng cách trong khi khởi động lại hệ điều hành. Các /var/lib/mysql/mysql.sock đã được trái. Điều này ngăn cản 'mysqld' khởi động.

Các bước này có thể giúp:

1: dịch vụ mysqld bắt đầu killall -9 mysqld_safe mysqld dịch vụ mysqld bắt đầu

2: rm /var/lib/mysql/mysql.sock    dịch vụ mysqld bắt đầu


1
2018-04-22 07:13