Mokhirzon Naimov: о, а ведь в той хабрастатье, которую Вы указали, есть упоминание о mysqlbinlog. Похоже, это то, что Вам нужно. Надо только соорудить скрипт, который будет в нужное время его натравливать на нужные файлы и из полученного SQL выделять только INSERT или UPDATE запросы.
Mokhirzon Naimov:
1. Слэйву не нужен путь к бинарному логу мастера. Достаточно адреса и логинопароля. Плюс номер записи в бинарном логе.
2. По той ссылке написано, что ключ --log-bin — это только один из вариантов заставить MySQL вести бинарный лог. Можно просто my.cnf поправить.
3. Чтобы запустить репликацию базы, в которой уже есть данные, нужно сначала синхронизировать данные. При этом в слэйв базе будут отображаться все изменения, происходящие в мастер базе, включая удаление и изменение данных.
Да, судя по всему, это не то, что Вам нужно. И, боюсь, другого готового решения не могу подсказать. Если есть желание/возможность писать велосипед, то можно попытаться разбирать бинарный лог MySQL и вытаскивать оттуда только те записи, которые соответствуют добавлению и обновлению записей. Или прослушивать траффик между мастером и слэйвом и так же выдёргивать оттуда данные о новых записях.
Артем: так у Вас уже есть API или весь проект только на стадии проектирования? Если только начали проектировать, то я бы посоветовал сделать как белый человек: следовать принципу MVC. Когда будет готово приложение на простых HTML формах, тогда уже к ним можно будет дописать а) JSON представление, которое будет отдаваться по тем же запросам, что и HTML, но с HTTP заголовком Accept: text/json б) Javascript, который будет блокировать стандартное поведение формы и самостоятельно делать запросы (с упомянутым заголовком Accept: text/json) и обрабатывать поступивший в ответ JSON.