2012-02-24 2 views
4

Просто хотел знать, каковы риски запуска mysqldump в живой базе данных? Существуют ли какие-либо шансы на повреждение базы данных? mysqldump блокирует всю базу данных.Запуск mysqldump в живой базе данных

+0

'man mysqldump' – silly

+1

Этот сайт специализируется на программировании вопросов, пока ваш вопрос кажется более подходящим для http://dba.stackexchange.com. Вы можете получить соответствующий ответ быстрее там. –

ответ

2

Какой двигатель используют ваши таблицы базы данных? Если вы используете транзакционные таблицы, вы можете сбросить с помощью опции «single-transaction», которая будет сбрасывать ваши таблицы в согласованном состоянии. Если вы используете такие таблицы, как MyISAM, которые не являются транзакционными, у вас не должно быть проблем с повреждением БД. Однако у вас могут возникнуть непоследовательные проблемы с данными, если вы попадете в сценарий гонки. В любом случае вы будете резко замедлять время отклика БД, пока произойдет свалка. Лучше всего запустить дамп на подчиненном устройстве или подождать, пока сайт окажется в состоянии покоя перед запуском дампа.

+0

Я использую MyISAM для этой базы данных. Я блокирую пользователей в течение 3/4 минут при запуске mysqldump, на данный момент это нормально. На данный момент меня больше интересует целостность данных. – rpat

+0

Вот проблема, с которой вы можете столкнуться. Предположим, у меня есть база данных с таблицей «фрукты» и одна «хозяйственная сумка». Я запускаю свой свалку, я запираю стол фруктов и сбрасываю его. Предположим, что после этого кто-то добавляет новые фрукты на стол с фруктами, а кто-то кладет этот новый фрукт в свою хозяйственную сумку (создает ряд в таблице shopping_bag, который ссылается на новый ряд фруктов). Когда сумка для покупок сбрасывается, у вас теперь есть ряд, который ссылается на плод, которого нет! Это не обязательно вызовет у вас проблемы ... но это может быть, и это непоследовательно. – rpierce

+0

Вот что я переживаю. Я некоторое время запускал mysqldump. Иногда я вижу несоответствия. Я не знаю, откуда они взялись. Mysqldump работает через cron. Поэтому я не могу понять, вызваны ли несогласованности mysqldump. Я не в состоянии запустить раба. Я предположил, что база данных была заблокирована во время дампа. Есть ли способ сделать это, так как пользователи ничего не могут сделать, когда он сбрасывает – rpat

0

Из моего опыта, это блокировка стола при сбрасывании. Если ваша БД находится на большом конце, и у вас есть интенсивный трафик, вы получите существенный обратный трафик. Я не думаю, что повреждение данных было бы проблемой, поскольку он блокирует таблицу перед сбросом данных этой таблицы. Но если я ошибаюсь в блокировке таблиц и это блокировка БД, тогда вы по существу отключили свою БД на время демпингового процесса, но для этого нужна очередь, когда демпинг завершается, он начнет выполнение очереди в порядке как они получили.

+0

Я не уверен в запирающей части. Для сброса базы данных требуется 3/4 минуты. Блокировка пользователей для этой продолжительности подходит для меня. Но любая целостность данных была бы неприемлемой. – rpat

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