Задавайте вопросы, мы ответим
Вы не зашли.
Имеется выделеный сервер, который по cron запросы каждый день делает перенос запись из MySQL таблицы ~3Мб, удалённо на хостинг.
Ксажелению по середине переноса всё преостанавливается
Начал тестировать, хостинг сказал что не его вина, начал тогда на выделеном же сервере делать дамп и потом от туда переносил ручками на хост, но даже на выделеном сервер срабатывает преостоновка, вроде не успевает перенести всё записи.
P.S. Сколко требуется времени для обработки данных не озможно скзаать, т.к. количество записей изменяется, но размер как сказал ~3мб.
спс.Ув.
Через ISPManager выкладываю инфу может поможите как-то:
ОС: FreeBSD
CPU: Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz X 8
RAM: 8175 Mb
Swap file: 4095 Mb
my.cnf
Неактивен
Как именно делаете перенос? Какими командами? Есть сообщения об ошибках?
Неактивен
Ошибок не знаю как посмотреть, т.к. выполнение через cron, запрос простой SELECT -> INSERT
Как посмотреть ошибку может есть в логах?
Приведёном мною файле ничего подправить не надо или увеличить?
Есть подозрение что когда в процессе MySQL долго сидит задача она умерает... - Такое бывает?
Кстати клавиша scroll lock как нибудь програмируется?
Отредактированно pantela (14.11.2014 18:02:18)
Неактивен
Посмотрите лог ошибок mysql (файл с расширением err)
Но судя по
начал тогда на выделеном же сервере делать дамп и потом от туда переносил ручками на хост, но даже на выделеном сервер срабатывает преостоновка,
проблема не в mysql.
Давайте по пунктам:
1. дамп у вас получается?
2. что значит "переносить ручкками"?
Неактивен
1. Нет из 2300 записей только 1900 (когда как) и то между этими 1900 записями иногда пропукает, напр. есть записи с ID 100,101,102 потом может пропустить 103 и сразу перенести 110
2. Ну ручками приходиться переносить, если делать дамп локально и потом export и потом на хосте import, но уже даже локально не получаеться сделать дамп, т.к. по описанному мною п.1 дамп не делаеться до конца (
P.S. Все записи аналогичные, вних косяков нету, т.к через приложение сайта я могу только 1 или несколько записей отправить на дамп, и когда ту запись отправляю которая не отправилось, тогда она удачно переходит...
Не пойму вчём косяк (
Куда капать лог, Где какие лимиты проверить...
спс.Ув.
Неактивен
Какой командой делаете дамп?
Неактивен
То, что выполняется по крону можно запустить из консоли и посмотреть какая ошибка.
Неактивен
Дамп простой INSERT INTO...
Как выполнить из консола? там отсчёт тоже будет дебага, когда 1 запись добавится что бы писалось удачно и прочее?
Неактивен
Не играйте в разведчика. Приводите команды полностью.
И что вы подразумеваете под дампом? Обычно имеют в виду текстовый файл содержащий копию бд в виде команд create, insert..
http://sqlinfo.ru/forum/viewtopic.php?id=583
Неактивен
Ну елси уточнить дамп у меня получаетя когда записи из моего сервера идут в удалёный пк в БД, тут же если уточнить то у меня ен получается из одной 2 таблиц перенести определёные записи в другую таблицу.
Ну дошёл до mysql консоль, но тут у меня целый PHP приложение выволняет проверку какие записи, из какой таблицы, куда перенести, так через консоль даже не знаю...
Куда копать, мжет стоит лимит где-то
Неактивен
Учитывая
есть записи с ID 100,101,102 потом может пропустить 103 и сразу перенести 110
проблема в логике вашего php приложения.
По лимитам у php скриптов есть ограничение на время исполнения.
Неактивен
Ну после запуска PHP файла где идёт функция которая делает перенос записей, если долго ждать выводиться 504 Gateway Timeout, но даже после этого процесс переносса происходит, наверное потом сам PHP преривает его...
Куда капать, если причина в этом наверное 2 варианта:
1. Переписать PHP скрипт что бы дожидались ответа а не ошибку выводить (будет сложно написать)
2. Увеличить время процесс MySQL даже после ошибки PHP
Как сделать в.2 если ошибка втом что я описал.
Да и не думаю что бы в логике была ошибка, т.к. если записей мало тогда они переходят, наверное функция ждёт ответ, а ответ ждёт долго т.к. записей много и долго переносятся, т.к. выполнения PHP кода...
Неактивен
Не понял при чем здесь MySQL? Ограничение в php, попробуйте, например, увеличить max_execution_time
Неактивен
Ну я описал выше что PHP задаёт команду на выполнения запроса, и ждёт ответ, т.к. ответ долго не идёт т.к. требуется долгое время для выполнения всего запроса, PHP уже получает ошибку 504 Gateway Timeout, но даже после ошибки MySQL выполняет запрос, далее наверное PHP убивает MySQL запрос, и при этом запрос преостанавливается...
Если ошибка в этом тогда надо указать время max_execution_time или указать после получении ошибки после какойго времени что бы убивался бы запрос...
Неактивен
php сам убивается, а не убивает mysql запрос
и ошибку 504 получает не php, а вы.
Неактивен
Какой выход? Apache не может получить ответ т.к. требуется длительное время для итога.
Неактивен
Смотря что вы хотите:
1. Сделать резерную копию бд? тогда проще сделать целиком через mysqldump.
2. Разобраться в текущем варианте? Тогда проверяйте логику скрипты, увеличивайте время его исполнения, запускайте не через http запрос и т.д.
Неактивен
Так я не могу понять я запускаю скрипт он выполняется, ждёт ответ когда все записи будут перенемены, при этом перенос не выполняется быстро и я получаю в ответ ошибку 504 Gateway Timeout далее проверяю БД и даже после получении этой ошибки всё равно запрос продолжает выполяться ~30 мин.
Наверне потом время процесс истекает и оно удаляется...
объясните тогда почему после получения 504 Gateway Timeout почему всё равно MySql продолжает выполнять полученый запрос.
Неактивен
nginx дает вам ответ 504, а скрипт php при этом продолжает выполнятся пока не завершится сам или по таймауту.
Неактивен
Может быть вам в php.ini увеличить max_execution_time ?
Неактивен
спс, проверю, хотя немного не логично вроде, то что PHP передал команду запроса в MySQL, уже в MySQL ведь выполняется операции причём тут PHP.
Может не верно понимаю, проверяю сейчас через .htaccess файл, строкой php_flag max_execution_time 7200
Неактивен
проверьте еще максимальное время исполнения в nginx
срабатывает или нет .htaccess в отношении данной переменной можно проверить, вызвав скрипт
Неактивен
Да не сработало вроде max_execution_time = 40, проверил только что точно 1 час выполнялось, хотя вроде у меня прописанно 2ч. .htaccess файле, php_flag max_execution_time 7200
Не сработало да? Что делать? Через php.ini править?
Неактивен
Через php.ini должно сработать. Не все переменные разрешается менять на уровне .htaccess. И посмотрите нет ли ограничений в nginx
Неактивен
Нуб я в этом, я более вэб програмист средного ур.
Как посмотреть есть ли ограничений в nginx?
Неактивен