Предположим, у меня уже есть главный и подчиненный сервер БД, которые работают и работают.
Я бы хотел добавить в микс инкрементные резервные копии / восстановление во времени. Поскольку я уже получил двоичные журналы для репликации, это должно быть так же просто, как сделать полное резервное копирование и сохранить позицию журнала.
Однако на моем сервере есть таблицы MyISAM и InnoDB, и, похоже, существуют противоречивые предложения о том, как делать полное резервное копирование в каждом случае. Если бы это был строго InnoDB, я мог бы сделать mysqldump с --single-транзакцией, но эта опция предупреждает меня, что MyISAM все еще может быть изменен.
Мои вопросы следующие:
(1) Допустимо ли, чтобы руководство MySQL предлагало резервное копирование:
mysqldump - одиночные транзакции --flush-logs --master-data = 2 --all-database> what.sql
... было бы непригодно, поскольку таблицы MyISAM могут изменяться (таблицы не блокируются с помощью --single-транзакции), поэтому новый файл журнала запускается, но может содержать запросы к таблицам MyISAM, которые фактически уже выполнялись на сервере. до того, как эти таблицы попали в дамп (и при инкрементном восстановлении эти попытки будут повторяться, когда они не нужны)?
(2) Является ли единственный способ получить «правильную» полную резервную копию таблиц MyISAM и InnoDB для использования таблиц --lock-all? (Или в этот момент просто выключите сервер / скопируйте файлы, поскольку все равно все заблокировано)
Я предполагаю, что ответ на эти вопросы - да, но, пожалуйста, поправьте меня, если я ошибаюсь, потому что я основал следующую идею на этом.
Я бы хотел свести к минимуму количество прерываний на главном сервере, поэтому я рассматриваю возможность создания полных дампов ведомого на основе следующих указаний:
http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html#option_mysqldump_master-data
Эти указания на самом деле предназначены для установки раба на раба, но мне интересно, возможно ли следующее?
Один раз в день:
- Останови раба
- Показать статус ведомого и получить главный файл журнала и положение
- Сделать полный дамп ведомого устройства, пока в него не вносятся изменения (MyISAM или InnoDB)
- Запустить раб снова
- Переместить мой полный дамп на главный сервер в каком-либо каталоге резервного копирования
В случае восстановления:
- Восстановить до полного дампа из (5) выше
- Выполнить восстановление во времени, используя позиции отсюда http://dev.mysql.com/doc/refman/5.0/en/point-in-time-recovery-positions.html, чтобы перейти из позиции в (2) выше в любую позицию, которую я хочу восстановить в
Это законно? Я не понимаю, почему полный дамп от ведомого устройства отличается от основного, поэтому кажется, что все будет в порядке.
Спасибо за любую помощь!