Hướng dẫn restore mysql database bằng command line

22/09/2016

Trong bài viết Hướng dẫn Backup database mysql hàng ngày 1 cách tự động, chúng tôi đã giới thiệu với các bạn phương pháp tự động backup mysql bằng shell script và crontab. Vậy làm cách nào để restore lại các cơ sở dữ liệu mysql đã backup này? Công việc tưởng như đơn giản này nhưng không phải ai cũng biết.

Khi bạn có file backup bằng script trên, dữ liệu của bạn được backup dưới dạng file nén để giảm tối đa dung lượng lưu trữ, bạn hãy vào thư mục chứa file lưu dữ liệu (ví dụ /root/backup/mysql), gõ lệnh ls để liệt kê toàn bộ các file backup và chọn cho mình file dữ liệu mới nhất cần restore.
Ví dụ bạn muốn restore cho dbname1.sql.gz
Đầu tiên bạn phải unzip file này ra bằng lệnh gunzip: gunzip dbname1.sql.gz
(nếu VPS của bạn chưa có gunzip thì bạn phải cài thêm:
Với Centos: yum install gunzip
Với Ubuntu: apt-get install gunzip)
Sau khi unzip bạn sẽ thấy có file dạng: dbname1.sql
Bạn cần phải tạo mysql dbuser, dbpass và dbname để có thể restore vào quyền của các user này (bạn có thể tạo thủ công trên command line hoặc bằng phpmyadmin)
Sau khi có dbuser/dbpass bạn hãy gõ lệnh sau để restore mysql database:
mysql -udbuser -pdbpass dbname<dbname1.sql
Trong đó các giá trị bôi đậm trên bạn nhớ thay bằng mysql user, password và dbname tương ứng.
Với cách làm này, bạn sẽ restore được database mysql rất nhanh và đơn giản, thao tác trực tiếp trên server, không bao giờ có lỗi, đặc biệt hữu dụng khi database của bạn đã rất lớn.
Sau khi restore, bạn cần chú ý set lại các trường index cho cơ sở dữ liệu của mình để website chạy nhanh hơn, bởi vì quá trình backup và restore cơ sở dữ liệu mysql sẽ bị mất toàn bộ các trường index.
Chúc các bạn thành công!