Cách kiểm tra dung lượng ổ đĩa VPS , Cloud Server

Tình trạng:

  • web chậm
    Lỗi mất kết nối dữ liệu
    Lỗi 502

Cách kiểm tra

  • Xem dung lượng trong cpanel, cyberpanel, ploi,.. 
  • Kết nối ssh với quyền root ( sudo su) ( có nhập mật khẩu root hoặc mật khẩu sudo từ ploi)
  • Cd / ( về thư mục gốc)
  • Chạy lệnh du -h --max-depth=1 /home/yourname
  • Kiểm tra và xoá file binlog
  • Trước khi xoá dùng lệnh restar mysql: sudo systemctl restart mysql
  • Trường hợp đầy ở đĩa, restar không thành công thì khởi động lại server
  • Lệnh: sudo rm /var/lib/mysql/mysql-bin.*
  • Lệnh: sudo rm /var/lib/mysql/binlog.*

Các file binlog.* (binary logs) trong thư mục /var/lib/mysql là log ghi lại mọi thay đổi database (INSERT, UPDATE, DELETE…) để phục vụ:

  • Replication (master → slave)

  • Point-in-time recovery (khôi phục dữ liệu đến 1 thời điểm cụ thể)

Vì vậy, nếu bật binlog mà không cấu hình xoá tự động, file sẽ phình to và chiếm đầy ổ đĩa.

✅ Cách xử lý an toàn

1. Kiểm tra dung lượng binlog hiện tại

sudo du -sh /var/lib/mysql/binlog.*

Hoặc xem danh sách:

sudo mysql -e "SHOW BINARY LOGS;"

2. Xoá binlog cũ bằng MySQL command (đúng chuẩn)

sudo mysql -e "PURGE BINARY LOGS BEFORE NOW() - INTERVAL 7 DAY;"

→ Giữ binlog 7 ngày, xóa phần còn lại.

Hoặc xoá toàn bộ đến file hiện tại:

sudo mysql -e "RESET MASTER;"

⚠️ Lệnh này sẽ xoá tất cả binlog → nếu bạn không dùng replication, OK.
Nếu có slave → không được dùng.


3. Thiết lập tự động xoá binlog (khuyến nghị)

Mở file my.cnf:

sudo nano /etc/mysql/my.cnf # hoặc /etc/mysql/mysql.conf.d/mysqld.cnf

Thêm (hoặc sửa):

[mysqld] expire_logs_days = 7 binlog_expire_logs_seconds = 604800 # MySQL 8+ chuẩn hơn

→ Giữ log 7 ngày tự động xoá.

Restart MySQL:

sudo systemctl restart mysql

4. Nếu bạn không dùng replication + không cần binlog

➜ Có thể tắt hoàn toàn (giảm disk đáng kể)

Edit /etc/mysql/mysql.conf.d/mysqld.cnf:

[mysqld] skip-log-bin

Hoặc comment dòng:

# log-bin=mysql-bin

Rồi restart:

sudo systemctl restart mysql

⚠️ Tắt binlog = không thể khôi phục theo thời gian (PITR).
Nhưng với 99% server nhỏ / VPS không replication → tắt là hợp lý.


✅ Kiểm tra dung lượng free sau khi xóa

df -h

🚨 CẢNH BÁO

Tình huống Có thể xoá binlog không?
Không dùng replication ✅ Xoá hết, OK
Dùng replication (master → slave) ⚠️ Phải chắc slave đã đọc xong
Chạy backup PITR ⚠️ Đừng xoá nếu chưa backup xong
VPS SSD nhỏ đầy ổ ✅ Nhưng setup auto-expire ngay

📌 Gợi ý tối ưu thêm

  1. Bật expire_logs_days để tự dọn

  2. Giảm binlog_size nếu quá lớn

  3. Dùng mysqldump + cron thay cho binlog nếu chỉ cần backup

Bạn có thấy bài viết này hữu ích không?