Sao lưu và khôi phục dữ liệu là vấn đề rất quan trọng khi quản trị cơ sở dữ liệu (CSDL), đảm bảo cho dữ liệu không bị mất mát và nếu có sự cố xảy ra thì có thể khôi phục lại trạng thái của CSDL trước khi xảy ra sự cố. Bài viết này hướng dẫn bạn sao lưu và phục hồi cơ sở dữ liệu MySQL trên máy chủ CentOS.

Sao lưu và phục hồi cơ sở dữ liệu MySQL

MySQL cho phép bạn sao lưu và sau đó khôi phục lại cơ sở dữ liệu bằng câu lệnh trong trường hợp bạn không cài đặt phpMyAdmin. Trước tiên bạn nên cài zip trên máy chủ.

yum install zip

Sao lưu CSDL

Việc sao lưu (hay còn gọi là export hoặc backup) được sử dụng nhờ câu lệnh mysqldump, câu lệnh này sẽ chuyển toàn bộ dữ liệu có trong CSDL ra một tập tin. Cú pháp câu lệnh này như sau.

mysqldump -u [username] -p[password] [database] > [filename].sql

Trong đó:

  • username: tên người dùng có quyền sao lưu cơ sở dữ liệu.
  • password: mật khẩu của người dùng, bạn có thể để trống và hệ thống sẽ yêu cầu nhập sau khi bấm Enter.
  • database: tên cơ sở dữ liệu cần sao lưu.
  • filename: tên tập tin dùng để lưu dữ liệu được sao lưu.

Ví dụ:

cd /path/to/backup
mysqldump --opt -Q -u username -pPasSworD database_name > backup.sql
zip -r backup.zip backup.sql

Sau đó, bạn có thể vào đường dẫn /path/to/backup để tải tập tin backup.zip về máy tính.

Phục hồi CSDL

Phục hồi cơ sở dữ liệu hay còn gọi là restore CSDL là việc đưa dữ liệu quay trở về trạng thái tại một thời điểm trước đó. Bạn có thể khôi phục lại cơ sở dữ liệu nếu trước đó bạn đã từng sao lưu cơ sở dữ liệu này. Để khôi phục lại CSDL bạn dùng câu lệnh với cú pháp như sau.

mysql -u [username] -p[password] [database] < [filename].sql

Trong đó:

  • username: tên người dùng có quyền phục hồi cơ sở dữ liệu.
  • password: mật khẩu của người dùng, bạn có thể để trống và hệ thống sẽ yêu cầu nhập sau khi bấm Enter.
  • database: tên cơ sở dữ liệu cần phục hồi.
  • filename: tên tập tin chứa dữ liệu được sao chép ra trước đây.

Ví dụ:

mysql -u username -pPasSworD database_name < backup.sql

Lưu ý: Chúng ta sử dụng dấu > trong câu lệnh sao lưu và < trong câu lệnh phục hồi. Nếu tập tin sao lưu có kích thước quá lớn, bạn cần thêm dòng này vào cuối /etc/my.cnf:

max_allowed_packet=1024M