Trong khi mysqldump
là phương pháp sao lưu ưa thích cho cơ sở dữ liệu MariaDB hoặc MySQL hoặc hệ thống cơ sở dữ liệu, nó chỉ hoạt động khi máy chủ cơ sở dữ liệu có thể truy cập và đang chạy. Nếu không thể khởi động cơ sở dữ liệu hoặc không thể truy cập được hệ thống máy chủ, cơ sở dữ liệu vẫn có thể được sao chép trực tiếp.
A sao lưu vật lý thường cần thiết trong các tình huống khi bạn chỉ có quyền truy cập vào môi trường khôi phục (chẳng hạn như Finnix) nơi bạn gắn các đĩa hệ thống của mình làm thiết bị lưu trữ bên ngoài. Nếu bạn muốn đọc về bản sao lưu hợp lý sử dụng mysqldump
, hãy xem hướng dẫn của chúng tôi về chủ đề này.
Để đơn giản hóa, tên MySQL sẽ được sử dụng trong suốt hướng dẫn này nhưng các hướng dẫn sẽ hoạt động cho cả MySQL và MariaDB.
Lưu ý Các bước trong hướng dẫn này yêu cầu quyền root. Đăng nhập với tư cách người dùng root bằng su -
trước khi bạn bắt đầu.
Tạo bản sao lưu
-
Nếu bạn không chạy ở chế độ khôi phục (phiên Finnix), hãy dừng
mysql
dịch vụ:systemctl stop mysql
-
Định vị thư mục cơ sở dữ liệu của bạn. Nó phải là
/var/lib/mysql/
trên hầu hết các hệ thống nhưng nếu thư mục đó không tồn tại, hãy kiểm tra/etc/mysql/my.cnf
cho một đường dẫn đến thư mục dữ liệu. -
Tạo một thư mục để lưu trữ các bản sao lưu của bạn. Hướng dẫn này sẽ sử dụng
/opt/db-backups
nhưng bạn có thể thay đổi điều này cho phù hợp với nhu cầu của mình:mkdir /opt/db-backups
-
Sao chép thư mục dữ liệu của MySQL vào vị trí lưu trữ.
cp
lệnh,rsync
hoặc các phương pháp khác sẽ hoạt động tốt, nhưng chúng tôi sẽ sử dụngtar
để sao chép đệ quy và gzip bản sao lưu cùng một lúc. Thay đổi thư mục cơ sở dữ liệu, tên tệp sao lưu và thư mục đích nếu cần;-$(date +%F)
thêm vào lệnh sẽ chèn một dấu thời gian vào tên tệp.tar cfvz /opt/db-backups/db-$(date +%F).tar.gz /var/lib/mysql/*
-
Khởi động lại dịch vụ MySQL:
systemctl restart mysql
Khôi phục bản sao lưu
-
Thay đổi thư mục làm việc của bạn thành nơi bạn có thể giải nén tarball đã tạo ở trên. Thư mục chính của người dùng hiện tại được sử dụng trong ví dụ này:
cd
-
Dừng
mysql
dịch vụ:systemctl stop mysql
-
Giải nén tarball vào thư mục làm việc. Thay đổi tên tệp của tarball trong lệnh thành tên có ngày bạn muốn khôi phục.
tar zxvf /opt/db-backups/db-archive.tar.gz -C .
-
Di chuyển nội dung hiện tại của
/var/lib/mysql
đến một vị trí khác nếu bạn muốn giữ chúng vì bất kỳ lý do gì hoặc xóa chúng hoàn toàn. Tạo mộtmysql
trống mới thư mục để khôi phục DMBS đã sao lưu của bạn vào.mv /var/lib/mysql /var/lib/mysql-old mkdir /var/lib/mysql
-
Sao chép hệ thống cơ sở dữ liệu đã sao lưu vào thư mục trống:
mv ~/var/lib/mysql/* /var/lib/mysql
-
Đặt quyền thích hợp cho các tệp bạn vừa khôi phục:
chown -R mysql:mysql /var/lib/mysql
-
Khởi động lại dịch vụ MySQL:
systemctl restart mysql
Thông tin khác
Bạn có thể tham khảo các nguồn sau đây để biết thêm thông tin về chủ đề này. Mặc dù những điều này được cung cấp với hy vọng rằng chúng sẽ hữu ích, xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc kịp thời của các tài liệu được lưu trữ bên ngoài.
- Tổng quan về Sao lưu và Khôi phục; Thư viện MariaDB
- Phương pháp sao lưu cơ sở dữ liệu; Hướng dẫn tham khảo MySQL