Bagaimana untuk mengendalikan pengecualian mysql innodb

WBOY
Lepaskan: 2023-04-17 21:01:06
ke hadapan
1759 orang telah melayarinya

Bagaimana untuk mengendalikan pengecualian mysql innodb

1 Kembali dan pasang semula mysql

Untuk mengelakkan masalah mengimport data ini dari tempat lain, mula-mula pasang semula. pangkalan data semasa Buat sandaran fail pangkalan data (/var/lib/mysql/location). Seterusnya, saya menyahpasang pakej pelayan Percona 5.7, memasang semula pakej 5.1.71 yang asal, dan memulakan perkhidmatan mysql Ia menggesa Jenis jadual tidak diketahui/tidak disokong: innodb dan tidak boleh bermula seperti biasa.

110509 12:04:27 InnoDB: Initializing buffer pool, size = 384.0M
110509 12:04:27 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 157286400 bytes!
110509 12:04:27 [ERROR] Plugin 'InnoDB' init function returned error.
110509 12:04:27 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
110509 12:04:27 [ERROR] Unknown/unsupported table type: innodb
110509 12:04:27 [ERROR] Aborting
110509 12:04:27 [Note] /usr/sbin/mysqld: Shutdown complete
Salin selepas log masuk

Padam direktori /var/lib/mysql/, mulakan semula perkhidmatan pangkalan data, dan mulakan ia didapati normal. Kemudian hentikan pangkalan data, tulis ganti kandungan direktori /var/lib/mysql/ yang disandarkan sebelum ini dengan kandungan lokasi semasa dan mulakan semula. Saya juga mendapati bahawa ia tidak boleh dimulakan, dan kandungan ralat adalah sama seperti sebelumnya.

Struktur kandungan direktori /var/lib/mysql adalah seperti berikut:

-rw-rw---- 1 mysql mysql 10485760 2月 26 18:10 ibdata1
-rw-rw---- 1 mysql mysql 5242880 2月 26 18:10 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 2月 26 17:20 ib_logfile1
drwx------ 2 mysql mysql 4096 2月 26 17:20 mysql
drwx------ 2 mysql mysql 4096 2月 26 17:24 wiki
Salin selepas log masuk

Direktori wiki ialah perpustakaan untuk data ujian, fail ibdata1 ialah fail data , dan dua fail yang bermula dengan ib ialah fail log , direktori mysql mengandungi perkara yang berkaitan dengan perpustakaan sistem. Gunakan data yang dimulakan sekali lagi, dan tulis ganti direktori wiki dan fail ibdata1 ke direktori /var/lib/mysql Anda boleh mula seperti biasa dan log masuk seperti biasa.

2. Pasang semula modul innodb

Walau bagaimanapun, apabila membuat sandaran melalui mysqldump, ia menggesa enjin jadual yang tidak diketahui "Innodb". Selepas log masuk, semak semua jenis enjin semasa dan ketahui bahawa jenis innodb tidak wujud antaranya:

Bagaimana untuk mengendalikan pengecualian mysql innodb

Ubah suai jenis salah satu daripada jadual ke MyISAM melalui arahan alter , dan mendapati bahawa ralat masih dilaporkan.

Bagaimana untuk mengendalikan pengecualian mysql innodb

Gunakan find untuk mencari bahawa terdapat fail ha_innodb_plugin.so dalam direktori /usr/lib64/mysql/plugin/. Saya mempunyai tanggapan bahawa versi mysql5 yang kemudian menyokong pemasangan pemalam dalam talian. Semak yang berikut untuk mengesahkan bahawa ia sememangnya disokong:

Bagaimana untuk mengendalikan pengecualian mysql innodb

Apabila memuatkan menggunakan arahan berikut, didapati ia tidak berjaya:

install plugin innodb soname 'ha_innodb.so';
Salin selepas log masuk

3. Sandaran

Tambah konfigurasi berikut dalam /etc/my.cnf:

plugin-load=innodb=ha_innodb_plugin.so
plugin_dir=/usr/lib64/mysql/plugin/
default-storage-engine=InnoDB
Salin selepas log masuk

Mendapati bahawa permulaan masih gagal. Semak mysql-error.log dan cari kandungan berikut:

InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 7.
InnoDB: You may have to recover from a backup.
InnoDB: It is also possible that your operating
InnoDB: system has corrupted its own file cache
InnoDB: and rebooting your computer removes the
InnoDB: error.
InnoDB: If the corrupt page is an index page
InnoDB: you can also try to fix the corruption
InnoDB: by dumping, dropping, and reimporting
InnoDB: the corrupt table. You can use CHECK
InnoDB: TABLE to scan your table for corruption.
InnoDB: See also http://dev.mysql.com/doc/refman/5.1/en/forcing-innodb-recovery.html
Salin selepas log masuk

Buka halaman rasmi forcing-innodb-recovery dan ketahui bahawa anda boleh memaksa permulaan dan pemulihan dengan menyatakan parameter innodb_force_recovery. Tambahkan kandungan berikut pada /etc/my.cnf:

innodb_force_recovery=6
Salin selepas log masuk

Permulaan semula telah berjaya. Tiada masalah dengan membuat sandaran melalui mysqldump Mengimport data sandaran ke hos lain juga boleh didapati sebagai perkara biasa dan boleh diuji.

Sekarang mudah padam mysql dan pasang semula pelayan Percona 5.7 Selepas pemasangan, bina pangkalan data, pulihkan data, sambungkan semula program dan semuanya OK.

Atas ialah kandungan terperinci Bagaimana untuk mengendalikan pengecualian mysql innodb. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan