Trong bài viết này, vinasupport sẽ hướng dẫn các bạn sao lưu và khôi phục CSDL (Backup & Restore Database) có dữ liệu lớn trong MySQL & MariaDB.
Vì sao cần 1 giải pháp backup database có dữ liệu lớn?
Mình từng làm việc với dữ liệu của MySQL có dung lượng > 10GB và hàng triệu record. Với hệ thống lớn như vậy, việc backup daily là 1 công việc thường xuyên và cần thiết vì mỗi ngày có hàng trăm, hàng ngàn record được thêm vào Database. Với hệ thống lớn như vậy, việc export dữ liệu nhanh chóng, an toàn và không ảnh hướng đến hệ thống đang chạy là điều hết sức 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
Nguồn: vinasupport.com