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
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
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.
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:
Ubah suai jenis salah satu daripada jadual ke MyISAM melalui arahan alter , dan mendapati bahawa ralat masih dilaporkan.
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:
Apabila memuatkan menggunakan arahan berikut, didapati ia tidak berjaya:
install plugin innodb soname 'ha_innodb.so';
Tambah konfigurasi berikut dalam /etc/my.cnf:
plugin-load=innodb=ha_innodb_plugin.so plugin_dir=/usr/lib64/mysql/plugin/ default-storage-engine=InnoDB
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
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
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!