Backup và Restore Database MySQL bằng Command Line

Thảo luận trong 'MySQL' bắt đầu bởi xman, 25/7/15.

  1. xman

    xman Administrator Thành viên BQT

    Tham gia ngày:
    6/7/15
    Bài viết:
    44
    Đã được thích:
    2
    Điểm thành tích:
    8
    Back up sử dụng lệnh (sử dụng mysqldump)

    Nếu bạn có quyền truy cập shell hoặc telnet vào server, bạn có thể backup dữ liệu MySQL bằng cách sử dụng lệnh mysqldump. Lệnh này kết nối đến MySQL server và tạo file SQL dump. File dump được chứa các khai báo SQL cần thiết để tạo lại database. Bên dưới là thao tác cơ bản:

    $ mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]
    • [uname] Tên username truy cập database
    • [pass] Mật khẩu truy cập database (lưu ý là không có khoảng cách giữa -p và mật khẩu)
    • [dbname] Tên database
    • [backupfile.sql] Đặt tên file backup sẽ tạo ra
    • [--opt] Cách tham số tùy chọn cho mysqldump
    Ví dụ để backup database tên là 'Tutorials' với username là 'root' và không có mật khẩu lưu thành file tut_backup.sql, bạn có thể dùng lệnh như sau:

    Mã:
    $ mysqldump -u root -p Tutorials > tut_backup.sql
    Lệnh này sẽ backup database tên là 'Tutorials' và lưu thành file tên là tut_backup.sql sẽ chứa tất cả các câu lệnh SQL cần thiết để tạo lại database.

    Lệnh mysqldump còn có thể chỉ định các table riêng biệt để backup. Ví dụ để chỉ backup table php_tutorials và asp_tutorials trong database 'Tutorials' ta sử dụng câu lệnh bên dưới. Mỗi table cách nhau bằng khoảng trắng.

    Mã:
    $ mysqldump -u root -p Tutorials php_tutorials asp_tutorials > tut_backup.sql
    Đôi khi muốn backup nhiều database cùng một lúc. Trong trường hợp này bạn chỉ cần dùng thêm tham số --database kèm theo danh sách các database mà bạn muốn backup. Mỗi database cách nhau bằng khoảng trắng.

    Mã:
    $ mysqldump -u root -p --databases Tutorials Articles Comments > content_backup.sql
    Nếu bạn muốn backup tất cả database trên server cùng một lúc bạn có thể dùng tham số --all-databases. Việc này để cho MySQL biết dump tất cả các database nó có trên server ra.

    Mã:
    $ mysqldump -u root -p --all-databases > alldb_backup.sql
    Câu lệnh mysqldump còn có một vào tham số tùy chọn sau:

    --add-drop-table: Để MySQL biết sẽ thêm khai báo DROP TABLE trước mỗi câu lệnh CREATE TABLE trong file dump.
    --no-data: Chỉ dump cấu trúc database, không có dump nội dung trong table.
    --add-locks: Thêm câu lệnh LOCK TABLES và UNLOCK TABLES trong file dump.

    Dùng lệnh mysqldump có mặt lợi và mặt hại. Mặt lợi của việc dùng lệnh mysqldump là nó đơn giản dễ dùng và nó đảm bảo các vấn đề liên quan đến lock table cho bạn. Mặt hại là lệnh này sẽ lock table lại và nếu kích cỡ table của bạn rất lớn thì việc dùng lệnh này sẽ khiến cho việc cấm truy xuất đến table của user sẽ khá lâu.

    Backup MySQL Database với nén dữ liệu

    Nếu database của bạn rất lớn và bạn muốn nén lại khi sử dụng mysqldump. Hãy sử dụng lệnh bên dứoi và nén thành dạng gzip file.

    Mã:
    $ mysqldump -u [uname] -p[pass] [dbname] | gzip -9 > [backupfile.sql.gz]
    Nếu bạn muốn giải nén .gz file, dùng lệnh sau:

    Mã:
    $ gunzip [backupfile.sql.gz]
    Khôi phục MySQL Database

    Bên trên là backup Tutorials database thành file tut_backup.sql. Để tạo lại Tutorials database bạn cần làm theo 2 bước sau:

    • Tạo một database nào đó trên server
    • Nạp file sql vào bằng lệnh mysql:
    Mã:
    $ mysql -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]
    Câu lệnh dưới đây sẽ khôi phục file tut_backup.sql vào Tutorials database.

    Mã:
    $ mysql -u root -p Tutorials < tut_backup.sql
    Để khôi phục file nén ta dùng lệnh sau:

    Mã:
    gunzip < [backupfile.sql.gz] | mysql -u [uname] -p[pass] [dbname]
    Nếu bạn muốn khôi phục database đã tồn tại bạn cần sử dụng câu lệnh mysqlimport. Cú pháp của câu lệnh này như sau:

    Mã:
    mysqlimport -u [uname] -p[pass] [dbname] [backupfile.sql]
    Chúc các bạn thành công !
     

Chia sẻ trang này