Ứng dụng khách
--fields-enclosed-by='"'5 là một chương trình sao lưu được viết bởi Igor Romanenko. Nó có thể được sử dụng để kết xuất cơ sở dữ liệu hoặc tập hợp cơ sở dữ liệu để sao lưu hoặc chuyển sang máy chủ cơ sở dữ liệu khác [không nhất thiết phải là MariaDB hoặc MySQL]. Kết xuất thường chứa các câu lệnh SQL để tạo bảng, điền vào bảng hoặc cả hai. Tuy nhiên,
--fields-enclosed-by='"'5 cũng có thể được sử dụng để tạo tệp ở định dạng CSV, văn bản được phân tách khác hoặc định dạng XML
Nếu bạn đang thực hiện sao lưu trên máy chủ và tất cả các bảng của bạn đều là bảng MyISAM, hãy cân nhắc sử dụng mysqlhotcopy thay vì nó có thể thực hiện sao lưu nhanh hơn và khôi phục nhanh hơn
mysqldump kết xuất các trình kích hoạt cùng với các bảng, vì đây là một phần của định nghĩa bảng. Tuy nhiên, các thủ tục, dạng xem và sự kiện được lưu trữ thì không và cần tạo lại các tham số bổ sung một cách rõ ràng [ví dụ:
--fields-enclosed-by='"'8 và
--fields-enclosed-by='"'9]. Tuy nhiên, các thủ tục và chức năng cũng là một phần của bảng hệ thống [ví dụ mysql. thủ tục]
--fields-enclosed-by='"'5 ủng hộ
Hiệu suất
mysqldump thường không tiêu tốn nhiều tài nguyên CPU trên phần cứng hiện đại vì theo mặc định, nó sử dụng một luồng đơn. Phương pháp này tốt cho một máy chủ được tải nặng
Tuy nhiên, đầu vào/đầu ra của đĩa mỗi giây [IOPS] có thể tăng lên vì nhiều lý do. Khi bạn sao lưu trên cùng một thiết bị với cơ sở dữ liệu, điều này sẽ tạo ra IOPS ngẫu nhiên không cần thiết. Quá trình kết xuất được thực hiện tuần tự, trên cơ sở từng bảng, gây ra quá trình quét toàn bộ bảng và bỏ sót nhiều trang bộ đệm trên các bảng không được lưu hoàn toàn vào bộ nhớ đệm
Bạn nên sao lưu từ một vị trí mạng để xóa đĩa IOPS trên máy chủ cơ sở dữ liệu, nhưng điều quan trọng là sử dụng một cạc mạng riêng để giữ băng thông mạng khả dụng cho lưu lượng truy cập thường xuyên
Mặc dù mysqldump theo mặc định sẽ bảo toàn tài nguyên của bạn cho các đĩa trục chính thông thường và phần cứng lõi thấp, nhưng điều này không có nghĩa là các kết xuất đồng thời không thể hưởng lợi từ kiến trúc phần cứng như SAN, bộ lưu trữ flash, khối lượng công việc ghi thấp. Thời gian sao lưu sẽ được hưởng lợi từ một công cụ như MyDumper
Cách sử dụng
Có bốn cách chung để gọi
--fields-enclosed-by='"'5
shell> mysqldump [options] db_name [tbl_name ...] shell> mysqldump [options] --databases db_name ... shell> mysqldump [options] --all-databases shell> mysqldump [options] --system=[option_list]
Nếu bạn không đặt tên cho bất kỳ bảng nào sau db_name hoặc nếu bạn sử dụng tùy chọn
--fields-enclosed-by=0x222 hoặc
--fields-enclosed-by=0x223, thì toàn bộ cơ sở dữ liệu sẽ bị hủy
--fields-enclosed-by='"'5 không kết xuất cơ sở dữ liệu INFORMATION_SCHEMA [hoặc PERFORMANCE_SCHEMA, nếu được bật] theo mặc định. MariaDB kết xuất
--fields-enclosed-by=0x225 nếu bạn đặt tên rõ ràng cho nó trên dòng lệnh, mặc dù hiện tại bạn cũng phải sử dụng tùy chọn
--fields-enclosed-by=0x226
Để xem danh sách các tùy chọn mà phiên bản
--fields-enclosed-by='"'5 của bạn hỗ trợ, hãy thực hiện
--fields-enclosed-by=0x228
Hàng theo hàng so với. đệm
--fields-enclosed-by='"'5 có thể truy xuất và kết xuất nội dung bảng theo từng hàng hoặc nó có thể truy xuất toàn bộ nội dung từ một bảng và lưu vào bộ nhớ đệm trước khi kết xuất. Bộ đệm trong bộ nhớ có thể là một vấn đề nếu bạn kết xuất các bảng lớn. Để kết xuất bảng theo từng hàng, hãy sử dụng tùy chọn
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 920200 [hoặc
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 920201, cho phép
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 920200]. Tùy chọn
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 920201 [và do đó là
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 920200] được bật theo mặc định, vì vậy để bật bộ nhớ đệm, hãy sử dụng
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 920205
--fields-enclosed-by='"'5 trong MariaDB 10. 3 bao gồm logic để phục vụ cho mysql. bảng giao dịch_đăng ký. Không thể sử dụng
--fields-enclosed-by='"'5 từ bản phát hành MariaDB trước đó trên MariaDB 10. 3 và hơn thế nữa
mysqldump và các phiên bản cũ của MySQL
Nếu bạn đang sử dụng phiên bản gần đây của
--fields-enclosed-by='"'5 để tạo một kết xuất được tải lại vào máy chủ MySQL rất cũ, bạn không nên sử dụng tùy chọn
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 920201 hoặc
mysql db_name < backup-file.sql0. Sử dụng
mysql db_name < backup-file.sql1 để thay thế
Tùy chọn
--fields-enclosed-by='"'5 hỗ trợ các tùy chọn sau
Tùy chọn nhóm
Một số tùy chọn
--fields-enclosed-by='"'5 là cách viết tắt của các nhóm tùy chọn khác
- Việc sử dụng
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
1 cũng giống như chỉ địnhmysql db_name < backup-file.sql
5,mysql db_name < backup-file.sql
6,mysql db_name < backup-file.sql
7,mysql db_name < backup-file.sql
8,mysql db_name < backup-file.sql
0,shell> mysqldump db_name > backup-file.sql
0,shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
0 vàshell> mysqldump db_name > backup-file.sql
2. Tất cả các tùy chọn màshell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
1 đại diện cũng được bật theo mặc định vìshell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
1 được bật theo mặc định - Việc sử dụng
shell> mysqldump db_name > backup-file.sql
5 giống như chỉ định các tùy chọnshell> mysqldump db_name > backup-file.sql
6,shell> mysqldump db_name > backup-file.sql
7,shell> mysqldump db_name > backup-file.sql
8,shell> mysqldump db_name > backup-file.sql
9 vàshell> mysql db_name < backup-file.sql
0
Để đảo ngược tác dụng của một tùy chọn nhóm, hãy sử dụng biểu mẫu
shell> mysql db_name < backup-file.sql1 [
mysql db_name < backup-file.sql1 hoặc
shell> mysql db_name < backup-file.sql3]. Cũng có thể chỉ chọn một phần tác dụng của tùy chọn nhóm bằng cách theo dõi nó với các tùy chọn bật hoặc tắt các tính năng cụ thể. Dưới đây là một số ví dụ
- Để chọn hiệu ứng của
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
1 ngoại trừ một số tính năng, hãy sử dụng tùy chọnshell> mysql db_name < backup-file.sql
5 cho từng tính năng. Để vô hiệu hóa phần chèn mở rộng và bộ nhớ đệm, hãy sử dụngshell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
1shell> mysql db_name < backup-file.sql
7shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
5. [Trên thực tế,shell> mysql db_name < backup-file.sql
7shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
5 là đủ vìshell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
1 được bật theo mặc định. ] - Để đảo ngược
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
1 cho tất cả các tính năng ngoại trừ vô hiệu hóa chỉ mục và khóa bảng, hãy sử dụngmysql db_name < backup-file.sql
1mysql db_name < backup-file.sql
8shell> mysqldump db_name > backup-file.sql
0
Khi bạn bật hoặc tắt có chọn lọc hiệu ứng của một tùy chọn nhóm, thứ tự rất quan trọng vì các tùy chọn được xử lý trước đến cuối. Ví dụ:
mysql db_name < backup-file.sql8
shell> mysqldump db_name > backup-file.sql0
mysql db_name < backup-file.sql1 sẽ không có tác dụng như mong muốn;
Các ký tự đặc biệt trong các giá trị tùy chọn
Một số tùy chọn, như
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name0, chấp nhận một chuỗi. Chuỗi có thể được trích dẫn, nếu cần thiết. Ví dụ: trên các hệ thống Unix, đây là tùy chọn để đặt các trường trong dấu ngoặc kép
--fields-enclosed-by='"'
Một cách khác để chỉ định giá trị thập lục phân của một ký tự. Ví dụ: cú pháp sau hoạt động trên mọi nền tảng
--fields-enclosed-by=0x22
Tệp tùy chọn
Ngoài việc đọc các tùy chọn từ dòng lệnh,
--fields-enclosed-by='"'5 cũng có thể đọc các tùy chọn từ tệp tùy chọn. Nếu một tùy chọn không xác định được cung cấp cho
--fields-enclosed-by='"'5 trong tệp tùy chọn, thì tùy chọn đó sẽ bị bỏ qua
Các tùy chọn sau đây liên quan đến cách các công cụ dòng lệnh của MariaDB xử lý các tệp tùy chọn. Chúng phải được đưa ra làm đối số đầu tiên trên dòng lệnh
Trong MariaDB 10. 2 trở lên,
--fields-enclosed-by='"'5 được liên kết với Trình kết nối MariaDB/C. Tuy nhiên, Trình kết nối MariaDB/C chưa xử lý việc phân tích cú pháp các tệp tùy chọn cho máy khách này. Điều đó vẫn được thực hiện bởi mã phân tích tệp tùy chọn máy chủ. Xem MDEV-19035 để biết thêm thông tin
Nhóm tùy chọn
--fields-enclosed-by='"'5 đọc các tùy chọn sau đây từ các tệp tùy chọn
Các giá trị NULL, ´NULL´ và rỗng trong XML
Đối với một cột có tên là
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name5, giá trị
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name6, một chuỗi rỗng và giá trị chuỗi
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name7 được phân biệt với nhau trong đầu ra do tùy chọn này tạo ra như sau
Đầu ra từ máy khách mysql khi chạy bằng tùy chọn
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name8 cũng tuân theo các quy tắc trước đó
Đầu ra XML từ mysqldump bao gồm không gian tên XML, như được hiển thị ở đây
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
phục hồi
Để khôi phục bản sao lưu được tạo bằng mysqldump, hãy sử dụng ứng dụng khách mysql để nhập kết xuất chẳng hạn
mysql db_name < backup-file.sql
Biến
Bạn cũng có thể đặt các biến sau [_______65_______9] và các tùy chọn boolean
shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql0 bằng cách sử dụng
ví dụ
Việc sử dụng phổ biến của
--fields-enclosed-by='"'5 là để tạo bản sao lưu toàn bộ cơ sở dữ liệu
shell> mysqldump db_name > backup-file.sql
Bạn có thể tải lại tệp kết xuất vào máy chủ như thế này
shell> mysql db_name < backup-file.sql
Hoặc như thế này
shell> mysql -e "source /path-to-backup/backup-file.sql" db_name
--fields-enclosed-by='"'5 cũng rất hữu ích để tạo cơ sở dữ liệu bằng cách sao chép dữ liệu từ máy chủ MariaDB này sang máy chủ MariaDB khác
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name
Có thể kết xuất một số cơ sở dữ liệu bằng một lệnh
shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql
Để kết xuất tất cả cơ sở dữ liệu, hãy sử dụng tùy chọn
--fields-enclosed-by=0x223
--fields-enclosed-by='"'0
Đối với các bảng InnoDB,
--fields-enclosed-by='"'5 cung cấp cách tạo bản sao lưu trực tuyến
--fields-enclosed-by='"'1
Bản sao lưu này có được khóa đọc toàn cầu trên tất cả các bảng [sử dụng
shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql5] khi bắt đầu kết xuất. Ngay sau khi có được khóa này, tọa độ nhật ký nhị phân được đọc và khóa được giải phóng. Nếu các câu lệnh cập nhật dài đang chạy khi câu lệnh FLUSH được đưa ra, máy chủ MariaDB có thể bị đình trệ cho đến khi các câu lệnh đó kết thúc. Sau đó, kết xuất sẽ không bị khóa và không làm phiền việc đọc và ghi trên bảng. Nếu các báo cáo cập nhật mà máy chủ MariaDB nhận được ngắn [về thời gian thực hiện], thời gian khóa ban đầu sẽ không đáng chú ý, ngay cả với nhiều bản cập nhật
Để khôi phục tại thời điểm [còn được gọi là "cuộn về phía trước", khi bạn cần khôi phục bản sao lưu cũ và phát lại các thay đổi đã xảy ra kể từ bản sao lưu đó], thường rất hữu ích khi xoay nhật ký nhị phân hoặc ít nhất là biết
--fields-enclosed-by='"'2
Hoặc là
--fields-enclosed-by='"'3
Các tùy chọn
shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql6 và
shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql7 có thể được sử dụng đồng thời, cung cấp một cách thuận tiện để tạo bản sao lưu trực tuyến phù hợp để sử dụng trước khi khôi phục tại thời điểm nếu các bảng được lưu trữ bằng công cụ lưu trữ InnoDB