File log basis data MariaDB - Layanan Basis Data Relasional Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

File log basis data MariaDB

Anda dapat memantau log kesalahan, log kueri lambat, dan log umum MariaDB. Log kesalahan MariaDB dihasilkan secara default; Anda dapat membuat log kueri lambat dan log umum dengan mengatur parameter di grup parameter DB. Amazon RDS merotasi semua file log MariaDB; interval untuk setiap jenis ditentukan sebagai berikut.

Anda dapat memantau log MariaDB secara langsung melalui konsol Amazon RDS, Amazon RDS API, Amazon RDS CLI, atau SDK. AWS Anda juga dapat mengakses log MariaDB dengan mengarahkan log ke tabel basis data di basis data utama dan mengkueri tabel tersebut. Anda dapat menggunakan utilitas mysqlbinlog untuk mengunduh log biner.

Untuk informasi selengkapnya tentang melihat, mengunduh, dan melihat log basis data berbasis file, lihat Memantau file log Amazon RDS.

Mengakses log kesalahan MariaDB

Log kesalahan MariaDB ditulis ke file <host-name>.err Anda. Anda dapat melihat file ini dengan menggunakan konsol Amazon RDS, Anda juga dapat mengambil log menggunakan Amazon RDS API, Amazon RDS CLI, atau SDK. AWS File <host-name>.err di-flush setiap 5 menit, dan kontennya ditambahkan ke mysql-error-running.log. File mysql-error-running.log lalu dirotasi setiap jam dan file per jam yang dihasilkan selama 24 jam terakhir dipertahankan. Setiap file log memiliki jam pembuatan (dalam UTC) yang ditambahkan pada namanya. File log juga memiliki stempel waktu yang membantu Anda menentukan kapan entri log ditulis.

MariaDB menulis ke log kesalahan hanya pada saat dinyalakan, dimatikan, dan saat mengalami kesalahan. Instans DB dapat memakan waktu berjam-jam atau berhari-hari tanpa perlu menulis entri baru ke log kesalahan. Jika Anda tidak melihat entri terbaru, berarti server tidak mengalami kesalahan yang mengakibatkan entri log.

Mengakses log umum dan kueri lambat MariaDB

Anda dapat menulis log umum dan log kueri lambat MariaDB ke file atau tabel basis data dengan mengatur parameter di grup parameter DB. Untuk informasi tentang pembuatan dan modifikasi grup parameter DB, lihat Menggunakan grup parameter. Anda harus mengatur parameter ini sebelum dapat melihat log kueri lambat atau log umum di konsol Amazon RDS atau dengan menggunakan Amazon RDS API, AWS CLI, atau AWS SDK.

Anda dapat mengontrol pengelogan MariaDB dengan menggunakan parameter dalam daftar ini:

  • slow_query_logataulog_slow_query: Untuk membuat log kueri lambat, atur ke 1. Default-nya adalah 0.

  • general_log: Untuk membuat log umum, atur ke 1. Default-nya adalah 0.

  • long_query_timeataulog_slow_query_time: Untuk mencegah kueri yang berjalan cepat agar tidak masuk ke log kueri lambat, tentukan nilai untuk waktu proses kueri terpendek yang akan dicatat, dalam hitungan detik. Nilai default-nya adalah 10 detik; nilai minimumnya adalah 0. Jika log_output = FILE, Anda dapat menentukan nilai titik mengambang yang masuk ke resolusi mikrodetik. Jika log_output = TABLE, Anda harus menentukan nilai integer dengan resolusi kedua. Hanya kueri yang waktu jalannya melebihi log_slow_query_time nilai long_query_time atau yang dicatat. Misalnya, pengaturan long_query_time atau log_slow_query_time ke 0,1 mencegah kueri apa pun yang berjalan kurang dari 100 milidetik untuk dicatat.

  • log_queries_not_using_indexes: Untuk mencatat semua kueri yang tidak menggunakan indeks ke log kueri lambat, atur parameter ini ke 1. Nilai default-nya adalah 0. Kueri yang tidak menggunakan indeks dicatat meskipun runtime-nya kurang dari nilai parameter long_query_time.

  • log_output option: Anda dapat menentukan salah satu opsi berikut untuk parameter log_output:

    • TABLE (default)– Menulis kueri umum ke tabel mysql.general_log, dan kueri lambat ke tabel mysql.slow_log.

    • FILE– Menulis log umum dan log kueri lambat ke sistem file. File log dirotasi setiap jam.

    • NONE– Menonaktifkan pengelogan.

Saat pengelogan diaktifkan, Amazon RDS merotasi log tabel atau menghapus file log secara berkala. Langkah ini merupakan tindakan pencegahan untuk mengurangi kemungkinan file log besar memblokir penggunaan basis data atau memengaruhi performa. Rotasi dan penghapusan pendekatan pengelogan FILE dan TABLE sebagai berikut:

  • Saat pengelogan FILE diaktifkan, file log akan diperiksa setiap jam dan file log yang lebih lama dari 24 jam akan dihapus. Dalam beberapa kasus, ukuran file log gabungan yang tersisa setelah penghapusan mungkin melebihi ambang batas 2 persen dari ruang yang dialokasikan oleh instans DB. Dalam kasus ini, file log paling besar akan dihapus hingga ukuran file log tidak lagi melebihi ambang batas.

  • Saat pengelogan TABLE diaktifkan, dalam beberapa kasus tabel log dirotasi setiap 24 jam. Rotasi ini terjadi jika ruang yang digunakan oleh log tabel lebih dari 20 persen dari ruang penyimpanan yang dialokasikan. Ini juga terjadi jika ukuran semua log yang digabungkan lebih besar dari 10 GB. Jika jumlah ruang yang digunakan untuk instans DB lebih besar dari 90 persen dari ruang penyimpanan yang dialokasikan untuk instans DB, ambang untuk rotasi log akan berkurang. Tabel log ini kemudian dirotasi jika ruang yang digunakan oleh log tabel lebih dari 10 persen dari ruang penyimpanan yang dialokasikan. Tabel ini juga dirotasi jika ukuran semua log yang digabungkan lebih besar dari 5 GB.

    Saat tabel log dirotasi, tabel log saat ini disalin ke tabel log cadangan dan entri di tabel log saat ini dihapus. Jika sudah ada, tabel log cadangan akan dihapus sebelum tabel log saat ini disalin ke cadangan. Anda dapat meminta tabel log cadangan jika diperlukan. Tabel log cadangan untuk tabel mysql.general_log bernama mysql.general_log_backup. Tabel log cadangan untuk tabel mysql.slow_log bernama mysql.slow_log_backup.

    Anda dapat merotasi tabel mysql.general_log dengan mengikuti prosedur mysql.rds_rotate_general_log. Anda dapat merotasi mysql.slow_log tabel dengan mengikuti mysql.rds_rotate_slow_log prosedur.

    Log tabel dirotasi selama upgrade versi basis data.

Amazon RDS mencatat rotasi log TABLE dan FILE dalam peristiwa Amazon RDS dan mengirimkan pemberitahuan kepada Anda.

Untuk bekerja dengan log dari konsol Amazon RDS, Amazon RDS API, Amazon RDS CLI, AWS atau SDK, setel parameter ke FILE. log_output Seperti log kesalahan MariaDB, file log ini dirotasi setiap jam. File log yang dihasilkan selama 24 jam sebelumnya akan dipertahankan.

Untuk informasi selengkapnya tentang kueri lambat dan log umum, buka topik berikut di dokumentasi MariaDB:

Menerbitkan log MariaDB ke Log Amazon CloudWatch

Anda dapat mengonfigurasi instans MariaDB Anda untuk mempublikasikan data log ke grup log di Amazon Logs. CloudWatch Dengan CloudWatch Log, Anda dapat melakukan analisis real-time dari data log, dan menggunakannya CloudWatch untuk membuat alarm dan melihat metrik. Anda dapat menggunakan CloudWatch Log untuk menyimpan catatan log Anda dalam penyimpanan yang sangat tahan lama.

Amazon RDS menerbitkan masing-masing log basis data MariaDB sebagai aliran basis data terpisah di grup log. Misalnya, misalkan Anda mengonfigurasi fungsi ekspor untuk menyertakan log kueri lambat. Kemudian data kueri lambat disimpan dalam log stream kueri lambat di grup log /aws/rds/instance/my_instance/slowquery.

Log kesalahan diaktifkan secara default. Tabel berikut merangkum persyaratan untuk log MariaDB lainnya.

Log Persyaratan

Log audit

Instans DB harus menggunakan grup opsi kustom dengan opsi MARIADB_AUDIT_PLUGIN.

Log umum

Instans DB harus menggunakan grup parameter kustom dengan pengaturan parameter general_log = 1 untuk mengaktifkan log umum.

Log kueri lambat

Instans DB harus menggunakan grup parameter khusus dengan pengaturan parameter slow_query_log = 1 atau log_slow_query = 1 untuk mengaktifkan log kueri lambat.

Output log

Instans DB harus menggunakan grup parameter khusus dengan pengaturan parameter log_output = FILE untuk menulis log ke sistem file dan mempublikasikannya ke CloudWatch Log.

Untuk memublikasikan log MariaDB CloudWatch ke Log dari konsol
  1. Buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

  2. Di panel navigasi, pilih Basis Data, lalu pilih instans DB yang ingin diubah.

  3. Pilih Ubah.

  4. Di bagian Log ekspor, pilih log yang ingin Anda mulai terbitkan ke CloudWatch Log.

  5. Pilih Lanjutkan, lalu pilih Ubah Instans DB di halaman ringkasan.

Anda dapat mempublikasikan log MariaDB dengan file. AWS CLI Anda dapat memanggil perintah modify-db-instance dengan parameter berikut:

  • --db-instance-identifier

  • --cloudwatch-logs-export-configuration

catatan

Perubahan pada opsi --cloudwatch-logs-export-configuration selalu diterapkan ke instans DB secara langsung. Oleh karena itu, opsi --apply-immediately dan --no-apply-immediately tidak akan berpengaruh.

Anda juga dapat mempublikasikan log MariaDB dengan memanggil perintah berikut: AWS CLI

Jalankan salah satu AWS CLI perintah ini dengan opsi berikut:

  • --db-instance-identifier

  • --enable-cloudwatch-logs-exports

  • --db-instance-class

  • --engine

Opsi lain mungkin diperlukan tergantung pada AWS CLI perintah yang Anda jalankan.

contoh

Contoh berikut memodifikasi instance MariaDB yang ada untuk mempublikasikan file log ke Log. CloudWatch Nilai --cloudwatch-logs-export-configuration adalah objek JSON. Kunci untuk objek ini adalah EnableLogTypes, dan nilainya adalah serangkaian string dengan setiap kombinasi audit, error, general, dan slowquery.

Untuk Linux, macOS, atau Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit","error","general","slowquery"]}'

Untuk Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit","error","general","slowquery"]}'
contoh

Perintah berikut membuat instance MariaDB dan menerbitkan file log ke Log. CloudWatch Nilai --enable-cloudwatch-logs-exports adalah rangkaian string JSON. String dapat berupa kombinasi audit, error, general, dan slowquery.

Untuk Linux, macOS, atau Unix:

aws rds create-db-instance \ --db-instance-identifier mydbinstance \ --enable-cloudwatch-logs-exports '["audit","error","general","slowquery"]' \ --db-instance-class db.m4.large \ --engine mariadb

Untuk Windows:

aws rds create-db-instance ^ --db-instance-identifier mydbinstance ^ --enable-cloudwatch-logs-exports '["audit","error","general","slowquery"]' ^ --db-instance-class db.m4.large ^ --engine mariadb

Anda dapat menerbitkan log MariaDB dengan RDS API. Anda dapat memanggil operasi ModifyDBInstance dengan parameter berikut:

  • DBInstanceIdentifier

  • CloudwatchLogsExportConfiguration

catatan

Perubahan pada parameter CloudwatchLogsExportConfiguration selalu diterapkan ke instans DB secara langsung. Oleh karena itu, parameter ApplyImmediately tidak memiliki dampak.

Anda juga dapat menerbitkan log MariaDB dengan memanggil operasi RDS API berikut:

Jalankan salah satu operasi RDS API ini dengan parameter berikut:

  • DBInstanceIdentifier

  • EnableCloudwatchLogsExports

  • Engine

  • DBInstanceClass

Parameter lain mungkin diperlukan tergantung pada AWS CLI perintah yang Anda jalankan.

Ukuran file log

Ukuran file log umum, log kesalahan, dan log kueri lambat MariaDB dibatasi hingga tidak lebih dari 2 persen dari ruang penyimpanan yang dialokasikan untuk instans DB. Untuk mempertahankan ambang batas ini, log secara otomatis dirotasi setiap jam dan file log yang lebih lama dari 24 jam dihapus. Jika ukuran file log gabungan melebihi ambang batas setelah menghapus file log lama, file log paling besar akan dihapus hingga ukuran file log tidak lagi melebihi ambang batas.

Mengelola log MariaDB berbasis tabel

Anda dapat mengarahkan log kueri lambat dan log umum ke tabel di instans DB. Untuk melakukannya, buat grup parameter DB dan atur parameter server log_output ke TABLE. Kueri umum lalu dicatat ke tabel mysql.general_log, dan kueri lambat dicatat ke tabel mysql.slow_log. Anda dapat mengueri tabel untuk mengakses informasi log. Mengaktifkan pencatatan ini akan meningkatkan jumlah data yang akan ditulis ke basis data. Hal ini dapat menurunkan performa.

Log umum dan log kueri lambat dinonaktifkan secara default. Untuk mengaktifkan pencatatan ke tabel, Anda juga harus mengatur parameter server berikut ke1:

  • general_log

  • slow_query_log atau log_slow_query

Tabel log terus bertambah hingga aktivitas pencatatan terkait dinonaktifkan dengan mengatur ulang parameter yang sesuai ke 0. Banyak data yang sering terakumulasi seiring berjalannya waktu, yang dapat menghabiskan banyak persentase ruang penyimpanan yang dialokasikan. Amazon RDS tidak mengizinkan Anda memotong tabel log, tetapi Anda dapat memindahkan kontennya. Merotasi tabel akan menyimpan kontennya ke tabel cadangan, lalu membuat tabel log kosong yang baru. Anda dapat merotasi tabel log secara manual dengan mengikuti prosedur perintah berikut, dengan permintaan perintah ditunjukkan oleh PROMPT>:

PROMPT> CALL mysql.rds_rotate_slow_log; PROMPT> CALL mysql.rds_rotate_general_log;

Untuk menghapus data lama sepenuhnya dan mengosongkan kembali ruang disk, lakukan prosedur yang sesuai dua kali secara berurutan.

Format pengelogan biner

MariaDB di Amazon RDS mendukung format pengelogan biner berbasis baris, berbasis pernyataan, dan campuran. Format pengelogan biner default adalah campuran. Untuk detail tentang format log biner MariaDB lainnya, lihat Format log biner dalam dokumentasi MariaDB.

