Thứ sáu, 02/12/2016 | 00:00 GMT+7

Cách thay đổi thư mục dữ liệu MySQL sang vị trí mới bằng cách sử dụng liên kết biểu tượng

Database phát triển theo thời gian, đôi khi tăng thêm dung lượng trên hệ thống file . Bạn cũng có thể xảy ra tranh chấp I / O khi chúng nằm trên cùng một phân vùng với phần còn lại của hệ điều hành. RAID, lưu trữ khối mạng và các thiết bị khác có thể cung cấp khả năng dự phòng và các tính năng mong muốn khác.

Cho dù bạn đang bổ sung thêm dung lượng, đánh giá các cách để tối ưu hóa hiệu suất hoặc tìm cách tận dụng các tính năng lưu trữ khác, hướng dẫn này sẽ hướng dẫn bạn cách di chuyển lại folder dữ liệu của MySQL.

Các hướng dẫn ở đây phù hợp với các server chạy một version MySQL. Nếu bạn có nhiều trường hợp, hướng dẫn Cách Di chuyển Thư mục Dữ liệu MySQL đến Vị trí Mới trên Ubuntu 16.04 có thể giúp bạn hướng dẫn thay đổi vị trí rõ ràng thông qua cài đặt cấu hình.

Yêu cầu

Để hoàn thành hướng dẫn này, bạn cần :

Trong ví dụ này, ta đang di chuyển dữ liệu sang block storage device được gắn tại /mnt/volume-nyc1-01 . Bạn có thể tìm hiểu cách cài đặt một trong hướng dẫnCách sử dụng Bộ nhớ khối trên DigitalOcean .

Dù bạn sử dụng bộ nhớ cơ bản nào, hướng dẫn này có thể giúp bạn di chuyển folder dữ liệu đến một vị trí mới.

Bước 1 - Di chuyển Thư mục Dữ liệu MySQL

Để đảm bảo tính toàn vẹn của dữ liệu, ta sẽ tắt MySQL:

  • sudo systemctl stop mysql

systemctl không hiển thị kết quả của tất cả các lệnh quản lý dịch vụ, vì vậy nếu bạn muốn chắc chắn rằng mình đã thành công, hãy sử dụng lệnh sau:

  • sudo systemctl status mysql

Bạn có thể chắc chắn rằng nó đã tắt nếu dòng cuối cùng của kết quả cho bạn biết server đã dừng:

Output
. . . Jul 18 11:24:20 ubuntu-512mb-nyc1-01 systemd[1]: Stopped MySQL Community Server. 

Khi server ngừng hoạt động, ta sẽ di chuyển folder database hiện có đến vị trí mới:

  • sudo mv /var/lib/mysql /mnt/volume-nyc1-01/mysql

Tiếp theo, ta sẽ tạo softlink :

  • sudo ln -s /mnt/volume-nyc1-01/mysql /var/lib/mysql

Với softlink tại chỗ, đây có vẻ là thời điểm thích hợp để chạy lại MySQL, nhưng còn một thứ nữa cần phải cấu hình trước khi ta có thể thực hiện điều đó thành công.

Bước 2 - Cấu hình luật kiểm soát truy cập AppArmor

Khi bạn di chuyển folder MySQL sang hệ thống file khác với server MySQL, bạn cần tạo một alias AppArmor.

Để thêm alias , hãy chỉnh sửa file alias AppArmor:

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

Ở cuối file , thêm luật alias sau:

/etc/apparmor.d/tunables/alias
. . . alias /var/lib/mysql/ -> /mnt/volume-nyc1-01/mysql/, . . . 

Để các thay đổi có hiệu lực, hãy khởi động lại AppArmor:

  • sudo systemctl restart apparmor

Ghi chú:
Nếu bạn bỏ qua bước cấu hình AppArmor và cố gắng khởi động mysql , bạn sẽ gặp phải 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. 

Đầu ra từ cả systemctljournalctl kết thúc bằng:

Output
Jul 18 11:03:24 ubuntu-512mb-nyc1-01 systemd[1]:  mysql.service: Main process exited, code=exited, status=1/FAILURE 

Vì các thông báo không tạo kết nối rõ ràng giữa AppArmor và folder dữ liệu, lỗi này có thể mất một chút thời gian để tìm ra. Tuy nhiên, xem xét syslog sẽ cho thấy vấn đề:

  • sudo tail /var/log/syslog
Output
Nov 24 00:03:40 digitalocean kernel:  [  437.735748] audit: type=1400 audit(1479945820.037:20):  apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld"  name="/mnt/volume-nyc1-01/mysql/mysql.lower-test" pid=4228  comm="mysqld" requested_mask="c" denied_mask="c" fsuid=112 ouid=112 

 

Bây giờ ta đã sẵn sàng để bắt đầu MySQL.

  • sudo systemctl start mysql
  • sudo systemctl status mysql

Khi bạn đã khởi động lại MySQL, hãy tận dụng cơ hội đảm bảo dữ liệu theo thứ tự và MySQL đang hoạt động như mong đợi.

Kết luận

Trong hướng dẫn này, ta đã di chuyển dữ liệu của MySQL và sử dụng softlink để làm cho MySQL nhận biết được vị trí mới. Ta cũng đã cập nhật các ACL AppArmor của Ubuntu để phù hợp với việc điều chỉnh. Mặc dù ta đang sử dụng thiết bị Lưu trữ khối, các hướng dẫn ở đây sẽ phù hợp để xác định lại vị trí của folder dữ liệu dù công nghệ cơ bản là gì.

Cách tiếp cận này chỉ phù hợp nếu bạn đang chạy một version MySQL. Nếu bạn cần hỗ trợ nhiều version MySQL chạy trên một server , Cách di chuyển Thư mục Dữ liệu MySQL đến Vị trí Mới trên Ubuntu 16.04 có thể giúp bạn.


Tags:

Các tin liên quan

Cách cài đặt MySQL trên CentOS 7
2016-12-01
Cách cài đặt MySQL trên Ubuntu 16.04
2016-11-23
Cách kết nối với server MySQL từ xa bằng MySQL Workbench
2016-10-21
Cách cấu hình một cụm Galera với MySQL 5.6 trên Ubuntu 16.04
2016-09-02
Cách di chuyển thư mục dữ liệu MySQL đến vị trí mới trên Ubuntu 16.04
2016-07-21
Cách tạo một cụm MySQL nhiều node trên Ubuntu 16.04
2016-06-17
Cách cài đặt MySQL trên Ubuntu 14.04
2016-03-08
Cơ sở hạ tầng SaltStack: Tạo Salt States cho server database MySQL
2015-10-05
Cách sử dụng Mytop để theo dõi hiệu suất MySQL
2015-08-27
Cách tạo bản hot backup của database MySQL với Percona XtraBackup trên CentOS 7
2015-04-24