Giải pháp backup và khôi phục dữ liệu lớn cho MySQL & MariaDB


Trong bài viết này, vinasupport sẽ hướng dẫn các bạn sao lưukhô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 và 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

 

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web