InnoDB: Lỗi: tệp nhật ký ./ib_logfile0 có kích thước khác nhau


106

Tôi vừa thêm các dòng sau vào /etc/mysql/my.cnf sau khi tôi chuyển đổi một cơ sở dữ liệu sang sử dụng công cụ InnoDB.

innodb_buffer_pool_size = 2560M
innodb_log_file_size    = 256M
innodb_log_buffer_size  = 8M
innodb_flush_log_at_trx_commit  = 2
innodb_thread_concurrency   = 16
innodb_flush_method = O_DIRECT

Nhưng nó nâng "ERROR 2013 (HY000) ở dòng 2: Mất kết nối với máy chủ MySQL trong khi truy vấn" lỗi khởi động lại mysqld. Và nhật ký lỗi mysql hiển thị như sau

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!
100118 20:52:52 [ERROR] Plugin 'InnoDB' init function returned error.
100118 20:52:52 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
100118 20:52:52 [ERROR] Unknown/unsupported table type: InnoDB
100118 20:52:52 [ERROR] Aborting

Vì vậy, tôi nhận xét ra dòng này

# innodb_log_file_size  = 256M

Và nó đã khởi động lại mysql thành công.

Tôi tự hỏi "5242880 byte tệp nhật ký" hiển thị trong lỗi mysql là gì? Đây là cơ sở dữ liệu đầu tiên trên công cụ InnoDB trên máy chủ này, vậy tệp nhật ký đó được tạo khi nào và ở đâu? Trong trường hợp này, làm cách nào tôi có thể kích hoạt lệnh innodb_log_file_size trong my.cnf?

BIÊN TẬP

Tôi đã cố gắng xóa / var / lib / mysql / ib_logfile0 và khởi động lại mysqld nhưng vẫn thất bại. Bây giờ nó hiển thị như sau trong nhật ký lỗi.

100118 21:27:11  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 256 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200
InnoDB: Error: log file ./ib_logfile1 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!

Giải pháp

Nó hoạt động ngay sau khi xóa cả ib_logfile0 và ib_logfile1 trong / var / lib / mysql

Câu trả lời:


121

InnoDB cực kỳ kén chọn về cấu hình của nó; nếu có gì đó không đúng, nó sẽ bỏ cuộc và về nhà. Để thay đổi kích thước tệp nhật ký mà không mất dữ liệu:

  1. Hoàn nguyên mọi thay đổi cấu hình bạn đã thực hiện với kích thước tệp nhật ký và khởi động lại MySQL.
  2. Trong MySQL đang chạy của bạn: SET GLOBAL innodb_fast_shutdown = 0;
  3. Dừng MySQL
  4. Thay đổi cấu hình thành kích thước tệp nhật ký.
  5. Xóa cả hai tệp nhật ký.
  6. Bắt đầu MySQL. Nó sẽ phàn nàn về việc thiếu các tệp nhật ký, nhưng nó sẽ tạo ra chúng và tất cả sẽ ổn.

1
Xin chào, cảm ơn câu trả lời của bạn, tôi đã thử phương pháp của bạn nhưng vẫn thất bại.
jack

44
Xóa cả ib_logfile0 và ib_logfile1 đã giải quyết vấn đề cho tôi.
Temnovit

1
Và cho tôi. Cảm ơn bạn rất nhiều, chúng tôi đã trở lại wiki của chúng tôi!
Stephen Kennedy

1
Vì tôi đang di chuyển một db mới được cài đặt, tôi bỏ qua bước 1-4 và bắt đầu với 5 - và nó hoạt động :)
Limbo Peng

Cảm ơn @Temnovit xóa 2 tập tin này cũng đã giúp tôi.
bashan
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.