Jika Anda berencana menggunakan replikasi, format pengelogan biner itu penting. Hal ini karena menentukan catatan perubahan data yang dicatat di sumber dan dikirim ke target replikasi. Untuk informasi tentang kelebihan dan kelemahan format pengelogan biner lainnya untuk replikasi, lihat Kelebihan dan kelemahan replikasi berbasis pernyataan dan berbasis baris dalam dokumentasi MySQL.

penting

Mengatur format pengelogan biner ke berbasis baris dapat menghasilkan file log biner yang sangat besar. File log biner besar mengurangi jumlah penyimpanan yang tersedia untuk instans DB. File ini juga dapat meningkatkan jumlah waktu untuk melakukan operasi pemulihan instans DB.

Replikasi berbasis pernyataan dapat menyebabkan inkonsistensi antara instans DB sumber dan replika baca. Untuk informasi selengkapnya, lihat Pernyataan yang tidak aman untuk replikasi berbasis pernyataan dalam dokumentasi MariaDB.

Untuk mengatur format pengelogan biner MariaDB
  1. Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

  2. Di panel navigasi, pilih Grup parameter.

  3. Pilih grup parameter yang digunakan oleh instans DB yang ingin diubah.

    Anda tidak dapat mengubah grup parameter default. Jika instans DB menggunakan grup parameter default, buat grup parameter baru dan hubungkan dengan instans DB.

    Untuk informasi selengkapnya tentang grup parameter DB, lihat Menggunakan grup parameter.

  4. Untuk Tindakan grup parameter, pilih Edit.

  5. Atur parameter binlog_format ke format pengelogan biner pilihan Anda (ROW, STATEMENT, atau MIXED).

  6. Pilih Simpan perubahan untuk menyimpan pembaruan ke grup parameter DB.

Mengakses log biner MariaDB

Anda dapat menggunakan utilitas mysqlbinlog untuk mengunduh log biner dalam format teks dari instans DB MariaDB. Log biner diunduh ke komputer lokal Anda. Untuk informasi selengkapnya tentang penggunaan utilitas mysqlbinlog, buka Menggunakan mysqlbinlog dalam dokumentasi MariaDB.

Untuk menjalankan utilitas mysqlbinlog terhadap instans Amazon RDS, gunakan opsi berikut:

  • Tentukan opsi --read-from-remote-server.

  • --host: Tentukan nama DNS dari titik akhir instans.

  • --port: Tentukan port yang digunakan oleh instans.

  • --user: Tentukan pengguna MariaDB yang telah diberikan izin slave replikasi.

  • --password: Tentukan kata sandi untuk pengguna, atau menghapus nilai kata sandi agar utilitas meminta Anda memasukkan kata sandi.

  • --result-file: Tentukan file lokal yang menerima output.

  • Tentukan nama satu atau beberapa file log biner. Untuk mendapatkan daftar log yang tersedia, gunakan perintah SQL SHOW BINARY LOGS.

Untuk informasi selengkapnya tentang opsi mysqlbinlog, buka opsi mysqlbinlog dalam dokumentasi MariaDB.

Berikut ini adalah contohnya:

Untuk Linux, macOS, atau Unix:

mysqlbinlog \ --read-from-remote-server \ --host=mariadbinstance1.1234abcd.region.rds.amazonaws.com \ --port=3306 \ --user ReplUser \ --password <password> \ --result-file=/tmp/binlog.txt

Untuk Windows:

mysqlbinlog ^ --read-from-remote-server ^ --host=mariadbinstance1.1234abcd.region.rds.amazonaws.com ^ --port=3306 ^ --user ReplUser ^ --password <password> ^ --result-file=/tmp/binlog.txt

Amazon RDS biasanya membersihkan log biner sesegera mungkin. Namun, log biner harus tetap tersedia di instans untuk diakses oleh mysqlbinlog. Untuk menentukan jumlah jam bagi RDS untuk mempertahankan log biner, gunakan prosedur tersimpan mysql.rds_set_configuration. Tentukan periode dengan waktu yang cukup bagi Anda untuk mengunduh log. Setelah Anda mengatur periode retensi, pantau penggunaan penyimpanan untuk instans DB guna memastikan bahwa log biner yang dipertahankan tidak memakan terlalu banyak ruang penyimpanan.

