Mysql Innodb: InnoDB: ERROR: tuổi của điểm kiểm tra cuối cùng là InnoDB: vượt quá khả năng của nhóm nhật ký


25

Tôi thực sự cần một số chuyên gia mysql. Tôi là người mới sử dụng mysql và tôi đang thấy một số sự cố máy chủ của db của tôi trong 1 tuần qua.

Tôi đang sử dụng mysql 5.1.36 trên Ubuntu. Đây là một máy chủ mysql chuyên dụng với lõi kép, bộ nhớ 4GB và SSD 40 GB.

Các lỗi đăng nhập là:

120413 23:57:15 [Note] Plugin 'FEDERATED' is disabled.
120413 23:57:15 [Warning] option 'innodb-autoextend-increment': unsigned value 2000 adjusted to 1000
120413 23:57:15  InnoDB: Initializing buffer pool, size = 2.9G
120413 23:57:15  InnoDB: Completed initialization of buffer pool
120413 23:57:16  InnoDB: Started; log sequence number 0 44234
120413 23:57:16 [Note] Event Scheduler: Loaded 0 events
120413 23:57:16 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.1.58-1ubuntu1-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)
120414  0:00:25 [Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=e2-relay-bin' to avoid this problem.
120414  0:00:25 [Note] 'CHANGE MASTER TO executed'. Previous state master_host='', master_port='3306', master_log_file='', master_log_pos='4'. New state master_host='', master_port='3306', master_log_file='mysql-bin.000043', master_log_pos='87039427'.
120414  0:58:37 [Note] 'CHANGE MASTER TO executed'. Previous state master_host='', master_port='3306', master_log_file='mysql-bin.000043', master_log_pos='87039427'. New state master_host='', master_port='3306', master_log_file='mysql-bin.000043', master_log_pos='87846901'.
120414  2:20:34  InnoDB: ERROR: the age of the last checkpoint is 241588252,
InnoDB: which exceeds the log group capacity 241588224.
InnoDB: If you are using big BLOB or TEXT rows, you must set the   
InnoDB: combined size of log files at least 10 times bigger than the
InnoDB: largest such row.

My.cnf là như dưới đây.

default-storage-engine=innodb
default-table-type=innodb
key_buffer              = 384M
max_allowed_packet      = 64M
thread_stack            = 256K
thread_cache_size       = 16
max_heap_table_size     = 64M
myisam_sort_buffer_size = 64M
join_buffer_size        = 8M
read_buffer_size        = 2M
read_rnd_buffer_size    = 8M
sort_buffer_size        = 3M
tmp_table_size          = 64M
# Innodb changes
innodb_additional_mem_pool_size = 16M
innodb_autoextend_increment     = 2000
innodb_buffer_pool_size         = 3000M #As current Db is around 1.2G.
innodb_file_per_table
innodb_data_file_path           = ibdata1:512M;ibdata2:512M:autoextend
innodb_flush_log_at_trx_commit  = 2 #For more reliablity use 1
innodb_flush_method             = O_DIRECT
innodb_log_buffer_size          = 8M
innodb_log_file_size            = 128M #Transaction Log up to 1/4 Buffer Pool
innodb_thread_concurrency       = 16
#innodb_force_recovery          = 2
#innodb_read_io_threads         = 8
#innodb_write_io_threads                = 8
innodb_lock_wait_timeout        = 50
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover         = BACKUP
max_connections        = 400
table_cache            = 1024M
thread_concurrency     = 16

Bất kỳ đề xuất những gì tôi có thể thay đổi.


Xin lỗi ... vài dòng đầu tiên đã bị xóa.
TheVyom

Làm cho mình một ưu tiên và sử dụng một phiên bản mới hơn của MySQL, nếu bạn có thể. 5.1,38 là cổ xưa. Ít nhất là nâng cấp lên bản phát hành 5.1 mới hơn, nếu không phải là 5.5 nếu bạn có thể.
Aaron Brown

Câu trả lời:


26

Thoạt nhìn, tôi sẽ nói rằng innodb_log_file_size của bạn quá nhỏ. Nó nên lớn hơn để làm hai điều:

  • Chứa bất kỳ trường BLOB hoặc văn bản lớn
  • Tổ chức các giao dịch lớn hơn

Đây là những gì bạn nên làm bây giờ để xem nếu nó giúp:

BƯỚC 01) Thay đổi các mục sau trong /etc/my.cnf

[mysqld]
innodb_log_buffer_size          = 32M
innodb_buffer_pool_size         = 3G
innodb_log_file_size            = 768M

BƯỚC 02) service mysql stop

BƯỚC 03) rm -f /var/lib/mysql/ib_logfile*

BƯỚC 04) service mysql start

Điều này sẽ xây dựng lại các tập tin sau

  • / var / lib / mysql / ib_logfile0
  • / var / lib / mysql / ib_logfile1

Hãy thử một lần !!!

CẬP NHẬT 2013/07/03 12:37 EDT

Tôi đã cập nhật các bài viết khác của tôi về điều này và bỏ lỡ bài viết này

ButussyButkus chỉ nhận xét tại2013-07-03 07:18:56 EDT

Không nên sao chép ib_logfile * sang một vị trí khác để sao lưu trước khi xóa chúng?

Vì có thể có dữ liệu giao dịch chưa hoàn thành bên trong, đây là những gì nên làm

BƯỚC 01) Thay đổi các mục sau trong /etc/my.cnf

[mysqld]
innodb_log_buffer_size          = 32M
innodb_buffer_pool_size         = 3G
innodb_log_file_size            = 768M

BƯỚC 02) mysql -uroot -p -e "SET GLOBAL innodb_fast_shutdown = 0;"

BƯỚC 03) service mysql stop

BƯỚC 04) rm -f /var/lib/mysql/ib_logfile*

BƯỚC 05) service mysql start

Tôi nói thêm SET GLOBAL innodb_fast_shutdown = 0;. Cái đó làm cái gì? Nó buộc InnoDB thanh lọc hoàn toàn các thay đổi giao dịch khỏi tất cả các bộ phận chuyển động của InnoDB, bao gồm nhật ký giao dịch (ib_logfile0, ib_logfile1). Do đó, không cần sao lưu ib_logfile0, ib_logfile1 cũ. Nếu xóa chúng làm bạn lo lắng, hãy thực hiện Bước 04

mv /var/lib/mysql/ib_logfile* ..

để đưa các bản ghi cũ vào /var/lib. Nếu việc giải trí các bản ghi thành công và mysqld khởi động, thì bạn có thể xóa các bản ghi cũ.

Tôi đã sử dụng tính năng này trong một năm nay. Tôi đã cập nhật các bài viết khác của mình để phản ánh điều này ...

Nếu có những bài viết cũ hơn của tôi mà tôi không đề cập đến innodb_fast_shutdown , hãy cho tôi biết để tôi có thể cập nhật nó. Cảm ơn một lần nữa, ButussyButkus .


Tăng tệp nhật ký lên 256M và giảm bộ đệm_pool_size xuống 2G dường như là một mẹo nhỏ.
TheVyom

Câu trả lời của tôi có giúp được không ???
RolandoMySQLDBA

Xin lỗi đã quên cập nhật này. Điều này đã giúp rất nhiều và máy chủ của chúng tôi đã hoạt động mà không gặp sự cố nào kể từ 1 tháng qua.
TheVyom

Không nên sao chép ib_logfile * sang một vị trí khác để sao lưu trước khi xóa chúng?
Butussy Butkus

1
768MB là khá lớn mỗi Percona Baron Schwartz percona.com/blog/2008/11/21/...
greenlitmysql
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.