Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara memperbaiki database dan tabel MySQL

Artikel ini menjelaskan cara memperbaiki tabel dan database MySQL. Sebagai tabel database tumbuh, kesalahan dapat terjadi dari waktu ke waktu. Ketika mereka melakukannya, MySQL menyertakan beberapa alat yang dapat Anda gunakan untuk memeriksa dan memperbaiki tabel database. Untuk melakukannya, ikuti prosedur di bawah ini sesuai urutan kemunculannya.

Artikel ini hanya berlaku untuk produk yang terdaftar di Detail Artikel bilah sisi Anda harus memiliki akses root ke server untuk mengikuti prosedur ini.

Langkah 1:Mencadangkan database

Sebelum Anda mencoba memperbaiki database apa pun, Anda harus mencadangkannya terlebih dahulu. Untuk mencadangkan semua file dari semua database Anda, ikuti langkah-langkah berikut:

  1. Masuk ke server Anda menggunakan SSH.
  2. Hentikan server MySQL menggunakan perintah yang sesuai untuk distribusi Linux Anda:
    • Untuk CentOS dan Fedora, ketik:
      service mysqld stop
    • Untuk Debian dan Ubuntu, ketik:

      service mysql stop
  3. Ketik perintah berikut:

    cp -rfv /var/lib/mysql /var/lib/mysql$(date +%s)
    Perintah ini menyalin semua file dari semua database Anda ke nama direktori berdasarkan waktu saat ini (lebih tepatnya, jumlah detik yang telah berlalu sejak 1 Januari 1970). Ini memastikan bahwa setiap cadangan basis data disimpan dalam direktori yang memiliki nama unik. Untuk perlindungan tambahan, Anda dapat (dan harus) mencadangkan file database ke lokasi yang jauh, bukan di server.
  4. Mulai ulang server MySQL menggunakan perintah yang sesuai untuk distribusi Linux Anda:

    • Untuk CentOS dan Fedora, ketik:
      service mysqld start
    • Untuk Debian dan Ubuntu, ketik:

      service mysql start

Langkah 2:Jalankan mysqlcheck

Setelah Anda membuat cadangan database Anda, Anda siap untuk memulai pemecahan masalah. mysqlcheck program memungkinkan Anda untuk memeriksa dan memperbaiki database saat MySQL sedang berjalan. Fitur ini berguna ketika Anda ingin bekerja pada database tanpa menghentikan seluruh layanan MySQL.

Selain itu, mysqlcheck bekerja pada tabel yang menggunakan mesin database MyISAM atau InnoDB.

Untuk informasi tentang cara menentukan mesin penyimpanan mana yang digunakan tabel database, silakan lihat artikel ini.

Untuk menggunakan mysqlcheck , ikuti langkah-langkah berikut:

  1. Sebagai pengguna root, ketik perintah berikut:
    cd /var/lib/mysql
  2. Ketik perintah berikut, ganti database dengan nama database yang ingin Anda periksa:

    mysqlcheck database

    Perintah sebelumnya memeriksa semua tabel dalam database yang ditentukan. Atau, untuk memeriksa tabel tertentu dalam database, ketik perintah berikut. Ganti database dengan nama database, dan ganti tabel dengan nama tabel yang ingin diperiksa:

    mysqlcheck database table
  3. Periksa MySQL memeriksa database dan tabel yang ditentukan. Jika sebuah tabel lolos pemeriksaan, mysqlcheck menampilkan Oke untuk meja. Namun, jika mysqlcheck melaporkan kesalahan untuk tabel, ketik perintah berikut untuk mencoba memperbaikinya. Ganti database dengan nama database, dan tabel dengan nama tabel:

    mysqlcheck -r database table
  4. Jika mysqlcheck tidak berhasil memperbaiki tabel atau tabel, lanjutkan ke prosedur berikut.

Langkah 3:Menjalankan diagnostik khusus mesin

Jika menjalankan mysqlcheck tidak memperbaiki masalah, langkah selanjutnya adalah menjalankan diagnostik khusus untuk mesin yang digunakan oleh tabel atau tabel database. Ikuti prosedur yang sesuai di bawah ini untuk mesin penyimpanan database tabel Anda.

Untuk informasi tentang cara menentukan mesin penyimpanan yang digunakan tabel database Anda, silakan lihat artikel ini.
Memperbaiki tabel MyISAM dengan myisamchk

Jika Anda menggunakan mesin penyimpanan MyISAM untuk tabel, Anda dapat menjalankan myisamchk program untuk memperbaikinya. Untuk melakukannya, ikuti langkah-langkah berikut:

myisamchk program hanya berfungsi untuk tabel yang menggunakan mesin penyimpanan MyISAM. Ini tidak berfungsi untuk mesin InnoDB.
  1. Hentikan server MySQL menggunakan perintah yang sesuai untuk distribusi Linux Anda:
    • Untuk CentOS dan Fedora, ketik:
      service mysqld stop
    • Untuk Debian dan Ubuntu, ketik:

      service mysql stop
  2. Ketik perintah berikut:

    cd /var/lib/mysql
  3. Ubah ke direktori tempat database berada. Misalnya, jika database bernama pelanggan , ketik cd pelanggan.
  4. Ketik perintah berikut, ganti tabel dengan nama tabel yang ingin Anda periksa:

    myisamchk table

    Untuk memeriksa semua tabel dalam database, ketik perintah berikut:

    myisamchk *.MYI

    Jika perintah sebelumnya tidak berhasil, Anda dapat mencoba menghapus file sementara yang mungkin mencegah myisamchk dari berjalan dengan benar. Untuk melakukannya, ubah kembali ke /var/lib/mysql direktori, lalu ketik perintah berikut:

    ls */*.TMD
    

    Jika ada file .TMD yang terdaftar, ketik perintah berikut untuk menghapusnya:

    rm */*.TMD

    Kemudian coba jalankan myisamchk lagi.

  5. Untuk mencoba memperbaiki tabel, ketik perintah berikut, ganti tabel dengan nama tabel yang ingin Anda perbaiki:

    myisamchk --recover table
  6. Mulai ulang server MySQL menggunakan perintah yang sesuai untuk distribusi Linux Anda:

    • Untuk CentOS dan Fedora, ketik:
      service mysqld start
    • Untuk Debian dan Ubuntu, ketik:

      service mysql start
  7. Uji tabel atau tabel yang diperbaiki.
Menjalankan proses pemulihan InnoDB

Jika Anda menggunakan mesin penyimpanan InnoDB untuk tabel database, Anda dapat menjalankan proses pemulihan InnoDB. Untuk melakukannya, ikuti langkah-langkah berikut:

  1. Gunakan editor teks pilihan Anda untuk membuka my.cnf file di server Anda. Lokasi my.cnf file tergantung pada distribusi Linux Anda:
    • Pada CentOS dan Fedora, my.cnf file terletak di /etc direktori.
    • Di Debian dan Ubuntu, my.cnf file terletak di /etc/mysql direktori.
  2. Di my.cnf file, cari [mysqld] bagian.
  3. Tambahkan baris berikut ke [mysqld] bagian:

    innodb_force_recovery=4
  4. Simpan perubahan ke my.cnf file, dan kemudian restart server MySQL menggunakan perintah yang sesuai untuk distribusi Linux Anda:

    • Untuk CentOS dan Fedora, ketik:
      service mysqld restart
    • Untuk Debian dan Ubuntu, ketik:

      service mysql restart
  5. Ketik perintah berikut untuk mengekspor semua database ke databases.sql mengajukan:

    mysqldump --all-databases --add-drop-database --add-drop-table --routines > databases.sql
  6. Mulai mysql program, lalu coba hapus database atau database yang terpengaruh menggunakan DROP DATABASE memerintah.

    Jika MySQL tidak dapat menghapus database, Anda dapat menghapusnya secara manual pada langkah 8 di bawah ini setelah Anda menghentikan server MySQL.
  7. Hentikan server MySQL menggunakan perintah yang sesuai untuk distribusi Linux Anda:

    • Untuk CentOS dan Fedora, ketik:
      service mysqld stop
    • Untuk Debian dan Ubuntu, ketik:

      service mysql stop
  8. Jika Anda tidak dapat menghapus database di langkah 6, ketik perintah berikut untuk menghapusnya secara manual. Ganti database dengan nama database yang ingin Anda hapus:

    cd /var/lib/mysql
    rm -rf database
    Pastikan Anda tidak menghapus mysql atau performance_schema direktori!
  9. Gunakan editor teks pilihan Anda untuk membuka my.cnf file di server Anda, lalu beri komentar pada baris berikut di [mysqld] bagian seperti yang ditunjukkan:

    #innodb_force_recovery=4
    Ini menonaktifkan mode pemulihan InnoDB.
  10. Simpan perubahan ke my.cnf file, dan kemudian mulai server MySQL menggunakan perintah yang sesuai untuk distribusi Linux Anda:

    • Untuk CentOS dan Fedora, ketik:
      service mysqld start
    • Untuk Debian dan Ubuntu, ketik:

      service mysql start
  11. Ketik perintah berikut untuk memulihkan database dari file cadangan yang Anda buat di langkah 5:

    mysql < databases.sql
  12. Uji database yang dipulihkan.

Informasi Lebih Lanjut

  • Untuk informasi lebih lanjut tentang mysqlcheck , silakan kunjungi https://dev.mysql.com/doc/refman/5.5/en/mysqlcheck.html.
  • Untuk informasi lebih lanjut tentang myisamchk , silakan kunjungi https://dev.mysql.com/doc/refman/5.5/en/myisamchk.html.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Operator RLIKE Bekerja di MySQL

  2. Bisakah saya mencampur API MySQL di PHP?

  3. BATAS kata kunci di MySQL dengan pernyataan yang disiapkan

  4. perbedaan antara kunci utama dan kunci unik

  5. Kesalahan:Klien tidak mendukung protokol otentikasi yang diminta oleh server; pertimbangkan untuk memutakhirkan klien MySQL