Ketika server MySQL dimulai, ia memeriksa operasi baris perintahnya untuk melihat apakah ia harus melakukan login dan membuka file log yang sesuai (jika demikian). Anda dapat meminta server menghasilkan dua tipe utama file log: File log biasa. Ini melaporkan koneksi klien, pertanyaan, dan berbagai peristiwa lainnya. Ketika server MySQL dimulai, ia memeriksa operasi baris perintahnya untuk melihat apakah ia harus melakukan login dan membuka file log yang sesuai (jika demikian). Anda dapat meminta server menghasilkan dua tipe utama file log: File log biasa. Ini melaporkan koneksi klien, pertanyaan, dan berbagai peristiwa lainnya. Ini berguna untuk melacak aktivitas server: siapa yang terhubung, dari mana, dan apa yang mereka lakukan.
Ubah catatan
Ini melaporkan pertanyaan yang mengubah database. Istilah "update" dalam konteks ini merujuk tidak hanya pada pernyataan UPDATE, namun pada semua pernyataan yang mengubah database. Oleh karena itu, ini berisi catatan kueri untuk DELETE, INSERT, REPLACE, CREATE TABLE, DROP TABLE, GRANT, dan REVOKE. Isi log pembaruan ditulis dalam bentuk pernyataan SQL, yang digunakan sebagai masukan ke mysql. Pembaruan log dan cadangan berguna jika tabel harus dipulihkan setelah terjadi kerusakan. Anda dapat memulihkan database dari file cadangan dan kemudian menjalankan kembali kueri apa pun yang mengubah database setelah file cadangan tersebut dengan menggunakan log pembaruan sebagai input ke mysql. Ini mengembalikan tabel ke kondisinya pada saat crash.
Untuk membuat log efektif, gunakan opsi --log untuk mengaktifkan pencatatan reguler dan opsi --log-update untuk mengaktifkan pencatatan pembaruan. Opsi ini dapat ditentukan pada baris perintah di mysqld.safe_mysqld atau mysql.server, atau di grup [mysqld] dari sebuah opsi. Saat logging diaktifkan, file log ditulis ke direktori data server secara default.
Penulis merekomendasikan kedua jenis log tersebut valid saat pertama kali menggunakan MySQL. Setelah Anda mendapatkan pengalaman dengan MySQL, Anda mungkin tergoda untuk menggunakan log pembaruan untuk mengurangi kebutuhan ruang disk.
Setelah mengaktifkan logging, pastikan untuk tidak mengisi disk dengan informasi log dalam jumlah besar, terutama jika server menangani kueri dalam jumlah besar. Rotasi file log dan waktu kedaluwarsa dapat digunakan untuk mencegah file log tumbuh tanpa batas sekaligus menjaga log terbaru tersedia secara online.
Rotasi file log berfungsi sebagai berikut. Asumsikan bahwa file log bernama log. Pada loop pertama, log diganti namanya menjadi log 0 dan server mulai menulis file log baru. Pada loop kedua, log.0 diubah namanya menjadi log.1, log diubah namanya menjadi log.0, dan server mulai menulis file log baru lainnya. Dengan cara ini, setiap file menelusuri nama log 0, log 1, dan seterusnya. Ketika file mencapai titik tertentu dalam loop, file tersebut dapat dihentikan.
Perbarui log dan pernyataan LOAD DATA
Biasanya, ketika server menjalankan pernyataan LOAD DATE, server hanya menulis pernyataan itu sendiri, bukan konten baris yang dimuat, ke log pembaruan. Ini berarti bahwa operasi pemulihan menggunakan log pembaruan tidak akan lengkap kecuali file data tetap dapat diakses. Untuk memastikan ini aman, file data tidak boleh dihapus kecuali database telah dicadangkan.
Cadangan sistem
Log pembaruan tidak selalu baik untuk pemulihan basis data, dan jika kerusakan disk menyebabkan Anda kehilangan log pembaruan, pastikan Anda melakukan pencadangan sistem file secara teratur. Ada baiknya juga untuk menulis log pembaruan ke disk yang berbeda dari tempat penyimpanan database.
Misalnya, jika Anda memutar log setiap hari dan ingin menyimpan log selama seminggu, Anda akan menyimpan log.0 ke log.6. Pada loop berikutnya, log.6 akan dihentikan dengan membiarkan log.5 menimpa log.6 menjadi log.6 yang baru. Dengan cara ini, Anda dapat menyimpan banyak log tanpa melebihi batas disk.
Frekuensi rotasi log dan jumlah log lama yang disimpan akan bergantung pada seberapa sibuk server (server aktif menghasilkan lebih banyak pesan log) dan berapa banyak ruang disk yang ingin Anda gunakan untuk log lama. Saat merotasi log biasa, Anda dapat menggunakan perintah mysqla d - min flush-logs untuk memberi tahu server agar menutup file log saat ini dan membuka file log baru.
Skrip untuk melakukan rotasi log reguler akan terlihat seperti ini (ini dapat dimodifikasi untuk mencerminkan nama basis log Anda dan lokasi direktori data Anda, dan mungkin jumlah log lama yang ingin Anda pertahankan):
Cara terbaik adalah menjalankan skrip ini dari akun mysqladm untuk memastikan bahwa file log milik pengguna tersebut. Jika Anda membiarkan parameter koneksi di file opsi .my.cnf, Anda tidak perlu menentukan parameter apa pun di perintah skrip mysqladmin. Jika Anda tidak melakukan ini, Anda dapat membuat pengguna terbatas yang tidak melakukan apa pun selain mengeluarkan perintah penyegaran. Kata sandi pengguna ini kemudian dapat ditempatkan di skrip dengan risiko minimal. Jika Anda ingin melakukan ini, pengguna hanya boleh memiliki izin RELOAD. Misalnya, untuk memanggil pengguna flush dan menetapkan kata sandi, fl us h pass, gunakan pernyataan GRANT berikut:
GRANT RELOAD ON *.* KE flush@localhost DIIDENTIFIKASI OLEH "flushpass"
Saat Anda perlu melakukan operasi penyegaran dalam skrip, Anda dapat melakukan ini:
mysqladmin -ufush -pflushpass siram -log
Di Linux, lebih baik menggunakan logrotate untuk menginstal skrip mysql-log-rotate dalam paket distribusi MySQL daripada menulis skrip sendiri. Jika mysql-log-rotate tidak diinstal secara otomatis melalui file RPM, Anda harus memeriksa direktori file dukungan dari paket distribusi MySQL.
Karena perbedaan cara server menangani file log pembaruan, rotasi file log sedikit berbeda antara log pembaruan dan log biasa. Jika Anda memberitahu server untuk menggunakan nama file log pembaruan tanpa ekstensi (seperti tanggal terkini), server akan secara otomatis membuat nama file log pembaruan menggunakan urutan tanggal terkini. Log pembaruan baru dibuat saat server dimulai dan saat log disegarkan. Jika Anda mengaktifkan pencatatan pembaruan tanpa menentukan nama file, server akan menghasilkan urutan file log pembaruan menggunakan nama host sebagai nama dasar.
Saat menghentikan rangkaian file yang dihasilkan dengan cara ini, Anda mungkin ingin menghentikannya berdasarkan usianya (waktu terakhir diubah) dan bukan berdasarkan nama. Alasannya adalah karena Anda tidak tahu kapan perintah flush-log akan dikeluarkan, Anda tidak dapat mengharapkan untuk membuat log pembaruan dalam jumlah tetap dalam jangka waktu tertentu. Misalnya, jika Anda mencadangkan tabel dengan mysqldump dan menggunakan opsi --flush-logs, file baru dalam urutan nama log pembaruan tersebut akan dibuat dengan setiap pencadangan.
Untuk log pembaruan dengan nama file berurutan yang dibuat secara otomatis oleh server, skrip penghentian berdasarkan usia log terlihat seperti ini:
Perintah find mencari dan menghapus file log pembaruan yang dimodifikasi lebih dari satu minggu yang lalu. Penting untuk menggunakan parameter -name untuk menguji ekstensi file numerik untuk menghindari penghapusan tabel yang ditentukan oleh pembaruan yang salah.
Anda juga dapat memberitahu server untuk menggunakan nama file log pembaruan tetap (jika diinginkan), yang berguna jika Anda ingin memutar log pembaruan dengan cara yang sama seperti log biasa. Untuk menggunakan nama log pembaruan tetap, tentukan nama yang menyertakan ekstensi. Misalnya, Anda dapat memulai server dengan opsi --log-update=update.log untuk menggunakan nama up date .log. Server akan selalu mematikan dan membuka log ketika menerima perintah flush-logs, tetapi server tidak akan menghasilkan file baru setiap saat. Dalam hal ini, skrip rotasi log untuk log pembaruan dan skrip untuk log biasa hanya berbeda dalam nama basis file rotasi.
Jika Anda ingin mengotomatiskan rotasi dan penghentian log, gunakan cron. Diasumsikan bahwa skrip untuk memutar log reguler dan memperbarui log adalah log putar dan log putar - tanggal terkini - dan dipasang di direktori /usr/user/mysql/bin. Daftarkan sebagai pengguna mysqlladm, lalu gunakan perintah berikut untuk mengedit file crontab pengguna mysqladm: % crontab -e
Perintah ini memungkinkan pengeditan cadangan file crontab saat ini (mungkin kosong jika ini belum pernah dilakukan sebelumnya). Tambahkan baris ke file sebagai berikut:
Entri ini memberitahu cron untuk menjalankan skrip ini setiap pagi pada jam 4 pagi. Anda dapat mengubah waktu atau menjadwalkannya sesuai kebutuhan. Lihat halaman manual crontab untuk instruksinya.
-