SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.01.2014 16:17:39

pantela
Участник
Зарегистрирован: 17.01.2014
Сообщений: 17

Сбивается запрос

Имеется выделеный сервер, который по cron запросы каждый день делает перенос запись из MySQL таблицы ~3Мб, удалённо на хостинг.
Ксажелению по середине переноса всё преостанавливается sad

Начал тестировать, хостинг сказал что не его вина, начал тогда на выделеном же сервере делать дамп и потом от туда переносил ручками на хост, но даже на выделеном сервер срабатывает преостоновка, вроде не успевает перенести всё записи.

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

# Example MySQL config file for small systems.
#
# This is for a system with little memory (<= 64M) where MySQL is only used
# from time to time and it's important that the mysqld daemon
# doesn't use much resources.
#
# MySQL programs look for option files in a set of
# locations which depend on the deployment platform.
# You can copy this option file to one of those
# locations. For information about these locations, see:
# <a href="http://dev.mysql.com/doc/mysql/en/option-files.html">http://dev.mysql.com/doc/mysql/en/option-files.html</a>
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.

# The following options will be passed to all MySQL clients
[client]
#password    = your_password
port        = 3306
socket        = /tmp/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port        = 3306
socket        = /tmp/mysql.sock
skip-locking
key_buffer_size = 64M
max_allowed_packet = 64M
table_open_cache = 128
sort_buffer_size = 512K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 128K
query_cache_size = 1024M
query_cache_limit=16M
query_cache_type=1
tmp_table_size = 256M

