Tolong jangan hanya menghapusnya di OS.
Anda perlu membiarkan mysqld melakukan itu untuk Anda. Inilah cara mysqld mengelolanya:
File mysql-bin.[index]
menyimpan daftar semua log biner yang telah dibuat dan diputar secara otomatis oleh mysqld. Mekanisme untuk membersihkan binlog bersamaan dengan mysql-bin.[index]
adalah:
PURGE BINARY LOGS TO 'binlogname';
PURGE BINARY LOGS BEFORE 'datetimestamp';
Ini akan menghapus semua log biner sebelum binlog atau cap waktu yang baru saja Anda tentukan.
Misalnya, jika Anda menjalankan
PURGE BINARY LOGS TO 'mysql-bin.000223';
ini akan menghapus semua log biner sebelumnya mysql-bin.000223
.
Jika Anda berlari
PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 3 DAY) + INTERVAL 0 SECOND;
ini akan menghapus semua log biner sebelum tengah malam 3 hari yang lalu.
Jika Anda ingin agar binlog diputar secara otomatis dan tetap 3 hari, cukup setel ini:
mysql> SET GLOBAL expire_logs_days = 3;
lalu tambahkan ini ke /etc/my.cnf
[mysqld]
expire_logs_days=3
dan mysqld akan menghapus log mereka untuk Anda
TAMPILKAN STATUS BUDAK \ G
Ini sangat penting. Ketika Anda menjalankan SHOW SLAVE STATUS\G
, Anda akan melihat dua log biner dari Master:
Master_Log_File
Relay_Master_Log_File
Ketika replikasi memiliki sedikit atau tidak ada lag, ini biasanya bernilai sama. Ketika ada banyak replikasi lag, nilai-nilai ini berbeda. Hanya untuk membuatnya sederhana, pilih apa pun yang Relay_Master_Log_File
ada, dan kembali ke Master dan lari
PURGE BINARY LOGS TO 'Whatever Relay_Master_Log_File Is';
Dengan begitu, replikasi tidak terganggu.
[mysqld] expire_logs_days=3
[mysqld]
SET GLOBAL expire_logs_days = 3;
dari klien mysql tidak akan menerimanya. Contoh di Dokumen MySQL: dev.mysql.com/doc/refman/5.5/en/mysqld-option-tables.htmlmysql> SET GLOBAL expire_logs_days = 3;
danexpire-logs-days=3
di/etc/my.cnf
... Apakah mereka sama? Apakah ini berlebihan atau tidak? Atau, penting untuk menjalankanSET GLOBAL...
lalu menambahkanexpire-logs-days=..
? Terima kasih.PURGE BINARY LOGS BEFORE DATE(NOW());
mengapa tidak ada default waras untuk ini? Saya tidak punya tempat, tidak pernah jelas mengubah ukuran file log ke sejumlah besar. Saya memiliki file log 10,0 GB, setelah menjalankan perintah ini ukuran folder mysql.bin saya menyusut menjadi 1,6GB.Ini sangat tergantung pada strategi cadangan Anda. Salah satu alasan utama untuk menjaga log biner adalah untuk mengembalikan database Anda ke 'point-in-time'. Jika database Anda macet dan membutuhkan pemulihan, Anda akan mengembalikan cadangan lengkap terbaru, dan kemudian memutar ulang log biner dimulai dengan posisi cadangan penuh.
Jadi, jika Anda melakukan pencadangan penuh setiap hari dan Anda memiliki log biner selama 7 hari, kemungkinan Anda dapat menghapus log biner selama 4-6 hari terakhir. Anda dapat mengontrol berapa hari nilai log biner disimpan dengan
expire_logs_days
pengaturan.Anda dapat menghapus log biner yang tidak Anda perlukan dengan terlebih dahulu melihat apa log tertua yang ingin Anda simpan:
dan kemudian di mysql:
sumber
Coba ini:
seperti yang tertulis dalam dokumen :
Ini akan menghapus semua file log biner terkait, yang mungkin bukan yang Anda inginkan.
sumber