Contoh berikut menetapkan periode retensi ke 1 hari.

call mysql.rds_set_configuration('binlog retention hours', 24);

Untuk menampilkan pengaturan saat ini, gunakan prosedur tersimpan mysql.rds_show_configuration.

call mysql.rds_show_configuration;

Anotasi log biner

Di instans DB MariaDB, Anda dapat menggunakan peristiwa Annotate_rows untuk menganotasi peristiwa baris dengan salinan kueri SQL yang menyebabkan peristiwa baris. Pendekatan ini memberikan fungsionalitas serupa untuk mengaktifkan parameter binlog_rows_query_log_events di instans DB RDS for MySQL.

Anda dapat mengaktifkan anotasi log biner secara global dengan membuat grup parameter kustom dan mengatur parameter binlog_annotate_row_events ke 1. Anda juga dapat mengaktifkan anotasi pada tingkat sesi, dengan memanggil SET SESSION binlog_annotate_row_events = 1. Gunakan replicate_annotate_row_events untuk mereplikasi anotasi log biner instans replika jika pengelogan biner diaktifkan pada instans tersebut. Tidak ada hak istimewa khusus yang diperlukan untuk menggunakan pengaturan ini.

Berikut ini adalah contoh dari transaksi berbasis baris di MariaDB. Penggunaan pengelogan berbasis baris dipicu dengan mengatur tingkat isolasi transaksi ke read-committed.

CREATE DATABASE IF NOT EXISTS test; USE test; CREATE TABLE square(x INT PRIMARY KEY, y INT NOT NULL) ENGINE = InnoDB; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; BEGIN INSERT INTO square(x, y) VALUES(5, 5 * 5); COMMIT;

Tanpa anotasi, entri log biner untuk transaksi terlihat seperti berikut:

BEGIN /*!*/; # at 1163 # at 1209 #150922 7:55:57 server id 1855786460 end_log_pos 1209 Table_map: `test`.`square` mapped to number 76 #150922 7:55:57 server id 1855786460 end_log_pos 1247 Write_rows: table id 76 flags: STMT_END_F ### INSERT INTO `test`.`square` ### SET ### @1=5 ### @2=25 # at 1247 #150922 7:56:01 server id 1855786460 end_log_pos 1274 Xid = 62 COMMIT/*!*/;

Pernyataan berikut memungkinkan anotasi tingkat sesi untuk transaksi yang sama ini, dan menonaktifkannya setelah melakukan transaksi:

CREATE DATABASE IF NOT EXISTS test; USE test; CREATE TABLE square(x INT PRIMARY KEY, y INT NOT NULL) ENGINE = InnoDB; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION binlog_annotate_row_events = 1; BEGIN; INSERT INTO square(x, y) VALUES(5, 5 * 5); COMMIT; SET SESSION binlog_annotate_row_events = 0;

Dengan anotasi, entri log biner untuk transaksi terlihat seperti berikut:

BEGIN /*!*/; # at 423 # at 483 # at 529 #150922 8:04:24 server id 1855786460 end_log_pos 483 Annotate_rows: #Q> INSERT INTO square(x, y) VALUES(5, 5 * 5) #150922 8:04:24 server id 1855786460 end_log_pos 529 Table_map: `test`.`square` mapped to number 76 #150922 8:04:24 server id 1855786460 end_log_pos 567 Write_rows: table id 76 flags: STMT_END_F ### INSERT INTO `test`.`square` ### SET ### @1=5 ### @2=25 # at 567 #150922 8:04:26 server id 1855786460 end_log_pos 594 Xid = 88 COMMIT/*!*/;