max_heap_table_size = 256M
thread_cache_size = 32
join_buffer_size = 2048K
table_cache = 10240
bind-address = 127.0.0.1
thread_concurrency = 8
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (using the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
server-id = 1

# Uncomment the following if you want to log updates
#log-bin=mysql-bin

# binary logging format - mixed recommended
#binlog_format=mixed

# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /var/db/mysql
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/db/mysql
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 2M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M

[mysqlhotcopy]
interactive-timeout
 

Неактивен

 

#2 17.01.2014 18:23:15

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Сбивается запрос

Как именно делаете перенос? Какими командами? Есть сообщения об ошибках?

Неактивен

 

#3 17.01.2014 18:50:28

pantela
Участник
Зарегистрирован: 17.01.2014
Сообщений: 17

Re: Сбивается запрос

Ошибок не знаю как посмотреть, т.к. выполнение через cron, запрос простой SELECT -> INSERT

Как посмотреть ошибку может есть в логах?

Приведёном мною файле ничего подправить не надо или увеличить?


Есть подозрение что когда в процессе MySQL долго сидит задача она умерает... - Такое бывает?
Кстати клавиша scroll lock как нибудь програмируется?

Отредактированно pantela (14.11.2014 18:02:18)

Неактивен

 

#4 17.01.2014 19:46:53

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Сбивается запрос

Посмотрите лог ошибок mysql (файл с расширением err)
Но судя по

начал тогда на выделеном же сервере делать дамп и потом от туда переносил ручками на хост, но даже на выделеном сервер срабатывает преостоновка,

проблема не в mysql.

Давайте по пунктам:
1. дамп у вас получается?
2. что значит "переносить ручкками"?

Неактивен

 

#5 17.01.2014 19:56:40

pantela
Участник
Зарегистрирован: 17.01.2014
Сообщений: 17

Re: Сбивается запрос

1. Нет из 2300 записей только 1900 (когда как) и то между этими 1900 записями иногда пропукает, напр. есть записи с ID 100,101,102 потом может пропустить 103 и сразу перенести 110

2. Ну ручками приходиться переносить, если делать дамп локально и потом export и потом на хосте import, но уже даже локально не получаеться сделать дамп, т.к. по описанному мною п.1 дамп не делаеться до конца sad(

P.S. Все записи аналогичные, вних косяков нету, т.к через приложение сайта я могу только 1 или несколько записей отправить на дамп, и когда ту запись отправляю которая не отправилось, тогда она удачно переходит...

Не пойму вчём косяк sad(
Куда капать лог, Где какие лимиты проверить...

спс.Ув.

Неактивен

 

#6 17.01.2014 20:02:15

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Сбивается запрос

Какой командой делаете дамп?

Неактивен

 

#7 17.01.2014 20:08:29

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Сбивается запрос

То, что выполняется по крону можно запустить из консоли и посмотреть какая ошибка.

Неактивен

 

#8 17.01.2014 20:13:47

pantela
Участник
Зарегистрирован: 17.01.2014
Сообщений: 17

Re: Сбивается запрос

Дамп простой INSERT INTO...
Как выполнить из консола? там отсчёт тоже будет дебага, когда 1 запись добавится что бы писалось удачно и прочее?

Неактивен

 

#9 17.01.2014 20:50:04

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Сбивается запрос

Не играйте в разведчика. Приводите команды полностью.
И что вы подразумеваете под дампом? Обычно имеют в виду текстовый файл содержащий копию бд в виде команд create, insert..
http://sqlinfo.ru/forum/viewtopic.php?id=583

Неактивен

 

#10 17.01.2014 21:08:07

pantela
Участник
Зарегистрирован: 17.01.2014
Сообщений: 17

Re: Сбивается запрос

Ну елси уточнить дамп у меня получаетя когда записи из моего сервера идут в удалёный пк в БД, тут же если уточнить то у меня ен получается из одной 2 таблиц перенести определёные записи в другую таблицу.

Ну дошёл до mysql консоль, но тут у меня целый PHP приложение выволняет проверку какие записи, из какой таблицы, куда перенести, так через консоль даже не знаю...

Куда копать, мжет стоит лимит где-то

Неактивен

 

#11 17.01.2014 21:13:51

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Сбивается запрос

Учитывая

есть записи с ID 100,101,102 потом может пропустить 103 и сразу перенести 110

проблема в логике вашего php приложения.

По лимитам у php скриптов есть ограничение на время исполнения.

Неактивен

 

#12 17.01.2014 21:19:26

pantela
Участник
Зарегистрирован: 17.01.2014
Сообщений: 17

Re: Сбивается запрос

Ну после запуска PHP файла где идёт функция которая делает перенос записей, если долго ждать выводиться 504 Gateway Timeout, но даже после этого процесс переносса происходит, наверное потом сам PHP преривает его...
Куда капать, если причина в этом наверное 2 варианта:
1. Переписать PHP скрипт что бы дожидались ответа а не ошибку выводить (будет сложно написать)
2. Увеличить время процесс MySQL даже после ошибки PHP

Как сделать в.2 если ошибка втом что я описал.

Да и не думаю что бы в логике была ошибка, т.к. если записей мало тогда они переходят, наверное функция ждёт ответ, а ответ ждёт долго т.к. записей много и долго переносятся, т.к. выполнения PHP кода...

Неактивен

 

#13 17.01.2014 21:26:09

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Сбивается запрос

Не понял при чем здесь MySQL? Ограничение в php, попробуйте, например, увеличить max_execution_time

Неактивен

 

#14 17.01.2014 21:30:18

pantela
Участник
Зарегистрирован: 17.01.2014
Сообщений: 17

Re: Сбивается запрос

Ну я описал выше что PHP задаёт команду на выполнения запроса, и ждёт ответ, т.к. ответ долго не идёт т.к. требуется долгое время для выполнения всего запроса, PHP уже получает ошибку 504 Gateway Timeout, но даже после ошибки MySQL выполняет запрос, далее наверное PHP убивает MySQL запрос, и при этом запрос преостанавливается...
Если ошибка в этом тогда надо указать время max_execution_time или указать после получении ошибки после какойго времени что бы убивался бы запрос...

Неактивен

 

#15 17.01.2014 21:36:44

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Сбивается запрос

php сам убивается, а не убивает mysql запрос smile
и ошибку 504 получает не php, а вы.
http://so-hosting.info/images/504gateway.png

Неактивен

 

#16 17.01.2014 22:01:10

pantela
Участник
Зарегистрирован: 17.01.2014
Сообщений: 17

Re: Сбивается запрос

Какой выход? Apache не может получить ответ т.к. требуется длительное время для итога.

Неактивен

 

#17 17.01.2014 22:09:52

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Сбивается запрос

Смотря что вы хотите:
1. Сделать резерную копию бд? тогда проще сделать целиком через mysqldump.
2. Разобраться в текущем варианте? Тогда проверяйте логику скрипты, увеличивайте время его исполнения, запускайте не через http запрос и т.д.

Неактивен

 

#18 18.01.2014 00:00:54

pantela
Участник
Зарегистрирован: 17.01.2014
Сообщений: 17

Re: Сбивается запрос

Так я не могу понять я запускаю скрипт он выполняется, ждёт ответ когда все записи будут перенемены, при этом перенос не выполняется быстро и я получаю в ответ ошибку 504 Gateway Timeout далее проверяю БД и даже после получении этой ошибки всё равно запрос продолжает выполяться ~30 мин.
Наверне потом время процесс истекает и оно удаляется...

объясните тогда почему после получения 504 Gateway Timeout почему всё равно MySql продолжает выполнять полученый запрос.

Неактивен

 

#19 18.01.2014 00:06:41

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Сбивается запрос

nginx дает вам ответ 504, а скрипт php при этом продолжает выполнятся пока не завершится сам или по таймауту.

Неактивен

 

#20 18.01.2014 00:11:06

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Сбивается запрос

Может быть вам в php.ini увеличить max_execution_time ?

Неактивен

 

#21 20.01.2014 14:46:03

pantela
Участник
Зарегистрирован: 17.01.2014
Сообщений: 17

Re: Сбивается запрос

спс, проверю, хотя немного не логично вроде, то что PHP передал команду запроса в MySQL, уже в MySQL ведь выполняется операции причём тут PHP.

Может не верно понимаю, проверяю сейчас через .htaccess файл, строкой php_flag max_execution_time 7200

Неактивен

 

#22 20.01.2014 14:54:39

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Сбивается запрос

проверьте еще максимальное время исполнения в nginx
срабатывает или нет .htaccess в отношении данной переменной можно проверить, вызвав скрипт

<?php
phpinfo();
?>

Неактивен

 

#23 20.01.2014 15:45:18

pantela
Участник
Зарегистрирован: 17.01.2014
Сообщений: 17

Re: Сбивается запрос

Да не сработало вроде max_execution_time = 40,  проверил только что точно 1 час выполнялось, хотя вроде у меня прописанно 2ч. .htaccess файле, php_flag max_execution_time 7200

Не сработало да? Что делать? Через php.ini править?

Неактивен

 

#24 20.01.2014 15:48:22

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Сбивается запрос

Через php.ini должно сработать. Не все переменные разрешается менять на уровне .htaccess. И посмотрите нет ли ограничений в nginx

Неактивен

 

#25 20.01.2014 16:01:39

pantela
Участник
Зарегистрирован: 17.01.2014
Сообщений: 17

Re: Сбивается запрос

Нуб я в этом, я более вэб програмист средного ур.

Как посмотреть есть ли ограничений в nginx?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson