Désactiver la journalisation binaire MySQL avec la variable log_bin

35

Le fichier de configuration MySQL par défaut /etc/mysql/my.cnf installé par un paquet Debian utilisant APT définit souvent la variable log_bin, de sorte que binlog est activé:

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

Lorsque je veux désactiver la journalisation binaire sur une telle installation, commentez la ligne dans my.cnf fonctionne bien sûr, mais je me demande s’il existe un moyen de désactiver la journalisation binaire en définissant explicitement log_bin sur OFF, dans un style debian; un fichier inclus comme /etc/mysql/conf.d/myCustomFile.cnf, donc my.cnf par défaut n'est pas modifié et peut être facilement mis à jour par apt, si nécessaire.

J'ai essayé "log_bin = 0", "log_bin = OFF" ou "log_bin =" mais aucun ne fonctionne ...

Nicolas Payart
la source

Réponses:

42

C'est une vieille question, mais elle est apparue dans une recherche alors que j'essayais de mémoriser le nom correct de l'option. Alors, maintenant que j'ai compris, j'ajoute les détails ici.

La partie clé de la question est:

Je veux dire dans un fichier inclus comme /etc/mysql/conf.d/myCustomFile.cnf

Vous pouvez le faire à partir d'un fichier d'options inclus à l'aide de l'option skip-log-bin. Par exemple, vous pouvez créer /etc/mysql/conf.d/disable_binary_log.cnfavec le contenu suivant:

[mysqld]
skip-log-bin

Vous pouvez ajouter skip-un préfixe à d'autres options pour les désactiver également.

John Dalton
la source
1
Génial, exactement ce à quoi je m'attendais. Cela fonctionne bien sur MariaDB 10.0 au moins. Merci beaucoup.
Nicolas Payart
7

Dans MySQL 8, c'est l’option disable_log_bin qui doit être fournie sans aucun paramètre dans le my.cnffichier de la [mysqld]section.

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

Vous pouvez le voir comme ça, log_bin ne devrait pas accepter les paramètres, soit vous mettez:

log_bin

ou rien du tout, car c'est un paramètre booléen.

Toutefois, si une valeur est définie, les journaux sont activés et interprétés comme le nom de base binlog.

Les options de journalisation ont pour tradition de ne pas être trop intuitives et de changer de format de version à version (je vous regarde, journal lent).

Jynus
la source
Cela ne marche pas sur MariaDB
MechanTOurS
Étant donné que j'utilise MariaDB et que cette configuration est identique sur ma configuration, je suis très confiant que cela fonctionne.
Jynus
4

Si vous ne répliquez pas, vous pouvez désactiver le journalisation bin en modifiant votre fichier my.ini ou my.cnf. Ouvrez votre fichier my.ini ou /etc/my.cnf (/etc/mysql/my.cnf), entrez:

# vi /etc/my.cnf

Recherchez une ligne qui se lit "log_bin" et supprimez-la ou commentez-la comme suit:

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

Vous devez également supprimer ou commenter les lignes suivantes:

#expire_logs_days = 10

#max_binlog_size = 100M

Fermez et enregistrez le fichier. Enfin, redémarrez le serveur mysql:

# service mysql restart

Mahesh Patil
la source
1
Je pense que l'OP comprend cela, c'est pourquoi il a écrit: "Je veux dire dans un fichier inclus comme /etc/mysql/conf.d/myCustomFile.cnf, donc mon.cnf par défaut n'est pas modifié"
Peter V. Mørch,
1

Extrait du manuel pour MariaDB ( https://mariadb.com/kb/en/library/activating-the-binary-log/ )

Si vous ne spécifiez pas de nom (pouvant éventuellement inclure un chemin absolu), la valeur par défaut sera datadir / log-basename-bin, datadir / mysql-bin ou datadir / mariadb-bin.

cependant,

Les clients dotés du privilège SUPER peuvent désactiver et réactiver le journal binaire de la session en cours en définissant la variable sql_log_bin.

SET sql_log_bin = 0;

SET sql_log_bin = 1;

Cependant, si vous dites qu'il a été activé par défaut lors de l'installation, vous devez le désactiver en supprimant la ligne de votre fichier my.cnf, puis en redémarrant mysqld. Vous pouvez également purger les données binaires ( https://dev.mysql.com/doc/refman/5.6/en/purge-binary-logs.html ).

PURGE BINARY LOGS

Enfin, comme le mentionne l'autre réponse, dans MySQL 8, il est possible de désactiver explicitement la journalisation binaire du fichier de configuration à l'aide de l' option --skip-log-binou --disable-log-binde la section [mysqld] du fichier de configuration.

Pour désactiver la journalisation binaire, vous pouvez spécifier l' option --skip-log-binou --disable-log-binau démarrage. Si l'une ou l'autre de ces options est spécifiée et --log-binest également spécifiée, l'option spécifiée ultérieurement est prioritaire. Lorsque la journalisation binaire est désactivée, la variable système log_bin est définie sur OFF.

Jonnyjandles
la source
0

Comme je le sais après la mise à jour d'un paquet, le fichier de configuration doit être l'ancien. Par conséquent, après la mise à jour, vous avez les mêmes fichiers de configuration. Sinon, vous pouvez créer un deuxième fichier de configuration dans le chemin $ MYSQL_HOME / my.cnf. Celui-ci concerne les options spécifiques au serveur et, comme je le sais, écrasera les paramètres dans le fichier global /etc/my.cnf.

Tamas Szasz
la source
1
Oui, la politique par défaut de Debian ne remplace pas un fichier de configuration dans / etc. Mais ma question était précisément de savoir comment remplacer le paramètre log_bin par une "valeur NULL" SANS commenter la ligne dans le fichier /etc/mysql/my.cnf.
Nicolas Payart
skip-log-bin désactive les booléens définis ailleurs
santiago arizti