Nonaktifkan logging biner MySQL dengan variabel log_bin

35

File konfigurasi MySQL default /etc/mysql/my.cnf yang diinstal oleh beberapa paket debian menggunakan APT sering mengatur variabel log_bin, sehingga binlog diaktifkan:

log_bin = /var/log/mysql/mysql-bin.log

Ketika saya ingin menonaktifkan log biner pada instalasi seperti itu, komentar baris di my.cnf tentu saja berfungsi, tapi saya bertanya-tanya apakah ada cara untuk menonaktifkan log biner dengan mengatur secara eksplisit log_bin ke OFF, dalam gaya debian, maksud saya di file yang disertakan seperti /etc/mysql/conf.d/myCustomFile.cnf, jadi default my.cnf tidak berubah dan dapat dengan mudah diperbarui oleh apt, jika perlu.

Saya mencoba "log_bin = 0", "log_bin = OFF" atau "log_bin =" tetapi tidak ada yang berhasil ...

Nicolas Payart
sumber

Jawaban:

42

Ini adalah pertanyaan lama, tetapi muncul dalam pencarian ketika saya sedang mencoba untuk mengingat memori saya tentang nama opsi yang benar dan jadi sekarang saya sudah menemukan jawabannya, saya menambahkan rinciannya di sini.

Bagian penting dari pertanyaan adalah:

Maksud saya dalam file yang disertakan seperti /etc/mysql/conf.d/myCustomFile.cnf

Anda dapat melakukan ini dari file opsi yang disertakan menggunakan opsi skip-log-bin. Misalnya, Anda dapat membuat /etc/mysql/conf.d/disable_binary_log.cnfdengan konten berikut:

[mysqld]
skip-log-bin

Anda dapat menambahkan skip-sebagai awalan ke opsi lain untuk menonaktifkannya dengan cara ini juga.

John Dalton
sumber
1
Hebat, persis seperti yang kuharapkan. Itu bekerja dengan baik pada setidaknya MariaDB 10.0. Terima kasih banyak.
Nicolas Payart
7

Dalam MySQL 8 itu adalah opsi disable_log_bin yang harus disediakan tanpa parameter apa pun pada my.cnffile di [mysqld]bagian ini.

[mysqld]
disable_log_bin
some-other-option = any-value
Bundy Al
sumber
5

Anda bisa melihatnya seperti ini, log_bin tidak boleh menerima parameter, baik Anda menaruh:

log_bin

atau tidak sama sekali, karena merupakan parameter boolean.

Namun, jika nilai diatur, log diaktifkan dan nilai ditafsirkan sebagai nama dasar binlog.

Opsi log memiliki riwayat tidak terlalu intuitif, dan mengubah formatnya dari versi ke versi (Saya melihat Anda, log lambat).

jynus
sumber
Itu tidak berfungsi pada MariaDB
MechanTOurS
Mengingat bahwa saya menggunakan MariaDB, dan saya memiliki baris yang sama persis pada konfigurasi saya, saya sangat yakin itu berfungsi.
jynus
4

Jika Anda tidak mereplikasi, Anda dapat menonaktifkan binlogging dengan mengubah file my.ini atau my.cnf Anda. Buka my.ini atau /etc/my.cnf (/etc/mysql/my.cnf) Anda, masukkan:

# vi /etc/my.cnf

Temukan baris yang bertuliskan "log_bin" dan hapus atau komentari sebagai berikut:

#log_bin = /var/log/mysql/mysql-bin.log

Anda juga perlu menghapus atau mengomentari baris berikut:

#expire_logs_days = 10

#max_binlog_size = 100M

Tutup dan simpan file. Akhirnya, restart server mysql:

# service mysql restart

Mahesh Patil
sumber
1
Saya pikir OP mengerti ini, itulah sebabnya ia menulis: "Maksud saya di file yang disertakan seperti /etc/mysql/conf.d/myCustomFile.cnf, jadi default my.cnf tidak diubah"
Peter V. Mørch
1

Dari Manual untuk MariaDB ( https://mariadb.com/kb/en/library/activating-the-binary-log/ )

Jika Anda tidak memberikan nama (yang dapat, secara opsional, menyertakan jalur absolut), defaultnya adalah datadir / log-basename-bin, datadir / mysql-bin atau datadir / mariadb-bin

Namun,

Klien dengan hak istimewa SUPER dapat menonaktifkan dan mengaktifkan kembali log biner untuk sesi saat ini dengan mengatur variabel sql_log_bin.

SET sql_log_bin = 0;

SET sql_log_bin = 1;

Namun, jika Anda mengatakan itu diaktifkan secara default selama instalasi, Anda harus menonaktifkan dengan menghapus baris dari file my.cnf Anda dan kemudian restart mysqld. Anda juga dapat membersihkan data biner ( https://dev.mysql.com/doc/refman/5.6/en/purge-binary-logs.html )

PURGE BINARY LOGS

Akhirnya, seperti jawaban poster lain menyebutkan, di MySQL 8 ada opsi untuk secara eksplisit mematikan logging biner dari file konfigurasi menggunakan opsi --skip-log-binatau --disable-log-bindi bagian [mysqld] dari file konfigurasi.

Untuk menonaktifkan logging biner, Anda dapat menentukan opsi --skip-log-binatau --disable-log-binsaat startup. Jika salah satu dari opsi ini ditentukan dan --log-binjuga ditentukan, opsi yang ditentukan kemudian akan diutamakan. Ketika pencatatan biner dinonaktifkan, variabel sistem log_bin diatur ke OFF.

jonnyjandles
sumber
0

Seperti yang saya tahu setelah memperbarui paket, file konfigurasi harus yang lama, jadi setelah pembaruan Anda memiliki file konfigurasi yang sama. Kalau tidak, Anda dapat membuat file konfigurasi kedua di jalur $ MYSQL_HOME / my.cnf. Yang ini untuk opsi khusus server dan yang saya tahu akan menimpa pengaturan di global /etc/my.cnf

Tamas Szasz
sumber
1
Ya, kebijakan default Debian tidak menimpa file konfigurasi di / etc. Tapi pertanyaan saya tepatnya bagaimana menimpa pengaturan log_bin dengan "nilai nol" TANPA mengomentari baris di /etc/mysql/my.cnf.
Nicolas Payart
skip-log-bin mematikan boolean yang ditetapkan di tempat lain
santiago arizti