Trong hướng dẫn này, chúng tôi sẽ giúp bạn hiểu cách sao lưu và khôi phục cơ sở dữ liệu (Backup & Restore Database) trong MySQL & MariaDB, đặc biệt khi bạn đang làm việc với dữ liệu lớn.
Vì sao cần 1 giải pháp backup database có dữ liệu lớn?
Tôi đã có kinh nghiệm làm việc với cơ sở dữ liệu MySQL có dung lượng lớn, lớn hơn 10GB và hàng triệu bản ghi. Với một hệ thống quy mô lớn như vậy, việc sao lưu dữ liệu hàng ngày là một nhiệm vụ thường xuyên và quan trọng, bởi vì mỗi ngày có hàng trăm, hàng ngàn bản ghi mới được thêm vào cơ sở dữ liệu. Trong một môi trường với cơ sở dữ liệu lớn như vậy, việc xuất dữ liệu một cách nhanh chóng, an toàn và không gây ảnh hưởng đến hoạt động của hệ thống là điều tối cần thiết.
Giải pháp backup database có dữ liệu lớn
Sử dụng công cụ mysqldump của MySQL và MariaDB, với command sau:
mysqldump -h <mysql_host> -u<mysql_user> -p --single-transaction --quick --lock-tables=false <database_name> | gzip > /home/vinasupport.com/backup.sql.gz
Nhập pass của mysql user để thực hiện backup database
Với:
- <mysql_host>: Hostname, địa chỉ IP của MySQL Server
- <mysql_user>: MySQL User
- <database_name>: Tên của MySQL Database
- –single-transaction: Đặt MySQL ở mode REPEATABLE READ, nó là hữu dụng bảng CSDL sử dụng kiểu InnoDB mà không block ứng dụng (Non-Blocking)
- –quick: Nó sẽ trả về 1 bản ghi ở 1 thời điểm thay vì trả về cả bảng CSDL
- –lock-table=false, sẽ không khóa bảng khi export. Nó đảm bảo ứng dụng hoạt động khi export dữ liệu.
- gzip: Output file dướng dạng dữ liệu nén .gz (Giảm dung lượng file output)
Kết hợp 3 tham số –single-transaction, –quick, –lock-table sẽ giúp cho việc export dữ liệu được an toàn, ko ảnh hưởng tới ứng dụng đang chạy, tốn ít tài nguyên của hệ thống.
Khôi phục Database
Để khôi phục lại dữ liệu đã backup ở trên chúng ta cần thực hiện
1. Giải nén file gz
gunzip backup.sql.gz
2. Import file sql
Sử dụng command mysql của MySQL & MariaDB
mysql -h <mysql_host> -u<mysql_user> -p <database_name> < backup.sql
Nhập password của MySQL User