怎么修?
ls -lh /root/docker/yml/nextcloud/db/binlog。*
-rw-rw---- 1 999 999 960M Aug 25 22:55 /root/docker/yml/nextcloud/db/binlog.000043
-rw-rw---- 1 999 999 5.5M Aug 25 23:52 /root/docker/yml/nextcloud/db/binlog.000044
-rw-rw---- 1 999 999 156M Aug 26 23:40 /root/docker/yml/nextcloud/db/binlog.000045
-rw-rw---- 1 999 999 260M Aug 28 15:10 /root/docker/yml/nextcloud/db/binlog.000046
-rw-rw---- 1 999 999 548M Sep 1 00:03 /root/docker/yml/nextcloud/db/binlog.000047
-rw-rw---- 1 999 999 593M Sep 4 11:28 /root/docker/yml/nextcloud/db/binlog.000048
-rw-rw---- 1 999 999 13M Sep 4 13:21 /root/docker/yml/nextcloud/db/binlog.000049
-rw-rw---- 1 999 999 529M Sep 9 22:20 /root/docker/yml/nextcloud/db/binlog.000050
-rw-rw---- 1 999 999 128 Sep 4 13:26 /root/docker/yml/nextcloud/db/binlog.index
Docker compose yml 数据库部分
services:
db:
image: mariadb:10.6
container_name: nextcloudDB
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW --expire_logs_days=2
volumes:
- ./db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=d`X'1B7Ss/=E;JxROOT
- MYSQL_PASSWORD=d`X'3B7SD/dE;Jx
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "10"
- ./db:/var/lib/mysql 在 ./db 中特别添加 ./ 用于备份
答案1
二进制日志用于数据恢复、复制和数据库监控。您可以清除旧日志。并引用此答案D B
您需要让 mysqld 为您完成此操作。以下是 mysqld 管理它的方式:
文件 mysql-bin.[index] 保存了 mysqld 已生成并自动轮换的所有二进制日志的列表。与 mysql-bin.[index] 一起清除 binlog 的机制包括:
PURGE BINARY LOGS TO 'binlogname';
PURGE BINARY LOGS BEFORE 'datetimestamp';
答案2
这使用和维护二进制日志MariaDB 知识库页面上有关于如何清除二进制日志的信息。
要删除服务器上的所有二进制日志文件,请运行重置主控命令。要删除特定日期时间之前或特定数量之前的所有二进制日志,请使用清除二进制日志。
该页面还解释了如何自动处理 binlog 保留。
日志文件也可以通过以下方式自动删除:expire_logs_days系统变量。默认情况下,此变量设置为 0(不删除),但可以设置为一个时间(以天为单位),在此时间之后,二进制日志文件将自动删除。只有在日志轮换时才会检查日志文件是否早于 expire_logs_days,因此,如果您的二进制日志填充缓慢,并且未达到最大 binlog 大小每天,您可能会看到较旧的日志文件仍被保留。您还可以通过运行刷新二进制日志定期进行。始终将 expire_logs_days 设置为高于任何可能的副本滞后。
在您的情况下,降低max_binlog_size
应该有助于更频繁地进行二进制日志轮换,从而减少保留的数据量。如果您在 中--max_binlog_size=100M
添加,MariaDB 服务器将在二进制日志超过 100MiB 后刷新它们。command
docker-compose.yml
正如文档中提到的,您可以手动运行FLUSH BINARY LOGS
命令来强制进行 binlog 轮换,这反过来会触发旧文件的清除。