Saya benar-benar membutuhkan beberapa keahlian mysql. Saya seorang pemula untuk mysql dan saya melihat beberapa server crash db saya dalam 1 minggu terakhir.
Saya menggunakan mysql 5.1.36 di Ubuntu. Ini adalah server mysql khusus dengan Dual core dan memori 4GB dan 40GB SSD.
Kesalahan log adalah:
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 adalah seperti di bawah ini.
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
Ada saran apa yang bisa saya ubah.
Jawaban:
Pada pandangan pertama, saya akan mengatakan bahwa innodb_log_file_size Anda terlalu kecil. Seharusnya lebih besar untuk melakukan dua hal:
Inilah yang harus Anda lakukan untuk saat ini untuk melihat apakah itu membantu:
LANGKAH 01) Ubah yang berikut ini di /etc/my.cnf
LANGKAH 02)
service mysql stop
LANGKAH 03)
rm -f /var/lib/mysql/ib_logfile*
LANGKAH 04)
service mysql start
Ini akan membangun kembali file-file berikut
Cobalah !!!
UPDATE 2013-07-03 12:37 EDT
Saya telah memperbarui posting saya yang lain tentang ini dan melewatkan yang ini
ButtleButkus baru saja berkomentar di
2013-07-03 07:18:56 EDT
Karena mungkin ada data transaksional yang belum selesai di dalam, inilah yang harus dilakukan
LANGKAH 01) Ubah yang berikut ini di /etc/my.cnf
LANGKAH 02) mysql -uroot -p -e "SET GLOBAL innodb_fast_shutdown = 0;"
LANGKAH 03)
service mysql stop
LANGKAH 04)
rm -f /var/lib/mysql/ib_logfile*
LANGKAH 05)
service mysql start
Saya menambahkan
SET GLOBAL innodb_fast_shutdown = 0;
. Apa fungsinya? Ini memaksa InnoDB untuk sepenuhnya membersihkan perubahan transaksional dari semua bagian bergerak InnoDB, termasuk log transaksional (ib_logfile0, ib_logfile1). Jadi, tidak perlu membackup ib_logfile0 lama, ib_logfile1. Jika menghapusnya membuat Anda gugup, maka buat Langkah 04untuk memasukkan log lama
/var/lib
. Jika rekreasi log berhasil dan mysqld mulai, maka Anda dapat menghapus log lama.Saya telah menggunakan fitur ini selama satu tahun sekarang. Saya telah memperbarui posting saya yang lain untuk mencerminkan ...
May 20, 2013
: Innodb satu file per tablespaceMay 05, 2013
: Masalah setelah memindahkan file ib_logfile1 dan ib_logfile0Jan 10, 2013
: Menemukan dan memperbaiki indeks InnoDB korupsiDec 17, 2012
: MySQL Start / StopFeb 16, 2011
: Bagaimana cara mengubah variabel innodb MySQL dengan aman 'innodb_log_file_size'? (Pembaharuan Terakhir)Feb 04, 2011
: MySQL InnoDB - innodb_file_per_table kontra? (Pembaharuan Terakhir)Oct 29, 2010
: Howto: Bersihkan mesin penyimpanan mysql InnoDB? (Ditambahkan sebagai Langkah 03 padaJun 04, 2013
)Jika ada posting lama saya yang lain di mana saya tidak menyebutkan innodb_fast_shutdown , beri tahu saya agar saya dapat memperbaruinya. Terima kasih lagi, ButtleButkus .
sumber