Sao lưu MySQL bằng lệnh mysqldump

Sao lưu MySQL bằng lệnh mysqldump

MySQL hỗ trợ nhiều cách thức và công cụ khác nhau để sao lưu dữ liệu. Trong đó, mysqldump là công cụ đơn giản và được sử dụng nhiều nhất. Lệnh mysqldump giúp sao lưu (dump) dữ liệu của một (hoặc nhiều) database ra file .sql. Không chỉ sao lưu database, mysqldump còn hỗ trợ sao lưu table.

Cú pháp lệnh mysqldump

Bạn sử dụng lệnh mysqldump theo cú pháp sau:

# mysqldump -u [username] –p[password] [database_name] > [backup_file.sql]

Các tham số của lệnh có ý nghĩa như sau:

  • [username]: Tên đăng nhập MySQL. Tài khoản này phải đủ quyền sao lưu database.
  • [password]: Mật khẩu đăng nhập MySQL.
  • [database_name]: Tên database cần sao lưu.
  • [backup_file.sql]: Tên file .sql chứa dữ liệu sao lưu.

Bạn cũng có thể sử dụng tùy chọn username và password theo dạng:

# mysqldump –username[=username] –password[=password] [database_name] > [backup_file.sql]

Nếu bạn không cung cấp giá trị password ở tùy chọn -p (hoặc –password), mysqldump sẽ yêu cầu bạn nhập password. Bạn nên cung cấp password theo cách này giảm thiểu các nguy cơ về bảo mật.

Lưu ý: Nếu sử dụng cú pháp với tùy chọn -p, giữa -p và giá trị password không được có khoảng trắng (viết dính liền).

Sao lưu database

Ví dụ 1 – Sao lưu một database

Để sao lưu một database, bạn dùng lệnh mysqldump như ví dụ sau:

# mysqldump -u BackupUser –pMyPassword zBackupDB1 > /dbbackup/zbackup_db1.sql
Lưu ý: Nếu không sử dụng tùy chọn –databases trước tên database zBackupDB1, file kết quả zbackup_db1.sql sẽ không có 2 lệnh CREATE DATABASE zBackupDB1 và USE zBackupDB1 ở những dòng lệnh đầu tiên. Do đó, khi khôi phục, bạn cần xác định database sẽ phục hồi dữ liệu vào (nếu database chưa tồn tại, bạn cần tạo mới).

Ví dụ 2 – Sao lưu nhiều database

Để sao lưu cùng lúc nhiều database, bạn dùng lệnh mysqldump theo cú pháp ở ví dụ sau:

# mysqldump -u BackupUser –pMyPassword –databases zBackupDB1 zBackupDB2 > /dbbackup/zbackup_db1_db2.sql

Ví dụ 2 – Sao lưu tất cả database

Để sao lưu tất cả database cóa trong MySQL, bạn dùng lệnh mysqldump theo cú pháp ở ví dụ sau:

# mysqldump -u BackupUser –pMyPassword –all-databases > /dbbackup/zbackup_all_db.sql

Sao lưu table

Không chỉ sao lưu database, mysqldump còn hỗ trợ sao lưu table của database (điều bạn không thể thực hiện được khi sao lưu dạng Physical backup). Để sao lưu table, bạn chỉ việc thêm tên table kế sau tên database.

Ví dụ 1 – Sao lưu một table

Để sao lưu một table trong database, bạn dùng lệnh mysqldump theo cú pháp ở ví dụ sau:

# mysqldump -u BackupUser –pMyPassword zBackupDB1 Table1 > /dbbackup/zbackup_db1_table1.sql

Ví dụ 2 – Sao lưu nhiều table

Để sao lưu nhiều table trong database, bạn dùng lệnh mysqldump theo cú pháp ở ví dụ sau:

# mysqldump -u BackupUser –pMyPassword zBackupDB1 Table1 Table2 > /dbbackup/zbackup_db1_table1_table2.sql

Phục hồi database từ file .sql

Để phục hồi database từ file .sql được tạo ra bởi lệnh mysqldump này, bạn sử dụng lệnh mysql hoặc mysqlimport. Tham khảo bài viết Phục hồi database MySQL bằng lệnh mysql và mysqlimport để biết cách phục hồi.