GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Memperbaiki Database MySQL

Pendahuluan

MySQL menawarkan beberapa cara berbeda untuk menganalisis dan memperbaiki database. Kesalahan dan anomali muncul karena berbagai alasan, beberapa di antaranya meliputi:

  • Pembaruan atau penurunan versi MySQL.
  • Perubahan cepat dalam indeks atau data.
  • Inkonsistensi tabel.

Saat memeriksa data yang rusak dan memperbaiki tabel, langkah-langkah yang diambil untuk memperbaiki kesalahan bergantung pada cara Anda terhubung ke database, status server database, jenis kesalahan, dan mesin database yang digunakan.

Artikel ini menunjukkan beberapa cara untuk memecahkan masalah dan memperbaiki database MySQL.

Prasyarat

  • Terminal atau baris perintah dengan hak akses root.
  • MySQL versi 8.0 diinstal dan dikonfigurasi.
  • Database atau tabel database yang rusak.

Cara Memeriksa Tabel MySQL untuk Kesalahan

Menjalankan diagnostik adalah langkah pertama untuk memecahkan masalah. Ada dua cara untuk memeriksa kesalahan tabel MySQL:

  • Melalui CHECK TABLE MySQL kueri.
  • Menggunakan program terminal mysqlcheck .

Memeriksa Tabel dengan CHECK TABLE

CHECK TABLE kueri berfungsi di MySQL saat layanan sedang berjalan. Penggunaan umum adalah:

CHECK TABLE <table name> [, table name, table name] [option] [option];

Penggunaan paling sederhana adalah satu tabel tanpa opsi apa pun:

CHECK TABLE <table name>;

Output dari CHECK TABLE query menunjukkan tabel informatif tentang hasil pemeriksaan:

Opsi yang tersedia saat memeriksa tabel adalah:

  • FOR UPGRADE - menemukan inkonsistensi versi. Misalnya, MySQL 8.0 tidak mendukung tahun dua digit, sehingga tabel yang berisi nilai tersebut ditandai untuk peningkatan versi.
  • QUICK - tidak memeriksa baris untuk penautan yang salah. Ini berguna untuk menghindari waktu tunggu.
  • QUICK - melakukan pemeriksaan pada tabel yang tidak ditutup dengan benar.
  • CHANGED - hanya memeriksa tabel dengan perubahan sejak pemeriksaan terakhir atau yang belum ditutup dengan benar.
  • MEDIUM - memeriksa baris tabel untuk memverifikasi validitas tautan yang dihapus dan melakukan checksum untuk baris tersebut.
  • EXTENDED - melakukan pemeriksaan untuk konsistensi lengkap.

Tanpa opsi apa pun, CHECK TABLE melakukan MEDIUM periksa tabel dan tampilan MyISAM. FOR UPGRADE dan QUICK melakukan pemeriksaan pada tabel dan tampilan mesin InnoDB sementara opsi lain diabaikan.

Anda juga dapat menggabungkan opsi untuk pemeriksaan yang lebih detail. Misalnya, untuk melakukan pemeriksaan cepat untuk mengetahui apakah tabel ditutup dengan benar, jalankan:

CHECK TABLE <table name> FAST QUICK;

Opsi apa pun yang tidak berlaku untuk tabel diabaikan.

Memeriksa Tabel Dengan mysqlcheck

mysqlcheck perintah adalah versi baris perintah dari CHECK TABLE . Program berjalan di terminal saat layanan MySQL beroperasi. Untuk melakukan pemeriksaan:

1. Sebagai pengguna root, navigasikan ke direktori tempat database disimpan:

sudo su
cd /var/lib/mysql

2. Periksa seluruh database dengan:

mysqlcheck <database name>

Atau, periksa tabel tertentu dalam database dengan memberikan nama tabel juga:

mysqlcheck <database name> <table name>

Cara Memperbaiki Database MySQL

Ada beberapa metode cara memperbaiki database di MySQL. Namun, perlu diingat bahwa metode ini bukan perbaikan cepat dan dapat mengakibatkan hilangnya data. Jika tabel database sering rusak, identifikasi penyebab terjadinya.

Sebelum membuat perubahan dan memulai perbaikan, buat salinan direktori:

cp -rfv /var/lib/mysql /var/lib/mysql_copy

Atau, buat versi cadangan database sebelum mencoba solusi perbaikan apa pun. Ikuti panduan kami:Cara Mencadangkan &Memulihkan Basis Data MySQL.

Di bawah ini Anda akan menemukan tiga opsi cara memperbaiki database MySQL.

Memperbaiki Database MySQL dengan Query REPAIR TABLE

Setelah memindai dan menemukan database dan tabel yang bermasalah, cara tercepat untuk memperbaiki masalah adalah dengan REPAIR TABLE permintaan:

Jika server mati selama perbaikan, jalankan kembali REPAIR TABLE operasi ketika server mulai lagi. Pastikan untuk melakukan ini sebelum melakukan operasi lain pada tabel yang sama. Dalam kondisi normal, tabel MyISAM tidak akan mengakibatkan hilangnya data dari penggunaan metode ini.

Memperbaiki Database MySQL dengan mysqlcheck

mysqlcheck command adalah alternatif untuk memperbaiki tabel database di terminal.

1. Pertama, navigasikan ke folder database MySQL sebagai pengguna root:

cd /var/lib/mysql

2. Tambahkan -r opsi ke mysqlcheck perintah untuk memperbaiki tabel database:

mysqlcheck -r <database> <table name>

mysqlcheck -r perintah adalah versi terminal dari REPAIR TABLE kueri.

Memperbaiki Database MySQL dengan ALTER TABLE

Gunakan ALTER TABLE query untuk membangun kembali tabel menggunakan mesin penyimpanan yang sama. Misalnya, jika Anda memiliki tabel InnoDB, jalankan:

ALTER TABLE <table name> ENGINE = InnoDB;

Untuk membangun kembali tabel MyISAM, gunakan:

ALTER TABLE <table name> ENGINE = MyISAM;

Jika Anda tidak yakin mesin penyimpanan mana yang digunakan tabel, jalankan kueri berikut untuk mengetahuinya:

SHOW CREATE TABLE <table name>;

Menjalankan Diagnostik dan Perbaikan Khusus Engine ke Database MySQL

Bergantung pada mesin basis data yang digunakan, MySQL menyediakan pendekatan khusus mesin untuk menganalisis dan memperbaiki tabel basis data.

Tabel MyISAM rentan terhadap korupsi. Namun, sebagian besar kesalahan mudah diperbaiki.

Saat bekerja dengan database InnoDB, kerusakan muncul saat nilai checksum tidak cocok. Kesalahan biasanya terjadi karena pemadaman listrik atau masalah perangkat keras lainnya.

Memeriksa dan Memperbaiki Tabel MyISAM dengan myisamchk

MySQL menyediakan pemeriksa khusus untuk tabel MyISAM.

1. Matikan server MySQL. Buka terminal dan jalankan:

systemctl mysql stop

2. Sebagai pengguna root, navigasikan ke lokasi database:

cd /var/lib/mysql/<database name>

3. Untuk memeriksa tabel tertentu, jalankan:

myisamchk <table name>

4. Perbaiki tabel dengan menjalankan:

myisamchk --recover <table name>

5. Mulai ulang server MySQL:

systemctl restart mysql

6. Terakhir, periksa tabel di MySQL setelah pemulihan:

sudo mysql -u <user> -p <password>
USE <database name>;
SELECT * FROM <table name> LIMIT 4;

Menjalankan Proses Pemulihan InnoDB

Dokumentasi MySQL menyarankan untuk menjalankan proses pemulihan InnoDB untuk database InnoDB.

1. Cari dan buka file konfigurasi global menggunakan editor teks favorit Anda. Untuk sistem Ubuntu dan Debian, lokasinya adalah:

cd /etc/mysql/my.cnf

2. Tambahkan opsi berikut ke my.cnf berkas:

[mysqld]
innodb_force_recovery=4

Secara default, opsi pemulihan paksa diatur ke 0 (nonaktif) dan naik ke 6. Setiap level baru menyertakan fitur pemulihan dari angka yang lebih rendah.

3. Simpan dan tutup file.

4. Mulai ulang server MySQL untuk memastikan file konfigurasi baru berlaku:

systemctl restart mysql

5. Di folder home, ekspor semua database ke file backup dengan mysqldump perintah:

sudo mysqldump --all-databases --add-drop-database --add-drop-table --routines > <file name>.sql

6. Mulai klien MySQL dan jatuhkan semua tabel database yang terpengaruh. Untuk menjatuhkan tabel database, coba:

DROP TABLE IF EXISTS <table name>;

Jika tabel tidak jatuh, coba hapus tabel database secara manual. Masuk sebagai pengguna root dan navigasikan ke direktori tempat database berada:

sudo su
cd /var/lib/mysql/<database name>

Hapus tabel database:

rm -r <table name>

7. Hentikan server MySQL:

systemctl stop mysql

8. Di my.cnf file, beri komentar pada innodb_force_recovery opsi ditambahkan pada langkah 2 untuk menonaktifkan mode pemulihan. Kemudian, simpan file dan tutup.

9. Jalankan kembali server MySQL:

systemctl start mysql

10. Pulihkan database dari cadangan .sql file di shell MySQL. Masuk ke klien MySQL:

sudo mysql -u <username> -p <password>

11. Jalankan kueri berikut untuk mengimpor database:

USE <database name>;
# Turning off auto commit is optional and speeds things up for larger databases
SET autocommit=0; 
SOURCE <file name>.sql;

12. Terakhir, uji database untuk memastikan semuanya berfungsi dengan benar. Jika tidak, pulihkan database dari cadangan dan coba metode alternatif.


Ubuntu
  1. Cara menyalin tabel MySQL antar database

  2. Cara memperbaiki database dan tabel MySQL dengan phpMyAdmin

  3. Cara menyalin tabel dari satu database mysql ke database mysql lainnya

  1. Cara Memeriksa Versi MySQL di Linux

  2. Cara Membuat Database MySQL di Workbench

  3. Cara Memperbaiki Tabel Database Mysql yang Rusak

  1. Cara Membuat Tabel di MySQL

  2. Cara Menggunakan MySQL SHOW TRIGGERS

  3. Cara Mencadangkan &Memulihkan Basis Data MySQL