Halo, setelah migrasi dari MySQL ke MariaDB, beberapa tabel di database mysql rusak. Saya dapat menghapus tabel-tabel itu dan membuatnya secara manual menggunakan artikel ini tetapi saya ragu. Tabel-tabel itu membutuhkan data atau bisa kosong (di akhir pertanyaan akan ditambahkan tabel "sedang digunakan" atau rusak. Juga, apakah ada a. sql file dari database ini? . sql daripada menambahkan tabel secara manual satu per satu. Jika ada, beri tahu saya
Berikut adalah tabel korup
engine_cost gtid_executed help_category help_keyword help_relation help_topic innodb_index_stats innodb_table_stats plugin server_biaya slave_master_info slave_relay_log_info slave_worker_info time_zone time_zone_leap_second time_zone_name time_zone_transition time_zone_transition_type
Tinjau kembali cara Anda melakukan migrasi. Tabel yang Anda sebutkan adalah semua tabel sistem MySQL
Merekomendasikan untuk menggunakan mysqldump dari data pengguna dan menginstalnya ke dalam instance MariaDB yang baru dan menggunakan alat seperti https. //sqlines. com/mysql-to-mariadb untuk menghaluskan perbedaan data SQL
Komentar
Konten yang direproduksi di situs ini adalah milik dari pemiliknya masing-masing, dan konten ini tidak ditinjau sebelumnya oleh MariaDB. Pandangan, informasi, dan opini yang diungkapkan oleh konten ini tidak selalu mewakili MariaDB atau pihak lain mana pun
Terkadang tabel MySQL rusak, yang berarti telah terjadi beberapa kesalahan dan data di dalamnya tidak dapat dibaca. Upaya untuk membaca dari tabel yang rusak biasanya menyebabkan server mogok
Ini adalah beberapa alasan paling umum dari tabel yang rusak
- Perangkat keras gagal;
- Server MySQL berhenti tiba-tiba
- Mesin berhenti tiba-tiba;
- Ada bug perangkat lunak dalam kode MySQL;
- Program eksternal memodifikasi tabel yang sedang dimodifikasi oleh server pada saat itu
Jika menurut Anda salah satu tabel rusak, Anda harus membuat cadangan data sebelum memecahkan masalah atau mencoba memperbaikinya. Hal ini akan memastikan risiko kehilangan data lebih kecil
Untuk memulai, hentikan layanan MySQL
$
sudo systemctl stop mysql
Setelah itu, salin semua data Anda ke direktori cadangan baru. Jika Anda menggunakan sistem Ubuntu, direktori data default adalah
$
cp -r /var/lib/mysql /var/lib/mysql_bkp
0$
cp -r /var/lib/mysql /var/lib/mysql_bkp
Setelah Anda membuat cadangan, saatnya untuk mulai menyelidiki apakah tabel tersebut rusak. Jika tabel menggunakan mesin penyimpanan MyISAM, Anda dapat memeriksa apakah tabel tersebut rusak dengan menjalankan pernyataan
$
cp -r /var/lib/mysql /var/lib/mysql_bkp
1 dari prompt MySQLmysql>
CHECK TABLE table_name;
_Anda akan melihat pesan yang memberitahukan apakah itu rusak atau tidak. Jika tabel MyISAM rusak, dapat diperbaiki dengan pernyataan
$
cp -r /var/lib/mysql /var/lib/mysql_bkp
2mysql>
REPAIR TABLE table_name;
_Jika perbaikan berhasil, Anda akan melihat pesan seperti berikut di output Anda
Output +---------------------------+--------+----------+----------+ | Table | Op | Msg_type | Msg_text | +---------------------------+--------+----------+----------+ | database_name.table_name | repair | status | OK | +---------------------------+--------+----------+----------+
Namun jika masih rusak, dokumentasi MySQL menyarankan beberapa metode alternatif untuk memperbaiki tabel yang rusak
Jika tabel yang rusak menggunakan mesin penyimpanan InnoDB, maka proses perbaikannya akan berbeda. InnoDB menampilkan operasi pemeriksaan dan perbaikan korupsi otomatis. Itu memeriksa halaman yang rusak dengan melakukan checksum pada halaman yang dibacanya, dan jika ada ketidaksesuaian itu akan menghentikan server MySQL secara otomatis
Ini tidak sering diperlukan untuk memperbaiki tabel InnoDB, karena fitur mekanisme pemulihan kerusakan yang dapat menyelesaikan sebagian besar masalah saat server dimulai ulang. Namun, jika Anda menemukan situasi di mana Anda perlu membangun kembali tabel InnoDB yang rusak, dokumentasi MySQL merekomendasikan penggunaan
Coba mulai ulang layanan MySQL untuk melihat apakah itu mengizinkan akses Anda ke server
$
sudo systemctl restart mysql
_Jika server masih macet atau tidak dapat diakses, maka akan sangat membantu untuk mengaktifkan opsi
$
cp -r /var/lib/mysql /var/lib/mysql_bkp
3 InnoDB. Untuk ini, Anda dapat mengedit file ```mysqld. file cnf````$
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Di bagian
$
cp -r /var/lib/mysql /var/lib/mysql_bkp
_4, tambahkan baris berikut/etc/mysql/mysql. conf. d/mysqld. cnf
.
[mysqld]
.
innodb_force_recovery=1
Setelah itu, simpan dan tutup file tersebut. Kemudian Anda dapat me-restart layanan MySQL. Jika Anda dapat mengakses tabel yang rusak, gunakan utilitas
$
cp -r /var/lib/mysql /var/lib/mysql_bkp
5 untuk membuang data tabel Anda ke file baru. Anda dapat menamainya sesuka Anda, tetapi dalam panduan ini kami akan menamainya$
cp -r /var/lib/mysql /var/lib/mysql_bkp
6$
mysqldump database_name table_name > out.sql
Setelah itu, jatuhkan tabel dari database. Untuk menghindari pembukaan kembali prompt MySQL, Anda dapat menggunakan perintah berikut
$
mysql -u user -p --execute="DROP TABLE database_name.table_name"
Setelah ini, pulihkan tabel dengan file dump yang baru saja Anda buat
$
mysql -u user -p < out.sql
Mesin penyimpanan InnoDB umumnya lebih toleran terhadap kesalahan daripada mesin MyISAM yang lebih lama. Tabel yang menggunakan InnoDB masih bisa corrupt, namun karena memiliki fitur auto-recovery, maka resiko tabel corrupt dan crash lebih rendah