Log_bin değişkeni ile MySQL ikili günlük kaydını devre dışı bırakın


35

Varsayılan MySQL yapılandırma dosyası /etc/mysql/my.cnf, APT kullanarak bazı debian paketleri tarafından kurulur, genellikle log_bin değişkenini ayarlar, böylece binlog etkindir:

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

Bu tür bir kurulumda ikili günlük kaydını devre dışı bırakmak istediğimde, elbette my.cnf'in çalışmalarında satırı yorumlayın, ancak açık bir şekilde log_bin'i KAPALI olarak ayarlayarak ikili günlük kaydını devre dışı bırakmanın bir yolu olup olmadığını merak ediyorum, demek istediğim, /etc/mysql/conf.d/myCustomFile.cnf gibi dahil bir dosyadır, bu nedenle varsayılan my.cnf değişmez ve gerektiğinde apt ile kolayca güncellenebilir.

"Log_bin = 0", "log_bin = OFF" veya "log_bin =" denedim ama hiçbiri çalışmıyor ...

Yanıtlar:


42

Bu eski bir soru, ama doğru seçenek adı hakkında hafızamı değiştirmeye çalışırken bir arama geldi ve şimdi bunu anladım ki detayları buraya ekliyorum.

Sorunun kilit kısmı:

/Etc/mysql/conf.d/myCustomFile.cnf gibi dahil edilmiş bir dosyada

Bunu seçeneği kullanarak dahil edilmiş bir seçenek dosyasından yapabilirsiniz skip-log-bin. Örneğin /etc/mysql/conf.d/disable_binary_log.cnf, aşağıdaki içeriklerle oluşturabilirsiniz :

[mysqld]
skip-log-bin

skip-Bunları da bu şekilde devre dışı bırakmak için diğer seçeneklere önek olarak ekleyebilirsiniz .


1
Harika, tam olarak ne bekliyordum. Bu, en azından MariaDB 10.0'da iyi çalışıyor. Çok teşekkürler.
Nicolas Payart 11:15

7

MySQL 8'de , bölümdeki dosyada herhangi bir parametre olmadan sağlanan disable_log_bin seçeneğidir .my.cnf[mysqld]

[mysqld]
disable_log_bin
some-other-option = any-value

5

Bunu böyle görebilirsin, log_bin parametreleri de kabul etmemeli, ikisini de:

log_bin

ya da hiç bir şey, çünkü bir boole parametresidir.

Ancak, bir değer ayarlanmışsa, günlükler etkinleştirilir ve değer, binlog temel adı olarak yorumlanır.

Günlük seçenekleri çok sezgisel olmamak ve biçimini sürümden sürüme değiştirmek gibi bir geçmişe sahiptir (Sana bakıyorum, yavaş günlük).


MariaDB üzerinde çalışmıyor
MechanTOurS

MariaDB kullandığım ve konfigürasyonumdaki aynı çizgiye sahip olduğum için, çalıştığından eminim.
jynus

4

Çoğaltmıyorsanız, my.ini veya my.cnf dosyanızı değiştirerek binloglamayı devre dışı bırakabilirsiniz. My.ini veya /etc/my.cnf (/etc/mysql/my.cnf) dosyasını açın, şunu girin:

# vi /etc/my.cnf

"Log_bin" yazan bir satır bulun ve aşağıdaki gibi kaldırın veya yorum yapın:

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

Ayrıca aşağıdaki satırları kaldırmanız veya yorum yapmanız gerekir:

#expire_logs_days = 10

#max_binlog_size = 100M

Dosyayı kapatın ve kaydedin. Son olarak, mysql sunucusunu yeniden başlatın:

# service mysql restart


1
OP'nin bunu anladığını düşünüyorum, bu yüzden şöyle yazdı: "/etc/mysql/conf.d/myCustomFile.cnf gibi dahil edilmiş bir dosyada kastediyorum, bu yüzden varsayılan my.cnf değişmedi"
Peter V. Mørch

1

Gönderen Manuel mariadb için ( https://mariadb.com/kb/en/library/activating-the-binary-log/ )

Bir ad belirtmezseniz (isteğe bağlı olarak, mutlak bir yol içerebilir), varsayılan, datadir / log-basename-bin, datadir / mysql-bin veya datadir / mariadb-bin olacaktır.

Ancak,

SUPER ayrıcalığına sahip olan istemciler, sql_log_bin değişkenini ayarlayarak geçerli oturumun ikili günlüğünü devre dışı bırakıp yeniden etkinleştirebilirler.

SET sql_log_bin = 0;

SET sql_log_bin = 1;

Ancak, yükleme sırasında varsayılan olarak etkin olduğunu düşünüyorsanız, satırı my.cnf dosyanızdan kaldırarak devre dışı bırakmanız ve ardından mysqld programını yeniden başlatmanız gerekir. İkili verileri de temizleyebilirsiniz ( https://dev.mysql.com/doc/refman/5.6/en/purge-binary-logs.html )

PURGE BINARY LOGS

Son olarak, diğer posterin cevabından da bahsettiğim gibi, MySQL 8'de , config dosyasının [mysqld] bölümündeki --skip-log-binveya --disable-log-binseçeneklerini kullanarak ikili günlük kaydını yapılandırma dosyasından açıkça kapatmak için bir seçenek vardır .

İkili günlük kaydını devre dışı bırakmak için , başlangıçta --skip-log-binveya --disable-log-binseçeneğini belirtebilirsiniz . Bu seçeneklerden herhangi biri belirtilmişse ve --log-binayrıca belirtilmişse, daha sonra belirtilen seçenek öncelikli olur. İkili günlük kaydı devre dışı bırakıldığında, log_bin sistem değişkeni OFF olarak ayarlanır.


0

Bir paketi güncelledikten sonra bildiğim gibi, config dosyası eski olmalı, bu yüzden güncelleme sonrasında aynı config dosyalarına sahip olacaksınız. Aksi halde, $ MYSQL_HOME / my.cnf yolunda ikinci bir yapılandırma dosyası oluşturabilirsiniz. Bu, sunucuya özel seçenekler içindir ve bildiğim gibi, global /etc/my.cnf içindeki ayarların üzerine yazacak


1
Evet, Debian varsayılan politikası / etc içindeki bir config dosyasının üzerine yazmaz. Ancak sorum tam olarak /etc/mysql/my.cnf içindeki satırı yorumlamaksızın "boş değer" olan log_bin ayarının üzerine yazmaktı.
Nicolas Payart

skip-log-bin turns off booleans başka bir yere ayarla
santiago arizti
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.