Jadi saya punya server uji db yang diatur pada aliran replikasi. Atas nama optimasi datang melalui yang dengan cepat mengisi ruang pada datadir slave. Mysql patuh hanya menunggu ruang lagi.
Datadir ini adalah sistem file yang HANYA digunakan sebagai datad mysql sehingga tidak ada hal lain untuk dibebaskan.
Saya memiliki meja tes innodb 4 manggung yang bukan bagian dari aliran replikasi jadi saya pikir saya akan mencoba sesuatu untuk melihat apakah itu akan berhasil, dan menjadi lingkungan pengujian saya tidak terlalu khawatir jika ada yang salah.
Inilah langkah-langkah yang saya ambil
- Membilas meja saya akan pindah
- Menempatkan kunci baca di atasnya (meskipun tidak ada yang menulis dan tidak ada dalam aliran replikasi)
- Menyalin .frm dan .ibd ke sistem file dengan ruang cadangan
- Membuka kunci meja
- Memotong tabel itu - ini membebaskan ruang yang cukup untuk optimisasi untuk menyelesaikan replikasi mulai berbunyi lagi.
- Hentikan slaving / shutdown mysql
- Salin file dari tmp kembali ke dir data
- Mulai ulang mysql
Tidak ada yang muncul di log .err, semuanya terlihat bagus. Saya terhubung dan menggunakan mydb; dan lihat meja tempat saya bermain-main. Tapi, kalau saya coba
select * from testtable limit 10;
Saya mendapatkan kesalahan
ERROR 1146 (42S02): Table 'mydb.testtable' doesn't exist
Dari apa yang saya tahu sejauh ini saya bisa membaca dari semua tabel lainnya baik-baik saja dan replikasi mulai kembali tanpa keluhan.
Adakah yang bisa saya lakukan untuk pulih dari titik ini? Saya dapat membangunnya kembali dari awal jika perlu tetapi ingin tahu apa pendapat orang lain tentang usaha ini secara umum. Apakah ada sesuatu tentang serangkaian langkah yang saya ambil yang akan berakhir dengan hasil yang lebih sempurna?
Bagaimana jika ini bukan server pengujian saya tidak bisa hanya 'melakukannya langsung' dan melihat apa yang terjadi? Apa yang akan memiliki cara terbaik untuk mengosongkan ruang sementara pada budak produksi jika saya harus seperti itu?
Table 'X' doesn't exist in engine
. Apakah saya harus melakukan metode di atas untuk setiap tabel atau apakah ada cara yang lebih baik untuk memperbaikinya?