2014-02-10 3 views
1

У меня есть задание на Windows, выполняемое каждую ночь в 3 часа ночи, которая создает резервные копии всех баз данных через пакетный файл, и поддерживает все просто отлично.MySQL дублирует запросы на ввод во время резервного копирования

Однако, если кто-то вставляет запись в базу данных во время работы резервного копирования, она сталкивается с проблемой, когда она дублирует запрос вставки примерно 10-30 раз.

Пользователь Вставляет данные в базу данных MySQL с помощью веб-страницы PHP после того, как вставка завершена. PHP перенаправляет страницу на новую версию текущей страницы, поэтому обновление или удаление страницы не приведет к чему-либо.

Повторяющиеся записи происходят только во время работы резервного копирования.

+0

вы используете туздЫшпр сделать резервную копию, или код (PHP)? –

+0

Если вы не возражаете, что ваша резервная копия не является инкрементальной, почему бы вам просто не скопировать фактические файлы базы данных в резервное хранилище, а не делать все это внутри php или mysql. Это, как правило, довольно быстро, поскольку ему не нужно читать/разбирать и выполнять что-либо. Он просто копирует. Кроме того, вы можете также блокировать свои таблицы при резервном копировании. Поместите сигнал где-нибудь, установите его true при резервном копировании и в это время сообщите пользователям, что серверы находятся в автономном режиме в течение нескольких секунд. – Tularis

+0

Благодарим вас за ответ, – user3294306

ответ

-1

Если вы используете mysqldump, убедитесь, что используете функцию моментального снимка транзакции, включив --single-transaction.

Существует множество опций, которые определяют, как снимается дамп и какие варианты включать.

Мои умолчанию:

mysqldump --create-options --extended-insert --add-drop-table --single-transaction --hex-blob 
+0

Это действительно сложно чтобы читать такие вещи в комментарии, лучше изменить свой вопрос с дополнительными данными. – tadman

+0

Попробуйте опцию '--single-transaction'. Вы используете InnoDB для всех таблиц, не так ли? 'SHOW TABLE STATUS' скажет вам. – tadman

+0

да все это innoDB. Я собираюсь попробовать -single-transaction, я сообщу вам, если он будет успешным. – user3294306

Смежные вопросы