MySQL tools/tricks/scripts для перемотки изменений БД
Я пытаюсь ускорить задачу по разработке, над которой я работаю. Я пишу некоторый код, который обращается и анализирует базу данных MySQL большого размера (около 5 ГБ). Я хочу проверить свой код по мере продвижения. После внесения изменения в код мне нужно его опробовать (что сделает некоторые вставки / обновления / удаления в БД). Для правильной работы потребуется несколько итераций настройки кода. Но после каждой итерации мне нужно восстановить БД до состояния, в котором она была до запуска кода. Полное удаление / восстановление БД после каждого теста занимает очень много времени, что я и делаю сейчас. Итак, я ищу способ упростить процесс перемотки - возможно, путем регистрации изменений БД с достаточным количеством информации, чтобы операторы, которые манипулировали данными (выполнялись в течение примерно 30 секунд), можно было отменить в обратном хронологическом порядке.
Кто-нибудь знает какие-либо инструменты, которые позволят более быстрое, постепенное восстановление? В принципе, есть ли способ воспроизвести журнал запросов в обратном порядке? Или, по крайней мере, сделать различие данных со снимком, чтобы отменить последние изменения?
К вашему сведению, я использую MySQL 5.5.x с InnoDB. Я пишу в Ruby on Rails, но есть и другой не-Ruby-код, поэтому в идеале я бы искал что-то большее, не зависящее от языка, утилиту командной строки, которую я мог бы запустить до и после выполнения теста.
1 ответ
Если вы используете файловую систему, такую как btrfs или ZFS, вы можете использовать снимки файловой системы для захвата состояния. Если у вас есть специальный раздел для содержимого базы данных, то будет легко остановить mysqld, вернуться к моментальному снимку и снова запустить сервер.