Mysql Innodb: InnoDB: HATA: Son kontrol noktasının yaşı InnoDB: Bu log grup kapasitesini aşıyor


25

Gerçekten biraz mysql uzmanlığına ihtiyacım var. Ben mysql için bir newbi ve son 1 hafta içinde db bazı sunucu çökmesi görüyorum.

Ubuntu'da mysql 5.1.36 kullanıyorum. Bu, çift çekirdekli ve 4 GB belleğe ve 40 GB SSD'ye sahip özel bir mysql sunucusudur.

Günlük hataları:

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 aşağıdaki gibidir.

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

Herhangi bir önerim ne değiştirebilirim.


Üzgünüm ... ilk birkaç satır silindi.
TheVyom

Kendinize bir iyilik yapın ve eğer yapabilirseniz, daha yeni bir MySQL sürümünü kullanın. 5.1.38 eskidir. En azından daha yeni bir 5.1 sürümüne yükseltin;
Aaron Brown

Yanıtlar:


26

İlk bakışta, senin innodb_log_file_size çok küçük olduğunu söyleyebilirim. İki şey yapmak daha büyük olmalı:

  • Herhangi bir büyük BLOB veya TEXT alanını barındırın
  • Daha büyük işlemlerin tutulması

İşte yardım edip etmediğini görmek için şimdi yapmanız gerekenler:

ADIM 01) Aşağıdakileri /etc/my.cnf dosyasında değiştirin.

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

ADIM 02) service mysql stop

ADIM 03) rm -f /var/lib/mysql/ib_logfile*

ADIM 04) service mysql start

Bu, aşağıdaki dosyaları yeniden inşa edecek

  • / Var / lib / mysql / ib_logfile0
  • / Var / lib / mysql / ib_logfile1

Bir şans ver !!!

GÜNCELLEME 2013-07-03 12:37 EDT

Bu konudaki diğer yayınlarımı güncelledim ve bu mesajı özledim

ButtleButkus az önce yorum yaptı2013-07-03 07:18:56 EDT

İb_logfile * 'u silmeden önce yedekleme için başka bir yere kopyalamanız tavsiye edilmez mi?

İçinde bitmemiş işlem verileri olabileceğinden, burada yapılması gerekenler

ADIM 01) Aşağıdakileri /etc/my.cnf dosyasında değiştirin.

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

ADIM 02) mysql - çok -p - e "SET GLOBAL innodb_fast_shutdown = 0;"

ADIM 03) service mysql stop

ADIM 04) rm -f /var/lib/mysql/ib_logfile*

ADIM 05) service mysql start

Ben ekledi SET GLOBAL innodb_fast_shutdown = 0;. Bu ne işe yarıyor? InnoDB'yi, işlem günlükleri de dahil olmak üzere tüm InnoDB hareketli parçalarından işlem değişikliklerini tamamen temizlemeye zorlar (ib_logfile0, ib_logfile1). Bu nedenle, eski ib_logfile0, ib_logfile1'i yedeklemeye gerek yoktur. Bunları silmek sizi endişelendirirse, Adım 04’ü yapın.

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

eski günlükleri koymak için /var/lib. Günlüklerin yeniden oluşturulması başarılı olursa ve mysqld başlatılırsa, eski günlükleri silebilirsiniz.

Bu özelliği bir yıldır kullanıyorum. Diğer yazılarımı da bunu yansıtacak şekilde güncelledim ...

Innodb_fast_shutdown'dan bahsetmediğim başka eski yayınlarım varsa , bunu güncelleyebilmem için bana bildirin. Tekrar teşekkürler, ButtleButkus .


Günlük dosyası 256M'ye yükseltildi ve buffer_pool_size 2G'ye düşürüldü, hile yapıyor gibi görünüyor.
TheVyom

Cevabım yardımcı oldu mu ???
RolandoMySQLDBA

Maalesef bunu güncellemeyi unuttum. Bu çok yardımcı oldu ve sunucumuz geçen 1 aydan beri herhangi bir sorun olmadan başladı.
TheVyom

İb_logfile * 'u silmeden önce yedekleme için başka bir yere kopyalamanız tavsiye edilmez mi?
Buttle Butkus,

1
768MB oldukça büyük Başına Percona Baron Schwartz percona.com/blog/2008/11/21/...
greenlitmysql
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.