Dời thư mục data của MariaDb/MySQL

  • Thư mục dữ liệu của MariaDB/MySQL nên đặt ở partition không chứa hệ điều hành.
  • Các file cấu hình của MariaDB/MySQL có thể tên/vị trí khác nhau trên Debian/Ubuntu nhưng cách làm tương tự.
  • Thí dụ sau được thực hành với mariadb trên ubuntu.
# Tạo thư mục data mới
newDatadir='/mnt/mysql-data'
[ ! -d "$newDatadir" ] && sudo mkdir -p "$newDatadir"
chown -R mysql:mysql "$newDatadir"

# Dừng mariadb
sudo systemctl stop mariadb

# Sao chép dữ liệu về thư mục data mới
sudo rsync -av --delete /var/lib/mysql/ "$newDatadir"
sudo mv /var/lib/mysql /var/lib/mysql.bak

# Sửa cấu hình trong 2 file
sudo sed -i "s|^datadir.*|datadir=${newDatadir}|" /etc/mysql/mariadb.conf.d/50-server.cnf
sudo sed -i "s|.*\(alias /var/lib/mysql/\).*|\1 -> ${newDatadir}/,|" /etc/apparmor.d/tunables/alias

# Khởi động lại apparmor
sudo systemctl restart apparmor

# Tạo thư mục giả
sudo mkdir /var/lib/mysql/mysql -p

# Khởi động lại mariadb
sudo systemctl start mariadb

Nếu có trục trặc, quay trở lại cách thiết lập cũ

sudo systemctl stop mariadb
sudo rm -af /var/lib/mysql
sudo mv /var/lib/mysql.bak /var/lib/mysql
sudo sed -i "s|datadir.*$|datadir=/var/lib/mysql|" /etc/mysql/mariadb.conf.d/50-server.cnf
sudo sed -i 's|.*\(alias .*\)|# \1|' /etc/apparmor.d/tunables/alias
sudo systemctl restart apparmor
sudo systemctl start mariadb
  • Quá trình tương tự trên PiOS/Rasbian
newDatadir='/mnt/mysql-data'

# Dừng mariadb
sudo systemctl stop mariadb

# Sao chép dữ liệu về thư mục mới
sudo rsync -av --delete /var/lib/mysql/ "$newDatadir"

# Sửa cấu hình trong một file
sudo sed -i "s|^datadir.*|datadir=${newDatadir}|" /etc/mysql/mariadb.conf.d/50-server.cnf

# Khởi động mariadb
sudo systemctl start mariadb

Chú thích

Nếu di dời thư mục datadir của mariadb khác OS (thí dụ từ Ubuntu sang PiOS) theo cách này thì có lỗi không tương thích.

Comments Off on Dời thư mục data của MariaDb/MySQL

Filed under Software

Comments are closed.