NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
06/03/2025
Lượt xem

Cách dời thư mục dữ liệu MySQL tới vị trí mới trên Ubuntu 20.04

06/03/2025
12 phút đọc
Lượt xem

Đánh giá

5/5 - (178 bình chọn)

Khi hệ thống cơ sở dữ liệu phát triển, bạn sẽ cần chuyển dữ liệu sang một ổ đĩa hoặc phân vùng khác để tối ưu hóa hiệu suất và tránh tình trạng hết dung lượng. Trong bài viết này, mình sẽ hướng dẫn bạn cách dời thư mục dữ liệu MySQL tới vị trí mới trên Ubuntu 20.04, bao gồm các bước di chuyển thư mục, cấu hình và khởi động lại MySQL.

Những điểm chính

  • Điều kiện cần đáp ứng: Để dời thư mục dữ liệu MySQL tới vị trí mới trên Ubuntu 20.04, bạn cần có máy chủ Ubuntu 20.04 với tài khoản có quyền sudo, firewall đã bật và một máy chủ MySQL.
  • Các bước dời thư mục: Bao gồm di chuyển thư mục dữ liệu MySQL, chỉ định vị trí mới, cấu hình quy tắc truy cập AppArmor và khởi động lại MySQL.
  • Biết đến Vietnix là nhà cung cấp VPS hiệu năng vượt trội, dịch vụ chuyên nghiệp hàng đầu.

Điều kiện để thực hiện việc dời thư mục dữ liệu MySQL tới vị trí mới trên Ubuntu 20.04

Để hoàn thành được các bước trong bài viết này, bạn cần có:

Trong bài viết này, Vietnix sẽ hướng dẫn bạn chuyển dữ liệu sang thiết bị block storage có địa chỉ /mnt/volume-nyc1-01. Dù đang sử dụng bộ nhớ nào thì sau khi đọc bài viết bạn cũng có thể di chuyển thư mục dữ liệu đến một vị trí mới.

Hiện tại Vietnix đang cung cấp dịch vụ VPS AMD tốc độ cao với toàn quyền quản trị giúp người dùng có thể dễ dàng cài đặt hệ điều hành Ubuntu hay MySQL mà không bị hạn chế bất cứ tính năng nào. Với đa dạng cấu hình và mức giá, bạn có thể dễ dàng chọn lựa gói dịch vụ tối ưu nhất theo nhu cầu sử dụng. Liên hệ với đội ngũ Vietnix để được tư vấn chi tiết nhất.

Bước 1 – Di chuyển thư mục dữ liệu MySQL

Trước hết, bạn cần xác minh vị trí hiện tại của thư mục dữ liệu bằng cách chạy lệnh sau để nhắc MySQL server sẵn sàng hoạt động:

sudo mysql 

iconLưu ý

Nếu đã cấu hình root MySQL với cách xác thực bằng mật khẩu, bạn có thể kết nối với MySQL bằng lệnh sau:

mysql -u root -p 

Khi được nhắc, bạn hãy cung cấp mật khẩu người dùng MySQL. Sau đó, từ prompt MySQL chạy câu lệnh SELECT để trả về thư mục dữ liệu đang hoạt động trong phiên bản MySQL này.

SELECT @@datadir;

Bạn có thể nhận được output như hình với thư mục được ghi trong biến datadir của MySQL:

Output

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

| @@datadir       |

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

| /var/lib/mysql/ |

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

1 row in set (0.00 sec)

Output này đã xác nhận rằng MySQL được cấu hình sử dụng thư mục dữ liệu mặc định /var/lib/mysql/. Vì vậy, đây là thư mục bạn cần di chuyển. Khi đã xác nhận được như vậy, hãy gõ exit để rời khỏi màn hình và quay lại dấu nhắc của bạn.

exit
Output

Bye

Để đảm bảo tính toàn vẹn của dữ liệu, bạn cần tắt MySQL trước khi thay đổi thư mục với lệnh:

sudo systemctl stop mysql

iconLưu ý

systemctl không hiển thị kết quả của tất cả các lệnh. Vì vậy, nếu bạn muốn kiểm tra xem mình đã thực thi thành công hay chưa, hãy sử dụng lệnh sau:

sudo systemctl status mysql

Bạn có thể xác nhận MySQL đã tắt khi Active ở output xuất hiện inactive (dead)như dưới đây:

Output

● mysql.service - MySQL Community Server

     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset:>

     Active: inactive (dead) since Wed 2022-03-23 19:03:49 UTC; 5s ago

    Process: 3415 ExecStart=/usr/sbin/mysqld (code=exited, status=0/SUCCESS)

   Main PID: 3415 (code=exited, status=0/SUCCESS)

     Status: "Server shutdown complete"

