MariaDB Docker lagre db/binlog.* 檔案。磁碟溢出直至故障點

MariaDB Docker lagre db/binlog.* 檔案。磁碟溢出直至故障點

怎麼修?

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 撰寫 yml DB 部分

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 保留。

日誌檔案也可以透過以下命令自動刪除過期日誌天數系統變數。預設設定為 0(不刪除),但可以設定為一個時間(以天為單位),之後將自動刪除二進位日誌檔案。僅在日誌輪轉時才會檢查日誌檔案是否早於 expire_logs_days,因此,如果您的二進位日誌只是緩慢填滿並且未達到最大二進位日誌大小每天,您可能會看到較舊的日誌檔案仍在保留。您也可以透過執行來強制日誌輪換,以便到期刪除刷新二進位日誌定期進行。始終將 expire_logs_days 設為高於任何可能的副本滯後。

在您的情況下,降低max_binlog_size應該有助於更頻繁地進行二進位日誌輪換,這反過來又會減少保留的資料量。如果您新增--max_binlog_size=100Mcommanddocker-compose.yml,一旦二進位日誌超過 100MiB,MariaDB 伺服器就會刷新它們。

如文件中所提到的,您可以手動執行FLUSH BINARY LOGS命令來強制進行二進位日誌輪換,這反過來會觸發舊文件的清除。

相關內容