Directadmin Phân vùng /var/lib/mysql/ chiếm nhiều dung lượng

11:19 Sáng - 03/05/2020
2 Bình luận
2443
bởi CỔ Ý Concept

/var is full hay còn được gọi là phân vùng var trên linux bị đầy.

Trong quá trình hoạt động của một hệ thống Directadmin đôi lúc chúng ta không tránh khỏi những vấn đề khi bị đầy dung lượng.

Như trong hình bên dưới là hệ thống Directadmin của mình, mình đã mắc sai lầm khi để CentOS tự chia phân vùng(partition) mặc định. Và nó chỉ chia phân vùng / chỉ 50GB mà thôi.

/var is full phân vùng /var chiếm nhiều dung lượng Hình này là sau khi mình đã xử lý vấn đề xong, trước đó / của mình chiếm đến 95% Directadmin
Hình này là sau khi mình đã xử lý vấn đề xong, trước đó / của mình chiếm đến 95%

Xem qua hình chắc bạn cũng nhận ra là phân vùng “/” của mình chỉ có 50GB còn “/home” thì còn trống khá nhiều.

Mặc định tất cả các Database Mysql sẽ được lưu trong thư mục /var/lib/mysql/ và mình đã gặp vấn đề lớn đó là có quá nhiều Database nặng đến rất nặng.

Hôm nay mình sẽ hướng dẫn các bạn cách giải phóng dung lượng cho thư mục /var/lib/mysql/ mà không cần phải thay đổi được dẫn lưu database mặc định. Trước khi tìm ra cách này mình đã thử thay đổi được dẫn mặc định nhưng gặp rất nhiều lỗi, đến mức phải nhờ sự trợ giúp của recovery “innodb_force_recovery = 1 & log_bin=ON” mới có thể bật lại mysqld.

Cách xử lý phân vùng /var bị đầy khi thư mục chứa database(/var/lib/mysql)chiếm quá nhiều dung lượng hệ thống chạy Directadmin (/var is full):

Bước 1: Tạo một thư mục mysql tại /home và phân quyền với user và group đều là mysql

cd /home
mkdir mysql
chown mysql:mysql mysql
cd mysql

Giải thích các lệnh trên:
  1. Di chuyển đến “/home”
  2. Tạo một thư mục có tên “mysql”
  3. Phân quyền user và group là mysql cho thư mục mới tạo
  4. Di chuyển vào thư mục mysql

 

Bước 2: Dừng dịch vụ mysqld

perl -pi -e ‘s/mysqld=ON/mysqld=OFF/’ /usr/local/directadmin/data/admin/services.status
/sbin/service mysqld stop

Giải thích các lệnh trên:
  1. Chuyển trạng thái khởi động cùng hệ thống của dịch vụ mysqld từ “ON” sang “OFF”
  2. Dừng dịch vụ mysql

Tìm hiểu thêm về HƯỚNG DẪN START / STOP / RESTART / ENABLE / RELOAD MYSQL & MARIADB TRONG LINUX

Bước 3: Di chuyển tất cả dữ liệu từ /var/lib/mysql/ đến /home/mysql và tạo lại liên kết  qua nguồn dữ liệu mới

cd /home/mysql
cp -Rp /var/lib/mysql/* .
cd /var/lib
mv mysql mysql_old
ln -s /home/mysql ./mysql

Giải thích các lệnh trên:
  1. Di chuyển đến thư mục “/home/mysql”
  2. Sao chép tất cả dữ liệu từ “/var/lib/mysql/” đến thư mục bạn đang đứng(/home/mysql), giữ nguyên thuộc tính và quyền.
  3. Di chuyển đến thư mục “/var/lib”
  4. Đổi tên thư mục “mysql” thành “mysql_old” trong “/var/lib”
  5. Tạo liên kết tượng trưng “/var/lib/mysql” đến “/home/mysql”
Sau khi làm xong bước 3 bạn thử kiểm tra liên kết đã chính xác chưa nhé, ta dùng lệnh sau:

ll /var/lib/

Nếu hiện thị thư mục mysql như hình sau là bạn đã thành công, nếu chưa chính xác bạn xem lại các bước trên xem đã làm nhầm lẫn ở bước nào.

/var is full Phân vùng /var/lib/mysql/ chiếm nhiều dung lượng
Thư mục mysql mới được link với thư mục mysql cũ, nhằm giúp / giảm dung lượng bị chiếm dụng.

 

Bước 4: Bật lại dịch vụ mysqld và cho phép khởi động cùng hệ thống

/sbin/service mysqld start
perl -pi -e ‘s/mysqld=OFF/mysqld=ON/’ /usr/local/directadmin/data/admin/services.status

Giải thích các lệnh trên:
  1. Bật lại dịch vụ mysql
  2. Chuyển trạng thái khởi động cùng hệ thống của dịch vụ mysqld từ “OFF” sang “ON”

Sau khi hoàn thành bước 4, các bạn kiểm tra các dịch vụ đã hoạt động bình thường hay chưa, nếu mọi thứ đã hoạt động bình thường các bạn có thể xóa thư mục /var/lib/mysql_old với lệnh sau:

rm -rf /var/lib/mysql_old

Như vậy là các bạn đã chuyển toàn bộ dữ liệu từ /var/lib/mysql sang phân vùng mới là /home/mysql nhưng dịch vụ mysql vẫn hiểu và hoạt động bình thường. Và vấn đề “/var is full” đã được xử lý xong.
Chúc các bạn thành công.
Nếu thấy bài viết này hay các bạn đánh giá 5 sao giúp mình nhé và chia sẻ rộng rãi đến các anh em IT khác ?

Các bài viết nên xem thêm nếu sử dụng hệ thống chạy Directadmin:

Cài đặt OPcache Directadmin chạy CustomBuild 2.0

Thay đổi cấu hình OPcache Directadmin(config opcache directadmin)

Bật tính năng chạy nhiều phiên bản PHP trên Server/VPS Directadmin

Directadmin Phân vùng /var/lib/mysql/ chiếm nhiều dung lượng

Kiểm tra phiên bản CustomBuild đang sử dụng (check custombuild version)

Nâng cấp phiên bản CustomBuild từ 1.x lên 2.0

Tác giả: Cổ Ý Concept

5/5 - (1 bình chọn)
    • 01/12/2019 16:02

    Xin chào admin,
    Tôi có một câu hỏi, và mong nhận được phản hồi từ bạn
    Vì tôi là một người mới nên mong rằng bạn thông cảm

    Tôi cũng gặp tình trạng tương tự, khi thư mục /var/lib/mysql của tôi có nhiều file nặng, tôi nghĩ rằng thư mục var này chứa các file có size thay đổi
    vì vậy tôi đã vô tình xoá 1 file đuôi .ibd

    Vậy bạn có thể cho tôi hỏi rằng làm như vậy có được phép không và liệu rằng nó có được cập nhật mới lại không
    Cảm ơn bạn!

Để lại lời nhắn của bạn
  • Đánh giá

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

Scroll Top