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

Hướng dẫn Sao lưu và Khôi phục (Xuất và Nhập) Cơ sở dữ liệu MySQL

phpMyAdmin có thể được sử dụng để xuất hoặc sao lưu cơ sở dữ liệu MySQL hoặc MariaDB một cách dễ dàng. Tuy nhiên, nếu kích thước cơ sở dữ liệu rất lớn, có lẽ đó không phải là một ý kiến ​​hay. phpMyAdmin cho phép người dùng lưu kết xuất cơ sở dữ liệu dưới dạng tệp hoặc hiển thị trên màn hình, liên quan đến việc xuất các câu lệnh SQL từ máy chủ và truyền dữ liệu qua kết nối mạng chậm hơn hoặc Internet đến máy tính của người dùng. Quá trình này làm chậm quá trình xuất, tăng thời gian khóa cơ sở dữ liệu và do đó MySQL hoặc MariaDB không khả dụng, làm chậm máy chủ và có thể chỉ làm sập máy chủ Apache HTTPD nếu quá nhiều kết nối web đến làm mất tài nguyên của hệ thống.

Cách tốt hơn để sao lưu và xuất cơ sở dữ liệu MySQL hoặc MariaDB là thực hiện tác vụ cục bộ trên máy chủ để dữ liệu của bảng có thể được kết xuất ngay lập tức trên đĩa cục bộ mà không bị chậm trễ. Như vậy tốc độ xuất sẽ nhanh hơn và giảm thời gian cơ sở dữ liệu hoặc bảng MySQL hoặc MariaDB bị khóa truy cập. Hướng dẫn này là hướng dẫn về cách sao lưu (xuất) và khôi phục (nhập) (các) cơ sở dữ liệu MySQL hoặc MariaDB trên chính máy chủ cơ sở dữ liệu bằng cách sử dụng mysqldump mysql các tiện ích. Về cơ bản có hai phương pháp để sao lưu MySQL hoặc MariaDB, một là sao chép tất cả các tệp bảng (tệp * .frm, * .MYD và * .MYI) hoặc bằng cách sử dụng mysqlhotcopy tiện ích, nhưng nó chỉ hoạt động cho các bảng MyISAM. Hướng dẫn dưới đây sẽ tập trung vào mysqldump hoạt động cho cả bảng MyISAM và InnoDB.

Cách xuất hoặc sao lưu hoặc kết xuất cơ sở dữ liệu MySQL hoặc MariaDB

Để xuất cơ sở dữ liệu MySQL hoặc MariaDB thành tệp kết xuất, chỉ cần nhập cú pháp lệnh sau vào trình bao. Bạn có thể sử dụng Telnet hoặc SSH để đăng nhập từ xa vào máy nếu bạn không có quyền truy cập vào hộp thực.

mysqldump -u username -ppassword database_name > dump.sql

Thay thế tên người dùng với một ID người dùng MySQL hoặc MariaDB hợp lệ, mật khẩu với mật khẩu hợp lệ cho người dùng (QUAN TRỌNG:không có dấu cách sau -p và mật khẩu, nếu không mysqldump sẽ nhắc bạn nhập mật khẩu nhưng sẽ coi mật khẩu là tên cơ sở dữ liệu, do đó, sao lưu sẽ không thành công) và database_name với tên thực của cơ sở dữ liệu bạn muốn xuất. Cuối cùng, bạn có thể đặt bất kỳ tên nào bạn thích cho tệp kết xuất SQL đầu ra, ở đây là dump.sql .

Toàn bộ dữ liệu, bảng, cấu trúc và cơ sở dữ liệu của database_name sẽ được sao lưu vào tệp văn bản SQL có tên là dump.sql bằng lệnh trên.

Cách chỉ xuất cấu trúc cơ sở dữ liệu MySQL hoặc MariaDB

Nếu bạn không còn cần dữ liệu bên trong các bảng của cơ sở dữ liệu (không chắc), chỉ cần thêm –no-data chuyển sang chỉ xuất cấu trúc của bảng. Ví dụ:cú pháp là:

mysqldump -u username -ppassword --no-data database_name > dump.sql

Cách chỉ sao lưu dữ liệu của cơ sở dữ liệu MySQL hoặc MariaDB

Nếu bạn chỉ muốn dữ liệu được sao lưu, hãy sử dụng –no-create-info lựa chọn. Với cài đặt này, kết xuất sẽ không tạo lại cơ sở dữ liệu, bảng, trường và các cấu trúc khác khi nhập. Chỉ sử dụng điều này nếu bạn khá chắc chắn rằng bạn có một cơ sở dữ liệu trùng lặp với cùng cấu trúc, nơi bạn chỉ cần làm mới dữ liệu.

