The hardest MySQL backup

MySQL

Преди повече от половин година стария ми компютър предаде богу дух и остави след себе си купчина железария, която продължава да събира прах. Заместникът му – едно Sony Vaio – засега се справя отлично и единственото с което си спомням старата машина са няколкото лични проекта, останали заровени по хардовете й. Единият от тях беше Flex проект за личното ми портфолио, който видя бял свят на този адрес. Този, който ми беше по-важен, обаче, по всички закони на Мърфи страдаше от липса на SQL dump от базата данни.

Понеже съм мързелив, първата ми работа беше да си копирам .frm файловете от DB-то на другия компютър, само за да установя, че съм ползвам InnoDB като storage engine. Неприятното в случая беше, че InnoDB пази доста голяма част от данните за базата във файла ibdata1, и възстановяването по този начин ставаше почти невъзможно.

Втората опция беше да ползвам chroot за да стартирам MySQL от харда на умрялата машина, но първият опит завърши със следното:

/dev/null: Permission denied

Проверката показа следното:

$ ls -Al /dev | grep null
crw-rw-rw- 1 root root      1,   3 2009-01-18 19:50 null

Device-a си стоеше, но беше неизползваем по някаква причина. Оказа се, че при mount по подразбиране всичко devices са неизползваеми (nodev) и решението на моя проблем беше ето това:

mount -o remount,dev /dev/sdb2

След като remount-нах устройството и chroot-нах вътре пробвах да пусна mysql, но се оказа, че нямам /proc в jail-a. Успях да го създам по следния начин:

mount -t proc none /mnt/olddeb

Пускането на mysql сега обаче ревеше за съществуващ PID. Оказа се, че съм забравил да спра локалния mysql, този който е извън chroot-a и след като го направих, този от старата машина запали без никакви ядове. След това dump-a мина по вода, успях да си прехвърля файла и да си възстановя целия проект.

Предполагам горното ще бъде полезно на всеки, който се опитва да пуска услуги от съсипана по една или друга причина дистрибуция, стига поне основните неща от нея да работят. За мен играта с chroot беше нова, но ми даде разни идейки за “затваряне” на несигурни услуги.


Маркери: , , ,

За тази статия



Категории