Hướng dẫn chuyển thư mục dữ liệu MySQL (datadir) sang vị trí mới (ví dụ /mnt/data_vol/mysql) khi database tăng nhanh hoặc lý do bảo mật.
Điều kiện tiên quyết
- Ubuntu với user non-root có sudo.
- MySQL đã cài và chạy.
- Volume mới gắn tại /mnt/data_vol.
Thay đổi vị trí thư mục dữ liệu
Xác định datadir hiện tại:
mysql> select @@datadir; +-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+
Dừng MySQL và kiểm tra trạng thái:
$ sudo systemctl stop mysql $ sudo systemctl status mysql
Di chuyển dữ liệu bằng rsync (giữ permission, verbose):
$ rsync -av /var/lib/mysql /mnt/data_vol/
Đổi tên thư mục cũ để backup:
$ sudo mv /var/lib/mysql /var/lib/mysql_backup
Sửa file cấu hình /etc/mysql/mysql.conf.d/mysqld.cnf, thay datadir:
datadir = /mnt/data_vol/mysql/
Cấu hình AppArmor
Sửa /etc/apparmor.d/tunables/alias, thêm dòng:
alias /var/lib/mysql/ -> /mnt/data_vol/mysql
Khởi động lại AppArmor, tạo thư mục tối thiểu để script chạy:
$ sudo mkdir -p /var/lib/mysql/mysql
Khởi động MySQL và kiểm tra:
$ sudo systemctl start mysql $ sudo systemctl status mysql
Xác nhận datadir mới:
mysql> select @@datadir; +----------------------+ | @@datadir | +----------------------+ | /mnt/data_vol/mysql/ | +----------------------+
Xóa backup cũ sau khi xác nhận:
$ sudo rm -rf /var/lib/mysql_backup
Các bước trên giúp di chuyển an toàn thư mục dữ liệu MySQL sang vị trí mới trên Ubuntu 16.04.