mysqldump -u username -ppassword --no-create-info database_name > dump.sql

Cách kết hợp một số cơ sở dữ liệu MySQL hoặc MariaDB vào tệp văn bản

–databases tùy chọn cho phép bạn chỉ định nhiều hơn 1 cơ sở dữ liệu. Cú pháp ví dụ:

mysqldump -u username -ppassword --databases db_name1 [db_name2 ...] > dump.sql

Cách kết xuất tất cả cơ sở dữ liệu trong MySQL hoặc Máy chủ MariaDB

Để kết xuất tất cả cơ sở dữ liệu, hãy sử dụng –tất cả cơ sở dữ liệu và không cần chỉ định tên của cơ sở dữ liệu nữa.

mysqldump -u username -ppassword --all-databases > dump.sql

Cách sao lưu trực tuyến bảng InnoDB

Việc sao lưu cơ sở dữ liệu không thể tránh khỏi khiến máy chủ MySQL hoặc MariaDB không khả dụng cho các ứng dụng vì khi xuất, tất cả các bảng có khóa đọc toàn cục bằng cách sử dụng FLUSH TABLES WITH READ LOCK ở đầu kết xuất cho đến khi kết thúc. Vì vậy, mặc dù các câu lệnh READ có thể tiếp tục, tất cả các câu lệnh INSERT, UPDATE và DELETE sẽ phải xếp hàng do các bảng bị khóa, như thể MySQL hoặc MariaDB bị ngừng hoạt động. Nếu bạn đang sử dụng InnoDB, –single-transaction là cách để giảm thiểu khoảng thời gian khóa này đến mức gần như không tồn tại như khi thực hiện sao lưu trực tuyến. Nó hoạt động bằng cách đọc tọa độ nhật ký nhị phân ngay sau khi khóa được lấy và khóa sau đó được giải phóng ngay lập tức.

Cú pháp:

mysqldump -u username -ppassword  --all-databases --single-transaction > dump.sql

Cách khôi phục và nhập cơ sở dữ liệu MySQL hoặc MariaDB

Bạn có thể khôi phục từ phpMyAdmin bằng cách sử dụng tab Nhập. Để nhanh hơn, hãy tải tệp kết xuất lên máy chủ MySQL hoặc MariaDB và sử dụng lệnh sau để nhập cơ sở dữ liệu trở lại máy chủ MySQL hoặc MariaDB.

mysql -u username -ppassword database_name < dump.sql
Nếu bạn muốn kết nối từ xa với máy chủ MySQL hoặc MariaDB trên một máy chủ khác, hãy thêm -h server-name-or-IP-address vào lệnh.

Việc nhập và xuất cơ sở dữ liệu MySQL hoặc MariaDB không chỉ quan trọng để khôi phục dữ liệu khi xảy ra thảm họa mà còn cung cấp một cách dễ dàng để di chuyển hoặc chuyển sang máy chủ khác, chẳng hạn như khi chuyển đổi nhà cung cấp dịch vụ lưu trữ web. Tuy nhiên, hãy lưu ý rằng một vấn đề phổ biến - mã hóa bộ ký tự. Bản phát hành mới hơn của mysqldump sử dụng UTF8 làm bộ ký tự mặc định nếu không có gì được chỉ định, trong khi các phiên bản cũ hơn (thông thường hơn 4.1) sử dụng Latin1 làm bộ ký tự mặc định. Nếu bộ ký tự cơ sở dữ liệu của bạn là Latin1 và kết xuất trong đối chiếu UTF8, dữ liệu có thể trở thành rác rưởi, bị cắt xén hoặc không thể đọc được (thường xuyên xảy ra với blog WordPress). Trong trường hợp này, hãy sử dụng –default-character-set =charset_name tùy chọn để chỉ định bộ ký tự hoặc chuyển đổi cơ sở dữ liệu thành UTF8.


  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 để thực thi PHP được lưu trữ trong cơ sở dữ liệu MySQL?

  2. Menu cây xây dựng PHP / MySQL

  3. Mẹo nâng cấp từ MySQL 5.7 lên MySQL 8

  4. Nhập dữ liệu từ Bảng tính Excel hoặc CVS ​​vào MySQL

  5. Vui lòng cho ví dụ kết nối JavaFX MySQL