[英]How to disable MySQL binlog on docker-compose
在运行执行许多数据库查询(更新/删除/插入)的软件的服务器上,MySQL 服务器在 docker-compose 设置中运行。
version: '3.7'
services:
database:
image: registry.var-lab.com/mysql/mysql:8.0.27
command:
- '--default-authentication-plugin=mysql_native_password'
- '--sql_mode='
- '--max_allowed_packet=1073741824'
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: db
MYSQL_USER: user
MYSQL_PASSWORD: iamsecure!11
volumes:
- ../database:/var/lib/mysql
- ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "-u", "symfony", "-p", "symfony", "localhost" ]
timeout: 20s
retries: 10
软件运行几天后,磁盘空间已满。 调查之后,我注意到 MySQL 持续将所有数据操作操作记录到../database
文件夹中的二进制日志文件中,该文件夹作为卷安装到 MySQL Docker 容器中。
如何在 docker-compose.yml 文件中禁用此日志记录操作?
在 MySQL 8.0 中设置log-bin=OFF
以禁用二进制日志。 阅读https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#option_mysqld_log-bin了解完整的详细信息。
您也可以让二进制日志在短时间内过期。 使用选项binlog-expire-logs-seconds=N
其中 N 表示如果日志文件早于 N 秒,它会在 mysqld 启动时自动删除,或者当日志滚动到新的日志文件时,或者当你执行刷新日志)。 阅读https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_binlog_expire_logs_seconds了解更多详细信息。
按照 Bill Karwin ( https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#option_mysqld_log-bin ) 已经提到的文档,我将以下命令添加到我的 docker-compose。 yml:
command:
- '--skip-log-bin'
我构建了容器,运行它,进入终端,启动 mysql 客户端并通过SHOW VARIABLES LIKE 'log_bin';
它起作用了:
mysql> SHOW VARIABLES LIKE 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | OFF |
+---------------+-------+
1 row in set (0.01 sec)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.