Cách sửa chữa cơ sở dữ liệu MySQL bị lỗi

Bài viết này mô tả cách sửa chữa các bảng và cơ sở dữ liệu MySQL. Khi các bảng của cơ sở dữ liệu phát triển, thỉnh thoảng có thể xảy ra lỗi. Khi họ làm như vậy, MySQL bao gồm một số công cụ mà bạn có thể sử dụng để kiểm tra và sửa chữa các bảng cơ sở dữ liệu. Để thực hiện việc này, hãy làm theo các quy trình bên dưới theo thứ tự xuất hiện

Bài viết này chỉ áp dụng cho các sản phẩm được liệt kê trong thanh bên Chi tiết bài viết. Bạn phải có quyền truy cập root vào máy chủ để làm theo các quy trình này

Bước 1. Sao lưu cơ sở dữ liệu

Trước khi bạn cố gắng sửa chữa bất kỳ cơ sở dữ liệu nào, bạn nên sao lưu nó trước. Để sao lưu tất cả các tệp từ tất cả các cơ sở dữ liệu của bạn, hãy làm theo các bước sau

  1. Đăng nhập vào máy chủ của bạn bằng SSH
  2. Dừng máy chủ MySQL bằng lệnh thích hợp cho bản phân phối Linux của bạn
    • Đối với CentOS và Fedora, hãy nhập.
      service mysqld stop
    • Đối với Debian và Ubuntu, gõ

      service mysql stop
  3. Gõ lệnh sau

    cp -rfv /var/lib/mysql /var/lib/mysql$(date +%s)

    Lệnh này sao chép tất cả các tệp từ tất cả cơ sở dữ liệu của bạn sang tên thư mục dựa trên thời gian hiện tại (chính xác hơn là số giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970). Điều này đảm bảo rằng mỗi bản sao lưu cơ sở dữ liệu được lưu trữ trong một thư mục có tên duy nhất. Để tăng cường bảo vệ, bạn có thể (và nên) sao lưu các tệp cơ sở dữ liệu vào một vị trí từ xa không có trên máy chủ

  4. Khởi động lại máy chủ MySQL bằng lệnh thích hợp cho bản phân phối Linux của bạn

    • Đối với CentOS và Fedora, hãy nhập.
      service mysqld start
    • Đối với Debian và Ubuntu, gõ

      service mysql start

Bước 2. Chạy mysqlcheck

Sau khi sao lưu cơ sở dữ liệu của mình, bạn đã sẵn sàng để bắt đầu khắc phục sự cố. Chương trình mysqlcheck cho phép bạn kiểm tra và sửa chữa cơ sở dữ liệu trong khi MySQL đang chạy. Tính năng này hữu ích khi bạn muốn làm việc trên cơ sở dữ liệu mà không cần dừng toàn bộ dịch vụ MySQL

Ngoài ra, mysqlcheck hoạt động trên các bảng sử dụng công cụ cơ sở dữ liệu MyISAM hoặc InnoDB

Để biết thông tin về cách xác định công cụ lưu trữ mà bảng cơ sở dữ liệu đang sử dụng, vui lòng xem bài viết này

Để sử dụng mysqlcheck, hãy làm theo các bước sau

  1. Là người dùng root, gõ lệnh sau.
    cd /var/lib/mysql
  2. Nhập lệnh sau, thay thế cơ sở dữ liệu bằng tên của cơ sở dữ liệu mà bạn muốn kiểm tra

    mysqlcheck database

    Lệnh trước kiểm tra tất cả các bảng trong cơ sở dữ liệu đã chỉ định. Ngoài ra, để kiểm tra một bảng cụ thể trong cơ sở dữ liệu, hãy nhập lệnh sau. Thay thế cơ sở dữ liệu bằng tên của cơ sở dữ liệu và thay thế bảng bằng tên của bảng mà bạn muốn kiểm tra

    mysqlcheck database table

  3. Mysqlcheck kiểm tra cơ sở dữ liệu và bảng được chỉ định. Nếu một bảng vượt qua kiểm tra, mysqlcheck sẽ hiển thị OK cho bảng. Tuy nhiên, nếu mysqlcheck báo lỗi cho một bảng, hãy gõ lệnh sau để thử sửa chữa nó. Thay thế cơ sở dữ liệu bằng tên cơ sở dữ liệu và bảng bằng tên bảng

    ________số 8_______
  4. Nếu mysqlcheck không thể sửa chữa thành công bảng hoặc các bảng, hãy thực hiện quy trình sau

Bước 3. Chạy chẩn đoán dành riêng cho động cơ

Nếu chạy mysqlcheck không khắc phục được sự cố, bước tiếp theo là chạy chẩn đoán dành riêng cho công cụ được sử dụng bởi bảng hoặc các bảng cơ sở dữ liệu. Thực hiện theo quy trình thích hợp bên dưới cho công cụ lưu trữ cơ sở dữ liệu của bảng của bạn

Để biết thông tin về cách xác định công cụ lưu trữ mà bảng cơ sở dữ liệu của bạn đang sử dụng, vui lòng xem bài viết này

Sửa chữa các bảng MyISAM bằng myisamchk

Nếu bạn đang sử dụng công cụ lưu trữ MyISAM cho một bảng, bạn có thể chạy chương trình myisamchk để sửa chữa nó. Để làm điều này, hãy làm theo các bước sau

Chương trình myisamchk chỉ hoạt động đối với các bảng sử dụng công cụ lưu trữ MyISAM. Nó không hoạt động cho công cụ InnoDB

  1. Dừng máy chủ MySQL bằng lệnh thích hợp cho bản phân phối Linux của bạn
    • Đối với CentOS và Fedora, hãy nhập.
      service mysqld stop
    • Đối với Debian và Ubuntu, gõ

      service mysql stop
  2. Gõ lệnh sau

    cd /var/lib/mysql
  3. Thay đổi thư mục chứa cơ sở dữ liệu. Ví dụ: nếu cơ sở dữ liệu có tên là customers, hãy nhập cd customers
  4. Nhập lệnh sau, thay thế table bằng tên của bảng mà bạn muốn kiểm tra

    service mysql stop
    2

    Để kiểm tra tất cả các bảng trong cơ sở dữ liệu, hãy gõ lệnh sau

    service mysql stop
    3

    Nếu lệnh trước đó không hoạt động, bạn có thể thử xóa các tệp tạm thời có thể ngăn myisamchk chạy chính xác. Để thực hiện việc này, hãy quay lại thư mục /var/lib/mysql, rồi nhập lệnh sau

    service mysql stop
    4

    Nếu có cái nào. Các tệp TMD được liệt kê, nhập lệnh sau để xóa chúng

    service mysql stop
    5

    Sau đó thử chạy lại myisamchk

  5. Để thử sửa chữa một bảng, hãy nhập lệnh sau, thay thế bảng bằng tên của bảng mà bạn muốn sửa chữa

    service mysql stop
    6
  6. Khởi động lại máy chủ MySQL bằng lệnh thích hợp cho bản phân phối Linux của bạn

    • Đối với CentOS và Fedora, hãy nhập.
      service mysqld start
    • Đối với Debian và Ubuntu, gõ

      service mysql start
  7. Kiểm tra bảng hoặc bảng đã sửa chữa
Chạy quy trình khôi phục InnoDB

Nếu bạn đang sử dụng công cụ lưu trữ InnoDB cho bảng cơ sở dữ liệu, bạn có thể chạy quy trình khôi phục InnoDB. Để làm điều này, hãy làm theo các bước sau

  1. Sử dụng trình soạn thảo văn bản ưa thích của bạn để mở my. cnf trên máy chủ của bạn. Vị trí của tôi. cnf tùy thuộc vào bản phân phối Linux của bạn
    • Trên CentOS và Fedora, my. tệp cnf nằm trong thư mục /etc
    • Trên Debian và Ubuntu, my. tệp cnf nằm trong thư mục /etc/mysql
  2. trong tôi. cnf, tìm phần [mysqld]
  3. Thêm dòng sau vào phần [mysqld]

    service mysql stop
    9
  4. Lưu các thay đổi vào thư mục của tôi. cnf, sau đó khởi động máy chủ MySQL bằng lệnh thích hợp cho bản phân phối Linux của bạn

    Làm thế nào để sửa chữa bảng MySQL bị hỏng?

    MySQL được thiết lập trên máy chủ của bạn. .
    Bước 1. Dừng dịch vụ MySQL và sao lưu dữ liệu. Ban đầu, dừng dịch vụ MySQL bằng lệnh systemctl. .
    Bước 2. Xác định lỗi. .
    Bước 3. Sửa chữa bảng bị hỏng. .
    Bước 4. Tận dụng tùy chọn innodb_force_recovery. .
    Bước 5. Tạo một tệp mysqldump

    Làm cách nào để khôi phục cơ sở dữ liệu MySQL?

    Trong Database Explorer, nhấp chuột phải vào kết nối máy chủ mà bạn muốn khôi phục cơ sở dữ liệu và chọn Sao lưu và khôi phục > Khôi phục cơ sở dữ liệu . Trong Trình hướng dẫn khôi phục cơ sở dữ liệu, chọn tệp sao lưu và nhấp vào Khôi phục.