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

Tự động kiểm tra và tối ưu hóa cơ sở dữ liệu MySQL với Crontab / Cron

MySQL là một hệ thống cơ sở dữ liệu miễn phí nhưng mạnh mẽ rất phổ biến. Nhưng ngay cả trong cơ sở dữ liệu lớn, các bảng có thể bị phân mảnh với chi phí do cập nhật liên tục hoặc thao tác xóa và chèn trên dữ liệu được lưu trữ trong cơ sở dữ liệu. Ngoài ra, cũng có khả năng cơ sở dữ liệu có thể bị hỏng. Vì vậy, thực hiện kiểm tra tình trạng cơ sở dữ liệu và tối ưu hóa máy chủ MySQL thường xuyên là một nhiệm vụ quan trọng.

Sẽ hơi rắc rối nếu quản trị viên cơ sở dữ liệu phải đăng nhập vào máy chủ hoặc khởi chạy phpMyAdmin để tối ưu hóa từng cơ sở dữ liệu hoặc từng bảng theo cách thủ công. Đôi khi quản trị viên DB có thể chỉ đơn giản là quên thực hiện công việc hoặc đặt tần suất tối ưu hóa thành ít lần hơn. Bạn nên kiểm tra mọi bảng trong cơ sở dữ liệu MySQL ít nhất một lần một ngày trên một máy chủ bận.

Có thể tự động hóa việc tối ưu hóa quy trình MySQL bằng cách sử dụng hàm crontab trong Linux / Unix / CentOS / FreeBSD. Công việc cron để kiểm tra và tối ưu hóa cơ sở dữ liệu MySQL có thể được tạo bằng cách sử dụng tiện ích máy khách mysqlcheck đi kèm với cài đặt MySQL. Ứng dụng khách mysqlcheck có thể kiểm tra, sửa chữa, tối ưu hóa và phân tích các bảng trong cơ sở dữ liệu MySQL.

Để tạo công việc cron mới, hãy đăng nhập vào máy chủ với tư cách là người chủ hoặc bất kỳ người dùng nào khác, sau đó chỉnh sửa tệp crontab (trong hầu hết hệ điều hành, crontab -e sẽ mở tệp crontab trong trình soạn thảo văn bản mặc định) để thêm vào dòng văn bản sau. Đối với người dùng sử dụng cPanel, hãy nhấp vào “Cron job” nơi bạn có thể thiết lập crontab hàng ngày, hàng giờ và các khoảng thời gian khác. Quản trị viên web có kinh nghiệm cũng có thể thiết lập tệp crontab trong rc.hourly hoặc rc.daily hoặc thư mục cron khác. Lưu ý rằng nếu bạn đăng nhập với tư cách là người dùng MySQL hoặc bình thường không có đặc quyền truy cập vào tất cả cơ sở dữ liệu, thì không thể tối ưu hóa tất cả cơ sở dữ liệu, trừ khi ID người dùng và mật khẩu cho root được chỉ định như trong ví dụ bên dưới.

0 1 * * * mysqlcheck -Aao --auto-repair -u root -p[password] > /dev/null

Câu lệnh trên có cú pháp tương tự như “mysqlcheck [options] –all-databases”, trong đó tham số –all-databases là hành động mặc định và không có cơ sở dữ liệu nào được chỉ định vì vậy có thể bị bỏ qua. Lệnh sẽ chạy máy khách mysqlcheck để tự động phân tích và tối ưu hóa tất cả cơ sở dữ liệu vào lúc 1 giờ sáng hàng ngày. Lưu ý rằng không có khoảng trống giữa -p và mật khẩu của bạn cho root. Bạn có thể thay đổi thời gian chạy theo sở thích của mình và cũng có thể thay đổi các tùy chọn cho lệnh mysqlcheck. Nếu bạn chỉ muốn kiểm tra và tối ưu hóa một số cơ sở dữ liệu hoặc một số bảng nhất định mà không có cơ sở dữ liệu, hãy sử dụng cú pháp sau:

mysqlcheck [options] db_name [tables]
mysqlcheck [options] --databases DB1 [DB2 DB3...]

Bạn có thể muốn loại bỏ công tắc –auto-sửa chữa khỏi lệnh trên, vì thao tác sửa chữa bảng có thể gây mất dữ liệu trong một số trường hợp, thao tác do các nguyên nhân bao gồm nhưng không giới hạn ở lỗi hệ thống tệp. Đối với những người đã thay đổi bộ ký tự và đối chiếu của cơ sở dữ liệu MySQL cũng có thể cần sử dụng tùy chọn –default-character-set. Có thể tìm thấy thêm thông tin về tất cả các thiết bị chuyển mạch và tùy chọn có sẵn tại đây.


  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 thế nào để loại bỏ khoảng trắng hàng đầu trong MySQL

  2. Mã lỗi:1406. Dữ liệu quá dài cho cột - MySQL

  3. Làm cách nào để lưu trữ các giá trị NULL trong các trường datetime trong MySQL?

  4. Truy vấn bảng kết hợp bên trong cập nhật MySQL

  5. Chèn Blobs vào cơ sở dữ liệu MySql bằng php