Bài đăng

Hướng Dẫn Toàn Diện: Di Chuyển Dữ Liệu MariaDB Và Khắc Phục Lỗi Không Khởi Động Được Trên DirectAdmin

Hướng Dẫn Toàn Diện: Di Chuyển Dữ Liệu MariaDB Và Khắc Phục Lỗi Không Khởi Động Được Trên DirectAdmin


image.png

Khi máy chủ cạn kiệt dung lượng ở phân vùng gốc, việc di chuyển thư mục dữ liệu của MariaDB (datadir) sang phân vùng khác (ví dụ: /home/mysql) là một giải pháp phổ biến. Tuy nhiên, quá trình này rất dễ phát sinh lỗi liên quan đến quyền truy cập, socket, hoặc khởi động thất bại do dữ liệu chưa đồng bộ xong.

Bài viết này sẽ hướng dẫn bạn quy trình chuẩn xác nhất để thực hiện công việc này trên hệ thống sử dụng DirectAdmin.

Bước 1: Đồng Bộ Dữ Liệu An Toàn Với Rsync

Lỗi phổ biến nhất khiến MariaDB không thể khởi động sau khi đổi thư mục là do dữ liệu vẫn đang trong quá trình sao chép hoặc bị lỗi do gián đoạn kết nối SSH. Để khắc phục, bạn cần sử dụng rsync chạy ngầm.

Sử dụng lệnh sau để sao chép dữ liệu giữ nguyên toàn bộ quyền (owner, group, permission) và chạy nền an toàn:

Bash
nohup ionice -c2 -n7 nice -n 19 rsync -aHAXvh --numeric-ids --ignore-existing --info=progress2 /home1/home/ /home/ > /root/rsync_home.log 2>&1 &

Các cách kiểm tra tiến độ rsync:

  • Theo dõi log trực tiếp: tail -f /root/rsync_home.log

  • Kiểm tra xem rsync còn chạy không: pgrep -af rsync

  • Đếm số file còn lại cần kiểm tra: grep "to-check" /root/rsync_home.log | tail

Lưu ý Quan Trọng: Tuyệt đối không khởi động lại dịch vụ MariaDB trong lúc tiến trình rsync vẫn đang diễn ra để tránh hỏng hóc cơ sở dữ liệu.

Bước 2: Thiết Lập Quyền Sở Hữu Và SELinux

Sau khi rsync đã báo hoàn tất, bạn cần đảm bảo thư mục đích thuộc đúng quyền sở hữu của MariaDB/MySQL.

1. Cấp quyền sở hữu thư mục:

Bash
chown -R mysql:mysql /home/mysql

2. Cập nhật nhãn SELinux (Nếu máy chủ bật SELinux):

Bash
restorecon -Rv /home/mysql

Bước 3: Chuẩn Bị Thư Mục Chứa PID Và Socket

Trong quá trình khởi động, MariaDB cần ghi file .pid.sock. Cấu hình mặc định có thể trỏ tới nhiều nơi khác nhau gây xung đột (như /var/run/mysqld hoặc /run/mysql). Để nhất quán, hãy tạo thư mục chuẩn:

Bash
mkdir -p /run/mysql
chown mysql:mysql /run/mysql
chmod 755 /run/mysql

Bước 4: Cập Nhật Cấu Hình MariaDB Và DirectAdmin

Bạn cần sửa hai file cấu hình quan trọng để đảm bảo cả hệ thống MariaDB và DirectAdmin đều sử dụng chung một cấu hình.

1. Chỉnh sửa file /etc/my.cnf:

Thêm hoặc sửa khối [mysqld] với đường dẫn mới:

Ini, TOML
[mysqld]
datadir=/home/mysql
socket=/run/mysql/mysql.sock
pid-file=/run/mysql/mysqld.pid
log-error=/home/mysql/mysqld.log

2. Chỉnh sửa file /etc/my.cnf.d/directadmin-socket.cnf:

Điều chỉnh đường dẫn socket để DirectAdmin có thể kết nối được cơ sở dữ liệu:

Ini, TOML
[client]
socket=/run/mysql/mysql.sock

Bước 5: Khởi Động Dịch Vụ Và Kiểm Tra

Sau khi đã hoàn tất các cấu hình, tiến hành nạp lại systemd và khởi động MariaDB:

Bash
systemctl daemon-reload
systemctl restart mariadb
systemctl status mariadb

Nếu trạng thái hiển thị Active (running), quá trình đã thành công.

Cách đối chiếu dữ liệu phòng hờ thiếu sót:

Để chắc chắn MariaDB đã nhận đủ các database trong thư mục mới, hãy chạy lệnh liệt kê database thông qua tài khoản quản trị của DirectAdmin (da_admin):

Bash
mysql -uda_admin -p -e "SHOW DATABASES;"

(Bạn có thể lấy mật khẩu của da_admin bằng lệnh: grep '^passwd=' /usr/local/directadmin/conf/mysql.conf | cut -d= -f2)

Hãy đối chiếu danh sách trả về với danh sách thư mục vật lý:

Bash
ls -1 /home/mysql

Nếu số lượng database giữa câu lệnh SQL và danh sách thư mục vật lý khớp nhau, quá trình di chuyển của bạn đã hoàn thành xuất sắc!

Đăng nhận xét