MySQL 歷史 binlog 日誌處理

2022-02-16 04:44:50 字數 2992 閱讀 7635

目錄

一、問題的引出

mysql binlog 如果不清理會占用伺服器的空間,那麼怎麼處理binlog日誌呢

二、解決辦法

1、物理刪除

➜ bob@bob-pc  ~   df -th

檔案系統 型別 容量 已用 可用 已用% 掛載點

udev devtmpfs 7.8g 0 7.8g 0% /dev

tmpfs tmpfs 1.6g 2.4m 1.6g 1% /run

/dev/sda1 ext4 110g 101g 3.6g 97% /

tmpfs tmpfs 7.8g 399m 7.4g 6% /dev/shm

tmpfs tmpfs 5.0m 4.0k 5.0m 1% /run/lock

tmpfs tmpfs 7.8g 0 7.8g 0% /sys/fs/cgroup

/dev/sdb1 ext4 458g 35g 400g 8% /data/mnt

tmpfs tmpfs 1.6g 68k 1.6g 1% /run/user/1000

➜ bob@bob-pc  /data/mnt/mysql_data  sudo cat bin.index

./bin.000112

./bin.000113

./bin.000114

./bin.000115

./bin.000116

2、邏輯刪除
(root@localhost:mysql3306.sock)[(none)]> show binary logs;

+------------+-----------+

| log_name | file_size |

+------------+-----------+

| bin.000112 | 0 |

| bin.000113 | 0 |

| bin.000114 | 217 |

| bin.000115 | 194 |

| bin.000116 | 194 |

+------------+-----------+

5 rows in set (0.00 sec)

(root@localhost:mysql3306.sock)[(none)]> show variables like '%expire_logs_days%';

+------------------+-------+

| variable_name | value |

+------------------+-------+

| expire_logs_days | 7 |

+------------------+-------+

1 row in set (0.00 sec)

(root@localhost:mysql3306.sock)[(none)]> set global expire_logs_days = 4;

query ok, 0 rows affected (0.00 sec)

這裡修改/etc/my.cnf 重啟mysql

3、手動清除binlog檔案

登入機器 執行 刪除3天前的mysql binlog日誌

(root@localhost:mysql3306.sock)[(none)]> purge master logs before date_sub(current_date, interval 3 day);

query ok, 0 rows affected (0.01 sec)

(root@localhost:mysql3306.sock)[(none)]> show master logs ;

+------------+-----------+

| log_name | file_size |

+------------+-----------+

| bin.000112 | 0 |

| bin.000113 | 0 |

| bin.000114 | 217 |

| bin.000115 | 194 |

| bin.000116 | 194 |

+------------+-----------+

刪除mysql-bin.000114 之前的binlog  這裡是個開區間(-無窮,bin.000114)

(root@localhost:mysql3306.sock)[(none)]> purge master logs to 'bin.000114';

query ok, 0 rows affected, 2 warnings (0.11 sec)

清除了執行,一下命令顯示已經刪除了

(root@localhost:mysql3306.sock)[(none)]> show master logs;

+------------+-----------+

| log_name | file_size |

+------------+-----------+

| bin.000114 | 217 |

| bin.000115 | 194 |

| bin.000116 | 194 |

+------------+-----------+

3 rows in set (0.00 sec)

參考

MySQL開啟binlog日誌

mysql開啟binlog日誌很簡單,只需要找到配置檔案,在配置檔案中的 mysqld 配置段新增下面一句話就可以了 log bin mysql bin 這樣就開啟了mysql的binlog日誌。使用下面的sql語句在mysql的客戶端可以檢視binlog日誌是否開啟 show master log...

mysql 匯出binlog日誌

首先你得開啟了mysql的bin log.找到你的mysqlbinlog。執行 find name mysqlbinlog 檢視mysql server上的二進位制日誌 mysql showbinarylogs 將binlog檔案匯出為sql檔案 usr local src mysql 5.7.10...

Mysql開啟binlog日誌

binlog介紹 binlog是二進位制檔案 binlog記錄了資料庫的所有dml操作 通過binlog日誌可以進行資料恢復操作 binlog配置 mysql資料庫檢視binlog日誌是否開啟 show variables like log bin mysql show variables like...