Có khả năng khởi động lại máy chủ MySQL từ xa trên Ubuntu từ chương trình hoặc tập lệnh trên máy Mac không? [đóng cửa]


2

Tôi có một khách hàng có máy chủ web được lưu trữ với Digital Ocean và họ gặp sự cố cơ sở dữ liệu MySQL ngẫu nhiên kỳ lạ ...

1-4 lần một tháng có máy chủ cơ sở dữ liệu gặp sự cố và phải được khởi động lại bằng tay.

Tôi chưa thể tìm ra nguyên nhân của sự cố ngẫu nhiên này vì vậy tôi hiện phải thực hiện quy trình này mỗi khi nó xảy ra:

  1. Mở một cửa sổ nhắc lệnh thiết bị đầu cuối
  2. gõ và chạy: ssh root@IP-HERE -l root
  3. gõ mật khẩu người dùng máy chủ: server-user-password v
  4. gõ và chạy lệnh: service mysql restart

Điều này khởi động lại máy chủ MySQL và tất cả sẽ tuyệt vời trở lại cho đến một hoặc 3 tuần sau khi nó ngẫu nhiên xảy ra lần nữa và sau đó lặp lại quá trình.


Vì khách hàng của tôi không có kinh nghiệm quản trị máy chủ và thậm chí không biết cửa sổ lệnh / thiết bị đầu cuối là gì hoặc trông như thế nào ... Tôi cần đưa ra một số giải pháp cho phép mọi người, kể cả khỉ có thể sao chép quy trình nêu trên khi tôi không có sẵn!

Một số thông tin:

  • Nhà phát triển / Quản trị viên (tôi) : chạy PC Windows 7
  • Máy khách : đang chạy Mac OS X (hệ điều hành mới nhất có)
  • Máy chủ : đang chạy Ubuntu 12.0.4

Với thông tin đó, liệu có thể xây dựng một tập lệnh giải pháp 1 lần nhấp nào đó mà khách hàng có thể nhấp và khởi chạy tập lệnh / chương trình từ máy Mac của mình để tự động chạy quy trình ở trên để khởi động lại máy chủ MySQL của mình khi sự cố khẩn cấp này xuất hiện cho anh và tôi không ở bên để giúp đỡ?


Bạn có máy chủ web nào trên máy chủ không, ví dụ như apache?
ALex_hha 30/03/2016

6
Hãy nhờ ai đó giải quyết vấn đề thực sự.
dùng619714

Db dường như cần sửa chữa. Thậm chí có thể hệ điều hành bị hỏng, đôi khi xảy ra, ví dụ như xảy ra lỗi ổ cứng. Kết xuất DB, thiết lập một máy ảo mới, làm lại cơ sở dữ liệu và xem.
ansi_lum 30/03/2016

Ngoài ra, hãy thử cài đặt lại sqlserver với tùy chọn --reinstall. Sao lưu / etc và / var / lib / mysql dirs trước và thậm chí bạn có thể lọc và cài đặt lại.
ansi_lum 30/03/2016

Câu trả lời:


4

Bạn đã bao giờ nghĩ về việc theo dõi Máy chủ MYSQL chưa?

Có thể Nagios là quá lớn nhưng những gì với một kịch bản và một cron hoặc monit cũng rất nhẹ.

Monit cung cấp một webfrontend cơ bản rất dễ dàng, nơi bạn cũng có thể khởi động lại các dịch vụ.


2

Tôi nghĩ rằng cách dễ nhất sẽ được sử dụng monit . Đây là một tiện ích nhẹ để theo dõi và quản lý trình nền hoặc các chương trình tương tự.

Cài đặt monit

# aptitude install monit

Tạo tập tin conf cho mysql

# cat /etc/monit/conf.d/mysql
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
group database
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
if failed host 127.0.0.1 port 3306 then restart
if 5 restarts within 5 cycles then timeout

Khởi động lại monit

# service monit restart

Kiểm tra trạng thái mysql

# netstat -an | grep 3306
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN

# service mysql status
mysql start/running, process 33446

Dừng máy chủ mysql (chỉ để giả lập một số vấn đề)

# service mysql stop

Kiểm tra tệp nhật ký monit

[EEST Mar 30 12:34:10] info     : 'ubuntu14' Monit started
[EEST Mar 30 12:36:10] error    : 'mysqld' process is not running
[EEST Mar 30 12:36:10] info     : 'mysqld' trying to restart
[EEST Mar 30 12:36:10] info     : 'mysqld' start: /etc/init.d/mysql
[EEST Mar 30 12:38:12] info     : 'mysqld' process is running with pid 34085

Trong vài phút, nó khởi động lại máy chủ mysql

Nhưng đó chỉ là một cách giải quyết, vì @lain đã đề cập bạn nên tìm ra gốc rễ của vấn đề.


1

Lúc đầu, bạn có (để tạo nếu không tồn tại và) để chuyển các khóa ssh của bạn đến máy chủ (để đạt được đăng nhập không cần mật khẩu):

ssh-copy-id root@IP-HERE

Đăng nhập vào máy chủ và thiết lập một tập lệnh như:

#!/bin/bash
service mysql restart
exit 0

Làm cho nó thực thi:

chmod +x script.sh

Trên máy khách của bạn, bạn muốn gọi tập lệnh thông qua ssh. Đơn giản hóa việc thực hiện lệnh ssh sau (Sử dụng Thú mỏ vịt hoặc Máy tự động của Apple, v.v. làm trình bao bọc):

ssh root@IP-HERE -l root script.sh

Bây giờ bạn có thể chuyển một máy chủ có thể nhấp - khôi phục lại cho khách hàng của bạn.

BTW: Bạn nên giải quyết vấn đề, không xây dựng một cách giải quyết khởi động lại nhảm nhí. Tôi đảm bảo với bạn, sẽ có nhiều đau đầu hơn khi sử dụng cách khắc phục khởi động lại này hơn là khắc phục vấn đề. Giống như peabody đã nói, bạn nên nhìn vào munin hoặc monit để phát hiện vấn đề tiềm ẩn.


1

Quên về việc khởi động lại thủ công, nó quá chậm và cần bạn hoặc khách hàng (đôi khi bạn muốn đi nghỉ, phải không?). Chỉ cần thiết lập một số giám sát và làm điều đó tự động. ZabbixNagiostốt cho giám sát tổng thể, nhưng có thể quá lớn cho một máy chủ. Bạn có thể thiết lập monitđể kiểm tra mysql của bạn và thực hiện khởi động lại cho bạn tự động và gần ngay lập tức.

Nhưng bạn đang sửa chữa triệu chứng, không gây ra, đó là xấu. Bạn phải tìm ra lý do thực sự tại sao mysql bị sập (cho phép ghi nhật ký chi tiết hơn, theo dõi các số liệu khác của máy chủ) và khắc phục nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.