Khi máy chủ đã tắt, bạn có thể sao chép thư mục database /var/lib/mysql sang vị trí /mnt/volume-nyc1-01 với rsync. Sử dụng cờ -a để duy trì quyền và các thuộc tính thư mục khác. Đồng thời -v cung cấp output chi tiết giúp bạn dễ dàng theo dõi tiến trình:

iconLưu ý

Bạn phải đảm bảo rằng không có dấu gạch chéo nào ở cuối thư mục để tránh tình trạng rsync đổ nội dung của thư mục vào mount point thay vì chuyển nó vào thư mục mới.

sudo rsync -av /var/lib/mysql /mnt/volume-nyc1-01

Khi lệnh rsync hoàn tất, hãy đổi tên phần mở rộng của thư mục hiện tại thành .bak và để như vậy cho đến khi bạn xác nhận việc di chuyển đã thành công. Bằng cách đổi tên, bạn sẽ tránh được sự nhầm lẫn có thể phát sinh từ các tệp ở cả vị trí mới và cũ:

sudo mv /var/lib/mysql /var/lib/mysql.bak

Bước 2 – Chỉ vào vị trí nơi lưu dữ liệu mới

Có nhiều cách để ghi đè lên các giá trị đã được cấu hình trong MySQL. Theo mặc định, giá trị datadir sẽ được đặt ở /var/lib/mysql trong file /etc/mysql/mysql.conf.d/mysqld.cnf. Bạn có thể chỉnh sửa tệp này trong trình soạn thảo văn bản để tạo thành thư mục dữ liệu mới. Ví dụ với việc sử dụng nano:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Sau đó, bạn tìm dòng bắt đầu bằng datadir=. Bỏ ghi chú dòng bằng cách xóa dấu thăng ( #) và thay đổi đường dẫn để chỉ tới vị trí mới. Nội dung tệp được cập nhật sẽ như sau:

. . .
datadir=/mnt/volume-nyc1-01/mysql
. . .

Khi đã cập nhật thành công, bạn hãy lưu và thoát khỏi tệp. Nếu đang sử dụng nano, bạn có thể thực hiện bằng cách nhấn CTRL + X, sau đó nhấn YENTER

Bước 3 – Cấu hình quy tắc kiểm soát truy cập AppArmor

Trong bước này, bạn cần yêu cầu AppArmor cho phép MySQL ghi dữ liệu vào thư mục mới. Trong đó, AppArmor là một module bảo mật trong Linux cho phép quản trị viên hạn chế quyền hạn thông qua cấu hình chương trình thay vì người dùng. Hãy bắt đầu bằng cách mở và chỉnh sửa file alias trên AppArmor:

sudo nano /etc/apparmor.d/tunables/alias

Ở dưới cùng của tệp, bạn hãy bỏ ghi chú dòng sau và thêm quy tắc alias:

. . .
alias /var/lib/mysql/ -> /mnt/volume-nyc1-01/mysql/,
. . .

Sau khi hoàn tất, hãy lưu và thoát khỏi tệp.

Để các thay đổi có hiệu lực, bạn cần khởi động lại AppArmor với lệnh:

sudo systemctl restart apparmor

iconLưu ý

Nếu bỏ qua bước cấu hình AppArmor, bạn sẽ nhận được thông báo lỗi sau:

Output

Job for mysql.service failed because the control process 

exited with error code. See "systemctl status mysql.service" 

and "journalctl -xe" for details.

Sau khi đã cấu hình AppArmor chuẩn, bạn có thể chuyển sang bước tiếp theo.

Bước 4 – Khởi động lại MySQL

Bây giờ nếu tiến hành khởi động lại MySQL ngay thì bạn sẽ gặp phải một lỗi khác. Lỗi này xuất phát từ mysql-systemd-start, một script hỗ trợ quản lý MySQL thông qua systemd. Bạn tiến hành gõ lệnh:

nano /usr/share/mysql/mysql-systemd-start

Script này kiểm tra sự tồn tại của thư mục -d hoặc symbolic link -L xem có khớp với đường dẫn thư mục dữ liệu mặc định hay không. Nếu không tìm thấy một trong hai thứ này, script sẽ gây ra lỗi và ngăn MySQL khởi động:

. . .
if [ ! -d /var/lib/mysql ] && [ ! -L /var/lib/mysql ]; then
 echo "MySQL data dir not found at /var/lib/mysql. Please create one."
 exit 1
fi

if [ ! -d /var/lib/mysql/mysql ] && [ ! -L /var/lib/mysql/mysql ]; then
 echo "MySQL system database not found. Please run mysql_install_db tool."
 exit 1
fi

. . .

Sau khi bạn đã kiểm tra file này, hãy đóng file và đảm bảo không thực hiện thay đổi nào.

Bạn cần thư mục thích hợp hoặc symbolic link để khởi động máy chủ. Do đó, hãy tạo cấu trúc thư mục tối thiểu với lệnh sau:

sudo mkdir /var/lib/mysql/mysql -p

Bây giờ khởi động MySQL với lệnh:

sudo systemctl start mysql

Xác nhận MySQL đang chạy bằng cách kiểm tra trạng thái:

sudo systemctl status mysql

Bạn có thể nhận được output như sau, chú ý vào dòng active:

Output

● mysql.service - MySQL Community Server

     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset:>

     Active: active (running) since Wed 2022-03-23 20:51:18 UTC; 4s ago

    Process: 17145 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=>

   Main PID: 17162 (mysqld)

     Status: "Server is operational"

      Tasks: 38 (limit: 1132)

     Memory: 376.7M

     CGroup: /system.slice/mysql.service

             └─17162 /usr/sbin/mysqld

Để đảm bảo thư mục dữ liệu mới thực sự có thể sử dụng, hãy khởi động màn hình MySQL. Thay thế username database tương ứng của bạn:

/mysql -u username -p

Thực hiện truy vấn lại giá trị của thư mục dữ liệu:

SELECT @@datadir;
Output

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

| @@datadir                  |

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

| /mnt/volume-nyc1-01/mysql/ |

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

1 row in set (0.01 sec)

Sau khi khởi động lại MySQL, cần xác nhận rằng thư mục dữ liệu đang sử dụng vị trí mới cũng như đã có đầy đủ chức năng. Cuối cùng, hãy thoát khỏi database và quay lại command prompt:

exit
Output
Bye

Sau khi xác minh được tính toàn vẹn dữ liệu, bạn có thể xóa thư mục backup trước đó bằng lệnh:

sudo rm -Rf /var/lib/mysql.bak

Sau đó, hãy khởi động lại MySQL lần cuối:

sudo systemctl restart mysql

Cuối cùng, thực hiện kiểm tra trạng thái xem nó đã hoạt động đúng như mong muốn chưa:

sudo systemctl status mysql
Output

● mysql.service - MySQL Community Server

     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset:>

     Active: active (running) since Wed 2022-03-23 20:53:03 UTC; 4s ago

    Process: 17215 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=>

   Main PID: 17234 (mysqld)

     Status: "Server is operational"

      Tasks: 38 (limit: 1132)

     Memory: 368.9M

     CGroup: /system.slice/mysql.service

             └─17234 /usr/sbin/mysqld

Nếu dòng Active xuất hiện trạng thái active(running) thì có nghĩa là MySQL đang hoạt động.

Ngoài ra, bạn cũng nên tham khảo thêm về MariaDB, một hệ quản trị cơ sở dữ liệu mã nguồn mở được phát triển dựa trên MySQL cũng như cách cài đặt và sử dụng MariaDB trên Ubuntu 20.04. Để có thể tận dụng các tính năng mạnh mẽ của hệ quản trị cơ sở dữ liệu mã nguồn mở này xây dựng và quản lý các ứng dụng dữ liệu hiệu quả trên Ubuntu 20.04.

VPS Vietnix – Hiệu năng vượt trội, dịch vụ chuyên nghiệp hàng đầu

Với 12 năm kinh nghiệm hoạt động, Vietnix tự hào đã triển khai thành công hơn 100.000 dịch vụ VPS, nhận được sự hài lòng tuyệt đối từ 97% khách hàng. Đội ngũ hơn 80 chuyên gia nhiệt huyết của Vietnix luôn sẵn sàng hỗ trợ bạn 24/7, đảm bảo mọi vấn đề được giải quyết dứt điểm, nhanh chóng và hiệu quả. Vietnix mang đến cho bạn không chỉ là một dịch vụ VPS mạnh mẽ mà còn là sự an tâm tuyệt đối với cam kết chất lượng và sự hỗ trợ chuyên nghiệp.

Thông tin liên hệ:

  • Hotline: 18001093.
  • Email: sales@vietnix.com.vn.
  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
  • Website: https://vietnix.vn/.

Trên đây là những hướng dẫn đơn giản và chi tiết về cách dời thư mục dữ liệu MySQL tới vị trí mới trên Ubuntu 20.04 mà mình muốn chia sẻ tới bạn. Hy vọng bài viết đã giúp bạn hiểu rõ về quy trình và các bước cần thiết để thực hiện việc này một cách thành công. Ngoài ra, bạn cũng có thể tìm hiểu thêm cách quản lý các thư mục dữ liệu MySQL ở những bài viết dưới đây của mình:

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Icon tab

MAXSPEED HOSTING

TĂNG TỐC WEBSITE TOÀN DIỆN

CÔNG NGHỆ ĐỘC QUYỀN

Vector

PHẦN CỨNG MẠNH MẼ

Vector

HỖ TRỢ 24/7

Vector
ĐĂNG KÝ NGAYGroup icon
khuyến mãi cuối tháng 3
Nhanh tay, số lượng có hạn!
17/03/2025 - 31/03/2025
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG