Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sử dụng mysqldump để sao lưu MySQL hoặc MariaDB

MySQL vàMariaDB bao gồm tiện ích themysqldump để đơn giản hóa quá trình tạo bản sao lưu cơ sở dữ liệu hoặc hệ thống cơ sở dữ liệu. Sử dụng mysqldump tạo một bản sao lưu hợp lý . Bạn chỉ có thể sử dụng công cụ này nếu quy trình cơ sở dữ liệu của bạn có thể truy cập và đang chạy.

Nếu cơ sở dữ liệu của bạn không thể truy cập được vì bất kỳ lý do gì, thay vào đó, bạn có thể tạo một bản sao lưu vật lý , là bản sao của cấu trúc hệ thống tệp chứa dữ liệu của bạn.

Các hướng dẫn trong hướng dẫn này áp dụng cho cả MySQL và MariaDB. Để đơn giản hóa, tên MySQL sẽ được sử dụng để áp dụng cho cả hai.

Trước khi bạn bắt đầu

  • Bạn sẽ cần cài đặt MySQL hoặc MariaDB đang hoạt động và người dùng cơ sở dữ liệu để chạy sao lưu. Để được trợ giúp cài đặt, hãy xem tài liệu Linode MySQL.

  • Bạn sẽ cần quyền truy cập root vào hệ thống hoặc tài khoản người dùng có sudo đặc quyền.

Sao lưu cơ sở dữ liệu

mysqldump cú pháp chung của lệnh là:

mysqldump -u [username] -p [databaseName] > [filename]-$(date +%F).sql
  • mysqldump nhắc nhập mật khẩu trước khi bắt đầu quá trình sao lưu.
  • Tùy thuộc vào kích thước của cơ sở dữ liệu, có thể mất một lúc để hoàn thành.
  • Bản sao lưu cơ sở dữ liệu sẽ được tạo trong thư mục lệnh được chạy.
  • -$(date +%F) thêm dấu thời gian vào tên tệp.

Các trường hợp sử dụng ví dụ bao gồm:

  • Tạo bản sao lưu của toàn bộ Hệ thống quản lý cơ sở dữ liệu (DBMS):

      mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
    
  • Sao lưu một cơ sở dữ liệu cụ thể. Thay thế db1 với tên của cơ sở dữ liệu bạn muốn sao lưu:

      mysqldump -u username -p db1 --single-transaction --quick --lock-tables=false > db1-backup-$(date +%F).sql
    
  • Sao lưu một bảng từ bất kỳ cơ sở dữ liệu nào. Trong ví dụ dưới đây, table1 được xuất từ ​​cơ sở dữ liệu db1 :

      mysqldump -u username -p --single-transaction --quick --lock-tables=false db1 table1 > db1-table1-$(date +%F).sql
    

Đây là bảng phân tích về mysqldump các tùy chọn lệnh được sử dụng ở trên:

  • --single-transaction :Đưa ra câu lệnh BEGIN SQL trước khi kết xuất dữ liệu từ máy chủ.
  • --quick :Thực thi các bảng kết xuất từng hàng. Điều này mang lại sự an toàn hơn cho các hệ thống có ít RAM và / hoặc cơ sở dữ liệu lớn, nơi việc lưu trữ các bảng trong bộ nhớ có thể trở thành vấn đề.
  • --lock-tables=false :Không khóa bảng cho phiên sao lưu.

Tự động hóa sao lưu với cron

Các mục nhập có thể được thêm vào /etc/crontab thường xuyên lên lịch sao lưu cơ sở dữ liệu.

  1. Tạo một tệp để giữ thông tin đăng nhập của người dùng gốc MySQL sẽ thực hiện sao lưu. Lưu ý rằng người dùng hệ thống có thư mục chính mà tệp này được lưu trữ trong có thể không liên quan đến bất kỳ người dùng MySQL nào.

    Tệp:/ home / example_user / .mylogin.cnf
    1
    2
    3
    
    [client]
    user = root
    password = MySQL root user's password
  2. Hạn chế quyền đối với tệp thông tin xác thực:

    chmod 600 /home/example_user/.mylogin.cnf
    
  3. Tạo tệp công việc cron. Dưới đây là ví dụ cron job sao lưu toàn bộ hệ quản trị cơ sở dữ liệu hàng ngày vào lúc 1 giờ sáng:

    Tệp:/ etc / cron.daily / mysqldump
    1
    
    0 1 * * * /usr/bin/mysqldump --defaults-extra-file=/home/example_user/.my.cnf -u root --single-transaction --quick --lock-tables=false --all-databases > full-backup-$(date +\%F).sql

    Để biết thêm thông tin về cron, hãy xem các trang hướng dẫn sử dụng thecron (8) vàcron (5).

Khôi phục bản sao lưu

Cú pháp chung của lệnh khôi phục là:

mysql -u [username] -p [databaseName] < [filename].sql
  • Khôi phục toàn bộ bản sao lưu DBMS. Bạn sẽ được nhắc nhập mật khẩu của người dùng gốc MySQL:
    Điều này sẽ ghi đè tất cả dữ liệu hiện tại trong hệ thống cơ sở dữ liệu MySQL

      mysql -u root -p < full-backup.sql
    
  • Khôi phục một kết xuất cơ sở dữ liệu duy nhất. Cơ sở dữ liệu đích trống hoặc cũ phải tồn tại để nhập dữ liệu vào và người dùng MySQL mà bạn đang chạy lệnh phải có quyền ghi vào cơ sở dữ liệu đó:

      mysql -u [username] -p db1 < db1-backup.sql
    
  • Khôi phục một bảng duy nhất, bạn phải có cơ sở dữ liệu đích sẵn sàng để nhận dữ liệu:

      mysql -u dbadmin -p db1 < db1-table1.sql
    

Thông tin khác

Bạn có thể muốn tham khảo các nguồn sau đây để biết thêm thông tin về chủ đề này. Mặc dù những điều này được cung cấp với hy vọng rằng chúng sẽ hữu ích, xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc kịp thời của các tài liệu được lưu trữ bên ngoài.

  • Trang Phương pháp sao lưu cơ sở dữ liệu MySQL
  • mysqldump - Một Chương trình Sao lưu Cơ sở dữ liệu, Hướng dẫn Tham khảo MySQL

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để đặt mysqli ném ngoại lệ bằng MYSQLI_REPORT_STRICT?

  2. Truy vấn chọn máy chủ chéo MySQL

  3. Khôi phục cấu trúc bảng từ các tệp frm và ibd

  4. MySQL trong đám mây - Di chuyển trực tuyến từ Amazon RDS sang Máy chủ của riêng bạn:Part2

  5. Làm cách nào để sử dụng đúng đối tượng PDO cho truy vấn SELECT được tham số hóa