Mysql thả cơ sở dữ liệu rất chậm
Ứ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 Show 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ấtmysqldump 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ụngCó 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 MySQLNế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ómMộ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
Để đả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ụ
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ọnMộ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ọnNgoà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ếnBạ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 DROP TABLE có chậm không?Thông thường, nó khá nhanh (0. 1 giây), nhưng cũng có những khoảng thời gian vài phút, khi mỗi DROP TABLE mất 1 - 2 phút để thực thi (có và không thanh lọc, mã SQL xem bên dưới).
Tại sao cơ sở dữ liệu MySQL quá chậm?Tranh chấp bộ nhớ
. Chúng tôi có thể kiểm tra kích thước của vùng đệm bằng cách xem bộ đếm Giám sát hiệu suất (perfmon) và các số liệu SQL Server khác. Vùng đệm lớn hơn sẽ giúp tăng tốc các ứng dụng SQL của bạn.
Chúng ta có thể bỏ cơ sở dữ liệu trong MySQL không?Câu lệnh DROP DATABASE của MySQL
. The DROP DATABASE statement is used to drop an existing SQL database. |