Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MAMP PRO bị treo; MySQL sẽ không bắt đầu khi khởi động lại

LỜI NÓI ĐẦU: Điều này nghe có vẻ tệ, nhưng hãy nhớ đọc tất cả mọi thứ trong câu trả lời này trước khi hành động. Bạn không thể phá vỡ mọi thứ tồi tệ hơn bằng cách dành thời gian của mình. Đọc từng bước và hy vọng điều này sẽ đủ rõ ràng để bạn làm theo và thiết lập và chạy lại máy chủ cơ sở dữ liệu MySQL của bạn trong MAMP Pro.

Vì vậy, có vẻ như cơ sở dữ liệu InnoDB của bạn đã bị lỗi. Không phải chính ứng dụng. Chìa khóa nằm ở đây trong nhật ký:

140527 15:06:58 InnoDB: highest supported file format is Barracuda.
InnoDB: Log scan progressed past the checkpoint lsn 791075520
140527 15:06:58  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 791076717
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 8402.
InnoDB: You may have to recover from a backup.

Và có vẻ như bạn đang sử dụng MAMP PRO ở đây:

/Library/Application Support/appsolute/MAMP PRO/db/mysql

Vậy câu hỏi đặt ra là bạn có bản sao lưu cơ sở dữ liệu MAMP Pro không? Qua mysqldump hay cái gì khác? Bạn có cơ sở dữ liệu InnoDB nào khác trong cài đặt MAMP của mình không?

Ngoài ra, bạn nói rằng bạn có thể chạy mysqldump , nhưng thực sự không thể xảy ra sự cố cơ sở dữ liệu. Vì vậy, tôi giả sử khi bạn chạy mysqldump đó là một cài đặt khác, riêng biệt của MySQL trên hệ thống của bạn. Các tệp nhị phân MySQL như mysqldump trong MAMP hoặc MAMP Pro không giống với mysqldump trên toàn hệ thống . Chúng là hai cài đặt khác nhau 100%. Bạn có thể kiểm tra mysqldump nào đang được sử dụng bằng cách gõ vào lệnh này:

which mysqldump

Để xem đường dẫn đầy đủ về những gì bạn tin rằng bạn đang sử dụng. Cài đặt MAMP của mysqldump —Và các tệp nhị phân có liên quan khác — nằm ở đây:

/Applications/MAMP/Library/bin/

Và để chạy nó trực tiếp mà không cần sửa đổi $PATH của bạn value (một thứ hoàn toàn khác) là chạy nó như thế này:

/Applications/MAMP/Library/bin/mysqldump

VUI LÒNG ĐỌC KỸ: Xin lưu ý rằng lời khuyên tôi dành cho bạn dưới đây là tôi trình bày mọi cách mà tôi có thể đối phó với một tình huống như thế này. Nếu cơ sở dữ liệu InnoDB không quan trọng, chỉ cần thực hiện gợi ý đầu tiên của tôi về việc chuyển các tệp DB cụ thể của InnoDB vào thùng rác. Nếu bạn có mysqldump sao lưu, làm điều tương tự nhưng khôi phục mysqldump sao lưu.

Ngoài ra, InnoDB không một công cụ lưu trữ mặc định. Bạn phải cố gắng hết sức để thiết lập điều đó. Mặc định là MyISAM. Bất kỳ DB mới nào được tạo trong MySQL sẽ là MyISAM. Vì vậy, điều này sẽ giúp bạn. Bạn cần phải suy nghĩ của mình để tìm ra cơ sở dữ liệu nào có công cụ lưu trữ InnoDB. Nếu bạn nói rằng bạn có 25 nhưng chỉ có 1 có InnoDB, giải pháp dễ dàng. Nhưng nếu bạn có 25 cơ sở dữ liệu, bạn nên có thói quen tạo mysqldump thường xuyên các bản sao lưu. Nếu bạn có bản sao lưu, đây sẽ là một vấn đề đau đầu nhưng là một việc cần giải quyết ngay lập tức.

