Saya awali dulu, aslinya baru tahu soal format binary logging milik MySQL dari laporan mas Hartono soal errornya. ? Sayang pesan error yang dicopas tak komplit dan tak dideskripsikan kenapa dapat demikian itu, tapi kurang lebih mestinya seperti ini:
Jan 30 12:09:58 ubuntu mysqld[10041]: 2017-01-30 12:09:58 140268010343168 [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statements writing to a table with an auto-increment column after selecting from another table are unsafe because the order in which rows are retrieved determines what (if any) rows will be written. This order cannot be predicted and may differ on master and the slave.
Yang pasti akhirnya saya baca – baca apa itu binlog yang dimaksud. ? Jadi ini ialah format pencatatan (logging) dari aktivitas database dari MySQL yang disimpan secara format khusus bukan teks, setidaknya ada 3 jenis yang dapat digunakan:
- STATEMENT – Default. Ini berarti setiap eksekusi query SQL yang berpengaruh ke data atau struktur tabel akan didokumentasikan.
- ROW – Sedangkan ini akan mencatat per baris.
- MIXED – Campuran.
Saya kurang jago menjelaskan detailnya, tapi dapat dibaca dokumentasinya dari sini: https://mariadb.com/kb/en/mariadb/binary-log-formats/
Sedangkan bagi mengubah format binary logging dari MySQL/MariaDB/Percona dapat jalankan diantara dari ini:
SET GLOBAL binlog_format = 'STATEMENT';
SET GLOBAL binlog_format = 'ROW';
SET GLOBAL binlog_format = 'MIXED';
Eksekusi yang kamu butuhkan saja.
Kembali ke masalahnya, ini solusinya bagaimana? Silahkan coba eksekusi petunjuk ini:
FLUSH TABLES WITH READ LOCK;
FLUSH LOGS;
SET GLOBAL binlog_format = 'MIXED';
FLUSH LOGS;
UNLOCK TABLES;
Kita akan membersihkan tabel yang terkunci pembacaannya, log dan mengganti format binlog ke MIXED. Setelah itu mestinya akan normal kembali database MySQLnya.
Sumber https://servernesia.com