Khi bảng mysql của bạn bị hỏng, sử dụng lệnh mysqlcheck để sửa chữa nó. Lệnh mysqlcheck kiểm tra, sửa chữa, tối ưu hóa và phân tích các bảng. 1. Kiểm tra một bảng cụ thể trong một cơ sở dữ liệu Nếu ứng dụng của bạn báo về một thông báo lỗi nói rằng một bảng cụ thể bị hỏng, thực hiện lệnh mysqlcheck để kiểm tra xem một bảng. Ví dụ sau đây sẽ kiểm tra bảng employee trong cơ sở dữ liệu aluhost. Mã: # mysqlcheck -c aluhost employee -u root -p Enter password: aluhost.employee OK Bạn cần phải nhập username/password đến lệnh mysqlcheck. Nếu không, bạn sẽ nhận được thông báo lỗi sau đây. [CODE ]# mysqlcheck -c aluhostemployee mysqlcheck: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect[/CODE] Lợi thế của lệnh mysqlcheck là nó có thể được thực hiện khi các daemon mysql đang chạy. Vì vậy, sử dụng lệnh mysqlcheck bạn có thể kiểm tra và sửa chữa bảng hỏng trong khi cơ sở dữ liệu vẫn chạy. 2. Kiểm tra tất cả các bảng trong một cơ sở dữ liệu Để kiểm tra xem tất cả các bảng trong cơ sở dữ liệu đặc biệt, không chỉ định tên bảng. Chỉ cần ghi rõ tên cơ sở dữ liệu. Ví dụ sau đây sẽ kiểm tra tất cả các bảng trong cơ sở dữ liệu alfresco. Mã: # mysqlcheck -c alfresco -u root -p Enter password: alfresco.JBPM_ACTION OK alfresco.JBPM_BYTEARRAY OK alfresco.JBPM_BYTEBLOCK OK alfresco.JBPM_COMMENT OK alfresco.JBPM_DECISIONCONDITIONS OK alfresco.JBPM_DELEGATION OK alfresco.JBPM_EVENT OK 3. Kiểm tra tất cả các bảng và tất cả cơ sở dữ liệu Để kiểm tra xem tất cả các bảng và tất cả các cơ sở dữ liệu sử dụng "–all-databases" cùng với tùy chọn -c như hình dưới đây. Mã: # mysqlcheck -c -u root -p --all-databases Enter password: aluhost.employee OK alfresco.JBPM_ACTION OK alfresco.JBPM_BYTEARRAY OK alfresco.JBPM_BYTEBLOCK OK .. .. mysql.help_category error : Table upgrade required. Please do "REPAIR TABLE `help_category`" or dump/reload to fix it! mysql.help_keyword error : Table upgrade required. Please do "REPAIR TABLE `help_keyword`" or dump/reload to fix it! .. Nếu bạn muốn kiểm tra tất cả các bảng của một vài cơ sở dữ liệu, chỉ rõ tên cơ sở dữ liệu sử dụng tùy chọn "-databases". Ví dụ sau đây sẽ kiểm tra tất cả các bảng trong cơ sở dữ liệu aluhost và centos. Mã: # mysqlcheck -c -u root -p --databases aluhost centos Enter password: aluhost .employee OK centos.JBPM_ACTION OK centos.JBPM_BYTEARRAY OK centos.JBPM_BYTEBLOCK OK 4. Phân tích bảng sử dụng mysqlcheck Sau đây phân tích bảng employee nằm trong cơ sở dữ liệu aluhost. Mã: # mysqlcheck -a aluhost employee -u root -p Enter password: aluhost.employee Table is already up to date Lệnh mysqlcheck sử dụng "ANALYZE TABLE" để phân tích. Trong khi mysqlcheck đang thực hiện lệnh phân tích bảng đã bị khóa và có sẵn cho quá trình khác chỉ có trong chế độ đọc. 5. Tối ưu hóa bảng sử dụng mysqlcheck Sau đây sẽ tối ưu hóa bảng employee nằm trong cơ sở dữ liệu aluhost. Mã: # mysqlcheck -o aluhost employee -u root -p Enter password: aluhost.employee OK Lệnh mysqlcheck sử dụng "OPTIMIZE TABLE". Khi bạn xóa nhiều hàng từ một bảng, tối ưu hóa giúp có được không gian chưa sử dụng và chống phân mảnh các tập tin dữ liệu. Điều này có thể cải thiện hiệu suất trên các bảng lớn đã trải qua một số cập nhật. 6. Sửa chữa bảng sử dụng mysqlcheck Việc sửa chữa sau bảng bảng employee nằm trong cơ sở dữ liệu aluhost. Mã: # mysqlcheck -r aluhost employee -u root -p Enter password: aluhost.employee OK Lệnh mysqlcheck sử dụng "REPAIR TABLE". Điều này sẽ sửa chữa và khắc phục một MyISAM hỏng và bảng lưu trữ. 7. Kết hợp kiểm tra, tối ưu hóa và sửa chữa bảng Thay vì kiểm tra và sửa chữa một cách riêng biệt. Bạn có thể kết hợp kiểm tra, tối ưu hóa và chức năng sửa chữa lại với nhau bằng "–auto-repair” như dưới đây. Các kiểm tra sau, tối ưu hóa và sửa chữa tất cả các bảng bị hỏng trong cơ sở dữ liệu aluhost. Mã: # mysqlcheck -u root -p --auto-repair -c -o aluhost Bạn cũng kiểm tra, tối ưu hóa và sửa chữa tất cả các bảng trên tất cả các cơ sở dữ liệu của bạn bằng cách sử dụng lệnh sau đây. Mã: # mysqlcheck -u root -p --auto-repair -c -o --all-databases Nếu bạn muốn biết những gì lệnh đang được thực hiện trong khi nó đang kiểm tra, thêm -debug-info như dưới đây. Điều này rất hữu ích khi bạn đang kiểm tra một bảng lớn. Mã: # mysqlcheck --debug-info -u root -p --auto-repair -c -o aluhost employee Enter password: aluhost.employee Table is already up to date User time 0.00, System time 0.00 Maximum resident set size 0, Integral resident set size 0 Non-physical pagefaults 344, Physical pagefaults 0, Swaps 0 Blocks in 0 out 0, Messages in 0 out 0, Signals 0 Voluntary context switches 12, Involuntary context switches 9 8. Thêm lựa chọn mysqlcheck Sau đây là một số trong những lựa chọn quan trọng mà bạn có thể sử dụng cùng với mysqlcheck. -A, –all-databases: Xem xét tất cả các cơ sở dữ liệu -a, –analyze: Phân tích tất cả bảng -1, –all-in-1: sử dụng một truy vấn cho mỗi cơ sở dữ liệu với các bảng liệt kê trong một dấu phẩy tách ra –auto-repair: Sửa chữa tự động sửa chữa bảng này nếu là bị hỏng -c, –check: Kiểm tra các lỗi bảng. -C, –check-only-changed: Kiểm tra bảng được thay đổi kể từ lần kiểm tra gần đây nhất. -g, –check-upgrade: Kiểm tra các thay đổi phụ thuộc vào phiên bản trong bảng -B, –databases Kiểm tra nhiều hơn một cơ sơ dữ liệu. -F, –fast: Kiểm tra bảng nếu không được đóng lại đúng cách –fix-db-names: Sửa tên cơ sơ dữ liệu –fix-table-names: Sửa tên bảng -f, –force: Tiếp tục kiểm tra thậm chí khi có một lỗi xảy ra. -e, –extended Perform extended check on a table. This will take a long time to execute. -m, –medium-check: Thực hiện kiểm tra mở rộng trên một bảng. Điều này sẽ mất một thời gian dài để thực thi. -o, –optimize Tối ưu hóa các bảng -q, –quick Chế độ nhanh hơn medium-check -r, –repair Sửa bảng bị hỏng .