15 December 2009

Синхронизация баз MySQL с помощью сервиса Dropbox

Cloud services
По долгу службы мне приходиться трудиться много и в разных местах. На работе, дома и в командировках меня преследует одержимость моей работой. Я работаю в небольшой веб-студии и в мои задачи входит верстка сайтов и проектирование GUI для интранет-проектов. Не могу не упомянуть неоценимую помощь моих верных друзей, их имена iMac, Mac Pro и MacBook. В своей работе я использую джентльменский набор верстальщика в Mac OS X: Coda — для редактирования HTML/JavaScript и MAMP — для запуска локального веб-сервера. Но речь пойдет не о установке и настройке вышеперечисленных продуктов, а о том как облегчить жизнь разработчикам имеющим в своем парке два и более компьютера работающих под управлением Mac OS X.

Давным-давно, когда много-мегабитные интернет каналы существовали у обычного обывателя только в фантазиях, все мы довольствовались простым способом переноса данных с одного компьютера на другой — флешка или внешний винчестер. За последний год, мой флеш-брелок служивший мне верой и правдой больше четырех лет, мирно покоится на книжной полке. Его заменил аккаунт Dropbox — всем Вам известном сервисе по хранению и синхронизации данных. Бесплатного аккаунта размером 2Гб мне вполне хватает для синхронизации всех рабочих проектов между моими рабочими лошадками.

Если с синхронизацией обычных файлов, HTML-шаблонов и скриптов, скорее всего, ни у кого из Вас вопросов не возникает, то с синхронизацией баз MySQL не все так просто. Нет. Вру..! На самом деле все очень просто! Есть два (бесплатных) варианта:
  1. В конце рабочего сеанса делать выгрузку дампа измененных баз (естественно в Dropbox) с последующим импортом дампа в MySQL на следующей машине
  2. Полностью хранить базы в Dropbox

Нетрудно догадаться, что второй вариант идеален, а его воплощение в жизнь займет у Вас не более пяти минут. Итак приступим:

В-первую очередь выясним где MySQL запущенный с помощью MAMP хранит свои данные. Запускаем phpmyadmin и переходим на закладку «Переменные». В списке находим переменную datadir и ее значение. В переменной указано местоположение на диске файлов с базами. В моем случае — /Library/Application Support/appsolute/MAMP PRO/db/mysql/

1. Выключаем MySQL сервер, открываем терминал и начинаем шаманить.
2. Создадим папку для хранения базы MySQL:
mkdir -p ~/Dropbox/database
3. Переходим в папку с каталогом базы (не забываем про экранирование пробелов)
cd /Library/Application\ Support/appsolute/MAMP\ PRO
4. На компьютере с актуальной базой данных перемещаем папку с локальной копией базы MySQL в хранилище Dropbox. На всех последующих компьютерах этот шаг пропускаем.
mv db ~/Dropbox/database/db
5. Удаляем папку с локальной копией базы MySQL:
rm -rf db
6. Создаем символическую ссылку на хранилище Dropbox
ln -s ~/Dropbox/database/db db
7. Всё готово! Теперь можно запускать MySQL сервер.

Действия по указанному алгоритму необходимо выполнить на всех синхронизируемых машинах.

Для корректной синхронизации, в конце рабочего сеанса необходимо отключать mysql сервер. Это связано с тем, что работающий mysql блокирует файлы с которыми он работает и синхронизация таких файлов невозможна до их разблокировки. Упростить процедуру завершения трудового сеанса можно создав скрипт в Automator.

Надеюсь моя небольшая заметка принесет вам пользу.
Tags:dropboxmysqlсинхронизацияmac os
Hubs: Cloud services
+8
1.5k 17
Comments 22
Popular right now
Системный администратор в офис
from 80,000 to 120,000 ₽MindboxМосква
Программист (PHP, MySQL)
from 100,000 to 180,000 ₽WebDiscoveryRemote job
Backend разбработчик (PHP, Perl, MySQL)
from 90,000 to 180,000 ₽CleanTalkRemote job
Разработчик PHP/JS/MySQL
from 70,000 to 90,000 ₽АвтоВебОфисRemote job
Программист/архитектор баз данных MySQL
from 60,000 to 60,000 ₽iFreedomLabМоскваRemote job