MỘT LỰA CHỌN:Xóa nội dung InnoDB bị hỏng và khôi phục từ mysqldump sao lưu.

Điều đầu tiên tôi sẽ làm nếu tôi là bạn là sao lưu mysql thư mục trong /Library/Application Support/appsolute/MAMP PRO/db/ vì vậy, ít nhất bạn có thể có một bản sao lưu các tệp bị hỏng đề phòng.

Sau đó, tôi sẽ xóa các tệp sau:

/Library/Application Support/appsolute/MAMP PRO/db/mysql/ib_logfile0
/Library/Application Support/appsolute/MAMP PRO/db/mysql/ib_logfile1
/Library/Application Support/appsolute/MAMP PRO/db/mysql/ibdata1

Đó là các tệp cụ thể của InnoDB. Xóa chúng và sau đó cố gắng khởi động lại MAMP. Nó sẽ xuất hiện. Nhưng bất kỳ cơ sở dữ liệu InnoDB nào trong MAMP sẽ ở trạng thái “thây ma”. Bạn nên xóa các cơ sở dữ liệu đó và tạo lại từ bản sao lưu. Hoặc từ đầu nếu bạn có thể.

LỰA CHỌN KHÁC:Cố gắng khởi động và chạy lại máy chủ MySQL với innodb_force_recovery .

Bây giờ, nếu bạn cần khôi phục DB đó, bạn có thể chạy thử thiết lập innodb_force_recovery như được mô tả ở đây.

Đối với MAMP Pro, có vẻ như bạn có thể chỉnh sửa tệp cấu hình MySQL của mình theo các hướng dẫn sau:

  1. Khởi động MAMP Pro.
  2. Dừng máy chủ MAMP Pro nếu nó đang chạy.
  3. Chọn Tệp -> Chỉnh sửa Mẫu -> MySQL my.cnf
  4. Cửa sổ trình chỉnh sửa xuất hiện.
  5. Nếu một thông báo cảnh báo xuất hiện, hãy xác nhận với OK.
  6. Tìm phần "[mysqld]"
  7. Bên dưới dòng cuối cùng của phần này, hãy thêm dòng này:innodb_force_recovery = 1

như tài liệu MySQL giải thích , đây hoàn toàn là để thiết lập và chạy cơ sở dữ liệu để bạn có thể sao lưu qua mysqldump :

Bây giờ có khoảng 6 giá trị khác nhau cho innodb_force_recovery nhưng bạn thực sự chỉ nên thử với 1 cho bây giờ. Nếu bạn muốn thử từng cách trong số 6, đây là bảng phân tích:

Nếu bạn tình cờ thiết lập và chạy cơ sở dữ liệu và sau đó có thể thực hiện mysqldump thì xin chúc mừng! Bạn đang rõ ràng! Các bước tiếp theo tốt nhất là

  1. Dừng máy chủ cơ sở dữ liệu MySQL
  2. Xóa innodb_force_recovery từ cấu hình MySQL để máy chủ cơ sở dữ liệu có thể hoạt động bình thường.
  3. Khởi động lại máy chủ cơ sở dữ liệu MySQL.
  4. Xóa cơ sở dữ liệu MySQL bị hỏng khỏi máy chủ (Đừng xóa tệp kết xuất! Đó là bản sao lưu của bạn!)
  5. Tạo cơ sở dữ liệu mới mà bạn muốn khôi phục.
  6. Nhập mysqldump sao lưu vào cơ sở dữ liệu mới.

Và bạn sẽ được thực hiện.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL xóa tất cả các hàng có id lớn hơn số đã cho

  2. Truy vấn KHÔNG TRONG MySQL không hoạt động

  3. Đối chiếu phân biệt chữ hoa chữ thường trong MySQL

  4. truy vấn sql:làm thế nào để làm cho các thẻ không có con trở thành cha mẹ?

  5. Cách phân cụm các bộ cân bằng tải ProxySQL của bạn