Pulihkan struktur jadual daripada fail frm dan ibd
P粉637866931
P粉637866931 2023-10-19 10:01:37
0
2
715

Saya cuba memulihkan pangkalan data dalam PMA tetapi hanya boleh mengakses fail frm dan ibd - bukan fail ib_log yang saya faham anda perlukan.

Saya tahu saya mungkin tidak dapat memulihkan data pangkalan data, tetapi adakah mungkin untuk memulihkan struktur jadual daripada fail frm?

P粉637866931
P粉637866931

membalas semua(2)
P粉043566314

InnoDB memerlukan fail ib_log untuk pemulihan data, tetapi ia juga memerlukan fail ibdata1, yang mengandungi kamus data dan kadangkala data belum selesai untuk jadual.

Kamus data ialah sistem berulang yang merekodkan struktur jadual dan memadankan ID jadual dengan fail .ibd fizikal yang mengandungi data jadual.

Anda tidak boleh mengalihkan fail .ibd tanpa kamus data InnoDB dan kamus data mesti sepadan dengan ID jadual yang terdapat dalam fail .ibd. Anda bolehmenyambung semula fail .ibd dan memulihkan data, tetapi prosesnya bukan untuk mereka yang lemah hati. Sila rujuk http://www.chriscalender.com/recover jadual innodb daripada fail ibd sahaja/

Anda boleh memulihkan struktur dengan beberapa helah fail menggunakan fail .frm, tetapi anda tidak boleh menciptanya sebagai jadual InnoDB pada mulanya. Berikut ialah blog yang menerangkan cara memulihkan fail .frm ke jadual MyISAM: http://www.percona.com/blog/2008/12/17/recovering-create-table-statement-from-frm-file/" percona.com/blog/2008/12/17/recovering-create- table-statement-from-frm-file/

Anda tidak akan dapat menggunakan PMA untuk ini. Anda memerlukan akses superuser kepada direktori data pada pelayan.

P粉569205478

Saya memulihkan jadual daripada .frm.idb fail sahaja.

Dapatkan pertanyaan SQL yang digunakan untuk mencipta jadual

Jika anda sudah mengetahui skema jadual, anda boleh melangkau langkah ini.

  1. Mula-mula, pasang utiliti MySQL. Anda kemudiannya boleh menggunakan arahan mysqlfrm dalam Command Prompt (cmd).

  2. Kedua, gunakan arahan mysqlfrm 命令从 .frm untuk mendapatkan pertanyaan SQL daripada fail .frm:

    mysqlfrm --diagnostic <path>/example_table.frm

Anda kemudiannya boleh mendapatkan pertanyaan SQL untuk mencipta jadual berstruktur yang sama. Seperti ini:

CREATE TABLE `example_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(150) NOT NULL,
  `photo_url` varchar(150) NOT NULL,
  `password` varchar(600) NOT NULL,
  `active` smallint(6) NOT NULL,
  `plan` int(11) NOT NULL,
PRIMARY KEY `PRIMARY` (`id`)
) ENGINE=InnoDB;

Buat jadual

Buat jadual menggunakan pertanyaan SQL di atas.

Jika data lama masih wujud, anda mungkin perlu memadam pangkalan data dan jadual yang sepadan terlebih dahulu. Pastikan anda mempunyai sandaran fail data anda.

Pulihkan data

Jalankan pertanyaan ini untuk memadam data jadual baharu:

ALTER TABLE example_table DISCARD TABLESPACE;

Ini akan memadamkan .frm 文件和(新的、空的).idb 文件之间的连接。另外,删除文件夹中的 .idb fail baharu.

Kemudian, letakkan .idb fail lama ke dalam folder baharu, contohnya:

cp backup/example_table.ibd <path>/example_table.idb

Pastikan .ibd 文件可以被 mysql 用户读取,例如通过在文件夹中运行 chown -R mysql:mysql *.ibd.

Jalankan pertanyaan ini untuk mengimport data lama:

ALTER TABLE example_table IMPORT TABLESPACE;

Ini akan mengimport data daripada fail .idb dan akan memulihkan data.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan