Nội dung bài viết
#

Hướng dẫn Backup và Restore MySQL Database đầy đủ chi tiết nhất

Nội dung bài viết

    Sao lưu và khôi phục cơ sở dữ liệu MySQL là điều cần thiết đối với bất kỳ nhà quản trị website nào.

    Bạn đang cố gắng khôi phục lại một bản sao cơ sở dữ liệu MySQL của mình?

    Vậy thì trong bài viết này, BKHOST sẽ hướng dẫn bạn cụ thể những cách để backup và restore MySQL database.

    Trước khi bắt đầu, có thể bạn sẽ cần tìm hiểu qua các nội dung sau đây:

    Còn nếu bạn đã sẵn sàng, ok, hãy cùng bắt đầu ngay thôi nào.

    Huong dan backup MySQL Database

    Cách 1: Sử dụng mysqldump để sao lưu và khôi phục MySQL database

    Mysqldump là một lệnh để tạo ra một bản sao lưu của cơ sở dữ liệu MySQL. Nó tạo ra một file .sql chứa các câu lệnh mà sau này dùng để khôi phục dữ liệu và các bảng trong database. Lệnh mysqldump cũng có thể xuất ra các file với định dạng như XML hoặc CSV. Ngoài ra mysqldump còn được dùng để di chuyển MySQL database sang một MySQL server mới.

    Phần tiếp theo sẽ là hướng dẫn chi tiết cách sử dụng câu lệnh mysqldump:

    1. Cú pháp mysqldump

    Để backup cơ sở dữ liệu MySQL thì cú pháp chung của lệnh là như sau:

    {{EJS0}}

    Trong đó:

    • option là các tùy chọn của câu lệnh
    • File .sql là tệp cơ sở dữ liệu được xuất ra trong quá trình sao lưu.

    Trong quá trình lệnh thực thi, bạn sẽ nhận được yêu cầu nhập username và password

    2. Sao lưu MySQL database đơn giản

    Chúng ta thường sẽ sử dụng mysqldump để backup một database. Câu lệnh trong trường hợp này sẽ là:

    {{EJS1}}

    Trong đó:

    • database_name là tên của cơ sở dữ liệu chúng ta cần sao lưu
    • database_name.sql là tên file được tạo ra sau khi backup.

    Sau khi nhập lệnh trên, tiếp theo bạn sẽ cần điền password của tài khoản root để quá trình sao lưu được diễn ra. Nếu bạn có một cơ sở dữ liệu với kích thước lớn, tiến trình này sẽ cần nhiều thời gian hơn.

    Nếu trong trường hợp bạn đăng nhập với user có quyền tạo backup mà không cần nhập pass thì có thể bỏ qua đoạn lệnh -u và -p:

    {{EJS2}}

    3. Cách sao lưu cùng lúc nhiều database

    Để sao lưu cùng lúc nhiều cơ sở dữ liệu thì cũng rất đơn giản. Chúng ta sử dụng thêm tùy chọn –databases và tiếp theo là tên những database bạn cần backup. Thêm dấu cách vào giữa tên các database để phân cách chúng.

    {{EJS3}}

    Trong câu lệnh trên chúng ta sao lưu hai cơ sở dữ liệu là database_name_adatabase_name_b vào file databases_a_b.sql

    4. Sao lưu tất cả database trong máy chủ

    Tương tự như trường hợp trên, chúng ta sao lưu cùng lúc toàn bộ cơ sở dữ liệu vào một file duy nhất. Đây là câu lệnh sử dụng:

    {{EJS4}}

    Trong đó –all-databases là tùy chọn sao lưu toàn bộ cơ sở dữ liệu.

    5. Sao lưu database vào nhiều file

    Câu lệnh mysqldump không có option để backup từng cơ sở dữ liệu vào nhiều tập tin khác nhau. Tuy nhiên chúng ta có thể dùng vòng lặp FOR để có kết quả tương tự.

    {{EJS5}}

    Kết quả là mỗi cơ sở dữ liệu sẽ được sao lưu vào một tập tin riêng.

    6. Tạo 1 file nén khi sao lưu database

    Nếu database có dữ liệu quá lớn, chúng ta nên nén file xuất ra dưới dạng gzip để dễ khôi phục sau này:

    {{EJS6}}

    7. Thêm thời gian vào cuối file backup

    Chúng ta có thể thêm thời gian vào cuối mỗi file, cách này sẽ giúp chúng ta dễ dàng phân biệt trong trường hợp có quá nhiều tệp backup trong cùng một thư mục:

    {{EJS7}}

    Phần $(date +%Y%m%d) sẽ thêm thông tin năm, tháng và ngày vào cuối file backup.

    8. Khôi phục lại database đã sao lưu

    Chúng ta sử dụng câu lệnh mysql để khôi phục lại các bản sao lưu:

    {{EJS8}}

    Dòng lệnh đầu tiên bạn sẽ tạo ra một cơ sở dữ liệu có tên là database_name. Ở dòng lệnh thứ hai bạn thực hiện gán file backup đã tạo trước đó vào cơ sở dữ liệu mới này.

    9. Khôi phục lại 1 database từ 1 file sao lưu tất cả dữ liệu

    Trong ví dụ trước đây mình đã sử dụng tùy chọn –all-databases để sao lưu toàn bộ MySQL database vào một file. Để khôi phục lại tất cả dữ liệu này vào một database mới chúng ta sử dụng tùy chọn –one-database. Câu lệnh sẽ như sau:

    {{EJS9}}

    10. Export và Import một database trong 1 dòng lệnh

    Chúng ta có thể kết hợp quá trình sao lưu và khôi phục trong một câu lệnh bằng cách sử dụng câu lệnh:

    {{EJS10}}

    Trong câu lệnh trên, chúng ta xuất file backup của cơ sở dữ liệu có tên database_name, đồng thời import nó vào cơ sở dữ liệu mới tên là remote_database_name nằm trong một máy chủ MySQL khác là remote_host. Đừng quên bạn cần tạo cơ sở dữ liệu mới trong máy chủ từ xa để có chỗ import vào nhé.

    11. Sao lưu tự động với cron job

    Bạn có thể cài đặt trước thời gian sao lưu và để quá trình diễn ra một cách tự động. Nhờ vậy cơ sở dữ liệu sẽ được sao lưu thường xuyên, liên tục. Để làm được điều này, chúng ta sẽ sử dụng đến cronjob theo các bước sau:

    Bước 1: Tạo file .my.cnf trong thư mục home

    {{EJS11}}

    Thêm đoạn code sau vào file vừa tạo:

    {{EJS12}}

    Trong đó dbuserdbpasswd lần lượt là tên đăng nhập và mật khẩu của máy chủ MySQL

    Bước 2: Thiết lập quyền truy cập cho file để chỉ có bạn hoặc người được bạn cấp quyền mới có thể đọc và sửa file này

    {{EJS13}}

    Bước 3: Tạo directory để chứa file backup

    {{EJS14}}

    Bước 4: Mở file crontab

    {{EJS15}}

    Bạn thêm dòng lênh sau để tự động backup vào lúc 5 giờ sáng mỗi ngày:

    {{EJS16}}

    Đừng quên thay thế username với tên username thật.

    Bạn cũng có thể tự động xóa các file backup trong thời gian 45 ngày bằng cách tạo một file cronjob với nội dung:

    {{EJS17}}

    Với /path/to/backups là đường dẫn tới thư mục chứa file backup.

    Cách 2: Sử dụng phpMyAdmin để backupMySQL Database

    Bước 1: Trong cPanel hoặc các bảng điều khiển hosting khác, bạn mở phpMyAdmin

    Su dung phpMyAdmin de backup MySQL Database
    Sử dụng phpMyAdmin để backup MySQL Database 

    Bước 2: Chọn cơ sở dữ liệu cần sao lưu ở bên tay trái

    Chon co so du lieu can backup trong phpMyAdmin
    Chọn cơ sở dữ liệu cần backup trong phpMyAdmin 

    Bước 3: Chọn tab Export ở phần menu

     Chon tab Export
    Chọn tab export 

    Bước 4: Bạn chọn export method là Custom – display all possible options

     chon Export Method Custom
    Lựa chọn Export method là Custom 

    Bước 5: Chọn các table mà bạn muốn sao lưu

    Đánh dấu tick vào những bảng mà bạn muốn sao lưu. Trong trường hợp không chắc chắn nên sao lưu bảng nào thì bạn nên giữ nguyên như mặc định.

    chon cac muc muon sao luu
    Chọn các bảng muốn sao lưu 

    Bước 6: Trong mục Compression bạn lựa chọn Gzipped còn các mục khác bạn giữ nguyên

    Nen file voi dinh dang gzip
    Nén file với định dạng gzip

    Bước 7: Nhấn nút Go để tải file xuống. File tải xuống sẽ có đuôi .sql.gz

    tai file backup xuong
    Tải file backup xuong

    Cách 3: Hướng dẫn sao lưu MySQL database và các tệp tin vào FTP Server

    Đối với những quản trị viên website dày dạn kinh nghiệm và đang sử dụng một máy chủ VPS, sẽ là tốt nhất nếu bạn sao lưu cơ sở dữ liệu MySQL và các tệp web server vào máy chủ FTP. Với giao thức FTP hoặc NAS, thông tin được an toàn trong quá trình truyền và nhận file. Bạn sẽ sử dụng lệnh mysqldump để backup lần lượt từng database, sau đó chuyển các file backup lên FTP server.

    {{EJS18}}

    Cách 4: Sử dụng PHP để sao lưu MySQL database

    Bạn có thể sử dụng đoạn code PHP dưới đây để sao lưu cơ sở dữ liệu MySQL với truy vấn SELECT INTO OUTFILE

    {{EJS19}}

    Để restore các file backup, bạn sử dụng truy vấn LOAD DATA INFILE:

    {{EJS20}}

    Cách 5: Hướng dẫn sao lưu MySQL database qua SSH

    Trong phần quản trị hosting, bạn cần cho phép sử dụng SSH để truy cập vào máy chủ. SSH được tích hợp sẵn trong terminal của các máy Linux. Với các máy tính Windows, bạn có thể sử dụng các phần mềm thay thế khác như Git bash hoặc Putty

    Một vài cách sao lưu MySQL Database khác

    – Backup MySQL database và chuyển sang Amazon S3:

    Chúng ta có thể tiến hành sao lưu cơ sở dữ liệu MySQL sang Amazon S3 bằng cách sử dụng một shell script. Về cơ bản, chúng ta sẽ chạy shell script sử dụng các lệnh mysqldump và gzip để nén file backup tương tự như phần trên sau đó dùng AWS CLI để upload file lên Amazon S3. Để tự động hóa quá trình này hàng ngày, chúng ta sử dụng câu lệnh cron

    – Backup MySQL Database tự động trên máy tính Linux

    Trong Linux, chúng ta sử dụng câu lệnh sau:

    {{EJS21}}

    – Sử dụng AutoMyQueryBackup để tự động backup MySQL database

    automysqlbackup có đầy đủ các tùy chọn: backup một database, nhiều database hoặc tất cả database. File backup sẽ được nén dưới dạng gzip hoặc bzip2. Nó cũng sẽ thường xuyên dọn dẹp những bản backup cũ để không làm đầy ổ cứng.

    – Sử dụng Shell Script trong Ubuntu để backup MySQL database

    Lời kết

    Bây giờ bạn đã biết cách backup và restore cơ sở dữ liệu MySQL bằng nhiều cách khác nhau. Trong đó đơn giản nhất là sử dụng phpMyAdmin hoặc câu lệnh mysqldump. Nếu bạn muốn có thêm nhiều hướng dẫn chi tiết về quản trị máy chủ và cơ sở dữ liệu, hãy tiếp tục theo dõi những bài viết tiếp theo trên blog của chúng tôi.

    P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

    Thuê VPS Giá Rẻ tại BKHOST

    Khuyến mãi giảm giá cực sâu, chỉ từ 62k/tháng. Đăng ký ngay hôm nay:

    thuê cloud server giá rẻ

    Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
    Bình luận
    Trượt lên đầu trang
    Miễn phí cước gọi
    Chat ngay qua Zalo
    Chat ngay qua Messenger
    Bạn đã hài lòng với trải nghiệm trên Bkhost.vn?
    Cảm ơn lượt bình chọn của bạn, Chúc bạn 1 ngày tốt lành !