Vô hiệu hóa ghi nhật ký nhị phân MySQL với biến log_bin


35

Tệp cấu hình MySQL mặc định /etc/mysql/my.cnf được cài đặt bởi một số gói debian sử dụng APT thường đặt biến log_bin, vì vậy binlog được bật:

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

Khi tôi muốn vô hiệu hóa ghi nhật ký nhị phân khi cài đặt như vậy, hãy bình luận dòng trong my.cnf hoạt động, nhưng tôi tự hỏi liệu có cách nào để vô hiệu hóa ghi nhật ký nhị phân bằng cách đặt rõ ràng log_bin thành TẮT, theo kiểu debian, ý tôi là một tệp được bao gồm như /etc/mysql/conf.d/myCustomFile.cnf, vì vậy my.cnf mặc định không bị thay đổi và có thể dễ dàng cập nhật bằng apt, nếu cần.

Tôi đã thử "log_bin = 0", "log_bin = OFF" hoặc "log_bin =" nhưng không có gì hoạt động ...

Câu trả lời:


42

Đây là một câu hỏi cũ, nhưng nó đã xuất hiện trong một tìm kiếm trong khi tôi đang cố gắng chạy bộ nhớ của mình về tên tùy chọn chính xác và vì vậy bây giờ tôi đã nhận ra rằng tôi đang thêm các chi tiết ở đây.

Phần chính của câu hỏi là:

Ý tôi là trong một tệp được bao gồm như /etc/mysql/conf.d/myCustomFile.cnf

Bạn có thể làm điều này từ một tệp tùy chọn đi kèm bằng cách sử dụng tùy chọn skip-log-bin. Ví dụ: bạn có thể tạo /etc/mysql/conf.d/disable_binary_log.cnfvới các nội dung sau:

[mysqld]
skip-log-bin

Bạn có thể thêm skip-làm tiền tố vào các tùy chọn khác để vô hiệu hóa chúng theo cách này.


1
Tuyệt vời, chính xác những gì tôi đã mong đợi. Điều đó hoạt động tốt trên MariaDB 10.0 ít nhất. Cảm ơn rất nhiều.
Nicolas Payart

7

Trong MySQL 8, đó là tùy chọn vô hiệu hóa_log_bin phải cung cấp mà không có bất kỳ tham số nào trong my.cnftệp trong [mysqld]phần.

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

5

Bạn có thể thấy nó như thế này, log_bin không nên chấp nhận tham số, hoặc bạn đặt:

log_bin

hoặc không có gì cả, vì nó là một tham số boolean.

Tuy nhiên, nếu một giá trị được đặt, nhật ký sẽ được bật và giá trị được hiểu là tên cơ sở binlog.

Tùy chọn nhật ký có một lịch sử không quá trực quan và thay đổi định dạng của nó từ phiên bản này sang phiên bản khác (tôi đang nhìn bạn, nhật ký chậm).


Nó không hoạt động trên MariaDB
MechanTOurS

Vì tôi sử dụng MariaDB và tôi có cùng dòng trên cấu hình của mình, tôi rất tự tin rằng nó hoạt động.
jynus

4

Nếu bạn không sao chép, bạn có thể vô hiệu hóa binlogging bằng cách thay đổi tệp my.ini hoặc my.cnf của bạn. Mở my.ini hoặc /etc/my.cnf (/etc/mysql/my.cnf), nhập:

# vi /etc/my.cnf

Tìm một dòng đọc "log_bin" và xóa hoặc nhận xét nó như sau:

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

Bạn cũng cần xóa hoặc nhận xét các dòng sau:

#expire_logs_days = 10

#max_binlog_size = 100M

Đóng và lưu tệp. Cuối cùng, khởi động lại máy chủ mysql:

# service mysql restart


1
Tôi nghĩ rằng OP hiểu điều này, đó là lý do tại sao anh ấy đã viết: "Ý tôi là trong một tệp được bao gồm như /etc/mysql/conf.d/myCustomFile.cnf, vì vậy mặc định my.cnf không thay đổi"
Peter V. Mørch

1

Từ Hướng dẫn dành cho MariaDB ( https://mariadb.com/kb/en/l Library / activating- the- binary-log / )

Nếu bạn không cung cấp tên (có thể, tùy chọn, bao gồm một đường dẫn tuyệt đối), mặc định sẽ là datadir / log-basename-bin, datadir / mysql-bin hoặc datadir / mariadb-bin

Tuy nhiên,

Các khách hàng có đặc quyền SUPER có thể vô hiệu hóa và kích hoạt lại nhật ký nhị phân cho phiên hiện tại bằng cách đặt biến sql_log_bin.

SET sql_log_bin = 0;

SET sql_log_bin = 1;

Tuy nhiên, nếu bạn nói rằng nó được bật theo mặc định trong khi cài đặt, bạn phải vô hiệu hóa bằng cách xóa dòng khỏi tệp my.cnf của bạn và sau đó khởi động lại mysqld. Bạn cũng có thể lọc dữ liệu nhị phân ( https://dev.mysql.com/doc/refman/5.6/en/purge-binary-logs.html )

PURGE BINARY LOGS

Cuối cùng, như câu trả lời của người đăng khác đề cập, trong MySQL 8 có một tùy chọn tắt rõ ràng việc ghi nhật ký nhị phân khỏi tệp cấu hình bằng cách sử dụng --skip-log-binhoặc --disable-log-bintùy chọn trong phần [mysqld] của tệp cấu hình.

Để vô hiệu hóa ghi nhật ký nhị phân, bạn có thể chỉ định --skip-log-binhoặc --disable-log-bintùy chọn khi khởi động. Nếu một trong hai tùy chọn này được chỉ định và --log-bincũng được chỉ định, tùy chọn được chỉ định sau sẽ được ưu tiên. Khi ghi nhật ký nhị phân bị vô hiệu hóa, biến hệ thống log_bin được đặt thành TẮT.


0

Theo tôi biết sau khi cập nhật một gói, tệp cấu hình phải là tệp cũ, vì vậy sau khi cập nhật, bạn có cùng tệp cấu hình. Nếu không, bạn có thể tạo tệp cấu hình thứ hai trong đường dẫn $ MYSQL_HOME / my.cnf. Cái này dành cho các tùy chọn cụ thể của máy chủ và như tôi biết sẽ ghi đè lên các cài đặt trong toàn cầu /etc/my.cnf


1
Có, chính sách mặc định của Debian không ghi đè lên tệp cấu hình trong / etc. Nhưng câu hỏi của tôi là chính xác làm thế nào để ghi đè cài đặt log_bin bằng "giá trị null" mà KHÔNG bình luận dòng trong /etc/mysql/my.cnf.
Nicolas Payart

Skip-log-bin tắt
booleans
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.